java中,new对象的位置的问题

wangjicongqian 2012-07-02 09:31:04
public class A{
private B b = new B();
public A(){

}

}


public class A{
private B b = null;
public A(){
b = new B();

}

}

他们中的区别在哪呢
...全文
211 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
齐哥哥哥哥 2012-07-17
  • 打赏
  • 举报
回复
B对象被实例化的时机不一样,建议看看类加载的顺序
chenshuang_com 2012-07-17
  • 打赏
  • 举报
回复
private B b = new B();现执行
public A(){
b = new B();在成员对象初始化完毕之后执行

}

  • 打赏
  • 举报
回复
[Quote=引用 1 楼 daojiao_one 的回复:]

它俩的区别在于产生对象的作用范围不一样,第一种可以作用整个类中,而第二个只能作用于A()的方法里
[/Quote]
别误导人。
简单的说就是初始化顺序不一样,变量比构造器先初始化。
但是就你这个例子,效果是一样的。
mishidezhu 2012-07-03
  • 打赏
  • 举报
回复
就是产生的时间不同,第一个方式在加载这个类时就会对类B进行赋值,第二种方式则是在NEW这个类A时,B才会被赋值
lw_China 2012-07-03
  • 打赏
  • 举报
回复
时机不同而已,别的没什么不同。
找工作中 2012-07-03
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
产生的时机不同,第一个是在类加载的时候就产生的,第二个是在构造类A的时候产生的
[/Quote]
+
skyWalker_ONLY 2012-07-03
  • 打赏
  • 举报
回复
产生的时机不同,第一个是在类加载的时候就产生的,第二个是在构造类A的时候产生的
VanBaston 2012-07-03
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]
引用 1 楼 daojiao_one 的回复:

它俩的区别在于产生对象的作用范围不一样,第一种可以作用整个类中,而第二个只能作用于A()的方法里

别误导人。
简单的说就是初始化顺序不一样,变量比构造器先初始化。
但是就你这个例子,效果是一样的。
[/Quote]
+
fei741878347 2012-07-02
  • 打赏
  • 举报
回复
我不太理解,你这个代码正确吗?
wangjicongqian 2012-07-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:

它俩的区别在于产生对象的作用范围不一样,第一种可以作用整个类中,而第二个只能作用于A()的方法里
[/Quote]
您这个太不对了吧.虽然是在A()构造方法里new的,但是 b引用是在外面呢
daojiao_one 2012-07-02
  • 打赏
  • 举报
回复
它俩的区别在于产生对象的作用范围不一样,第一种可以作用整个类中,而第二个只能作用于A()的方法里

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧