黑马程序员技术交流社区

标题: 关于java面向对象实例的解释 [打印本页]

作者: 曾辉    时间: 2012-2-11 15:38
标题: 关于java面向对象实例的解释
class a
{
}
a A=new a();
a A;
new a;
a A=new a;
这四者有什么区别?
作者: 尹旗龙    时间: 2012-2-11 15:47
a A=new a(); 声明并创建一个a的实例对象A,分配内存,将此部分内存的引用赋予A
a A;声明一个a的实例对象A,不分配内存 不创建对象
new a(); 是创建一个a的实例对象 分配内存
new a;
a A=new a; 这两个都是错的 必须有()没有()将造成编译错误,系统无法识别
a A; 等同于a A = null;
作者: 张平    时间: 2012-2-11 16:10
以上基础之上我来补充两点:1.类名一般以大写字母开头(以小写字母开头虽不会报错,但不是常规写法),要养成好习惯哟!
                                       2.a A; 等同于a A = null;后面没有new时相当于声明一个a的实例对象A(也可以理解为之创建了一个引用),但不分配内存。只有当后面有new时才                       代表真正的分配了内存,创建好一个对象。
                                       我也才刚开始学,一起加油咯!呵呵
作者: 何洪森    时间: 2012-2-11 16:15
a A=new a();创建一个a的对象给引用A
a A; 声明一个a的引用。
new a();创建一个a的实例对象。
a A=new a;语法错误。如想用a去new一个对象,必须a A =new a();
作者: 戴振良    时间: 2012-2-11 19:47
本帖最后由 戴振良 于 2012-2-11 20:02 编辑

从简单开始:
a A;   // 声明了一个   类型为a    的   引用变量A,这个引用变量没有指向任何实例,系统没有为其分配内存
new a( ); //新建了一个   类型为a  的  实例,系统为其分配了内存,这样新建的实例一般只用来使用一次,因为没有引用变量指向它,下一次要使用这个实例我也不知道怎么再能找到它了
有了以上两个,下面这个就容易了,结合一下:
a A=new a( );//  左边声明了一个类型为a的引用变量A,右边新建了一个类型为a的实例,并把这个实例的首地址赋值给引用变量A




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2