A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 曾辉 黑马帝   /  2012-2-11 15:38  /  1528 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class a
{
}
a A=new a();
a A;
new a;
a A=new a;
这四者有什么区别?

4 个回复

倒序浏览
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;

评分

参与人数 1技术分 +1 收起 理由
唐秀启 + 1

查看全部评分

回复 使用道具 举报
以上基础之上我来补充两点:1.类名一般以大写字母开头(以小写字母开头虽不会报错,但不是常规写法),要养成好习惯哟!
                                       2.a A; 等同于a A = null;后面没有new时相当于声明一个a的实例对象A(也可以理解为之创建了一个引用),但不分配内存。只有当后面有new时才                       代表真正的分配了内存,创建好一个对象。
                                       我也才刚开始学,一起加油咯!呵呵

评分

参与人数 1技术分 +1 收起 理由
唐秀启 + 1

查看全部评分

回复 使用道具 举报
a A=new a();创建一个a的对象给引用A
a A; 声明一个a的引用。
new a();创建一个a的实例对象。
a A=new a;语法错误。如想用a去new一个对象,必须a A =new a();

评分

参与人数 1技术分 +1 收起 理由
唐秀启 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 戴振良 于 2012-2-11 20:02 编辑

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