关于Java中的new

zpk1234 2009-07-01 09:28:56
在C++中,new出来的东西有可能是null(内存分配失败),请问Java中的new会出现这种情况吗?还有new这个函数的代码哪里可以找到?
...全文
307 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
晨星 2009-07-03
  • 打赏
  • 举报
回复
JAVA中内存分配失败时会抛出OutOfMemoryError。错误都抛出来了,还是赶紧catch吧,已经来不及理会返回的是不是null了。
霜之哀伤 2009-07-03
  • 打赏
  • 举报
回复
new不是函数把。
lovecj6185 2009-07-03
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 yuhongpingimu 的回复:]
一楼,同意
还有new这个函数的代码哪里可以找到?不知道啊
[/Quote]

java中new的作用,就是调用类的构造器,也可以称为构造函数
比如
Cat c = new Cat();
这里的new就是调用了cat类的构造函数

如果cat类没有显式声明构造函数,则在编译时会得到一个默认的构造函数
如果cat类显式声明构造函数,则调用那个构造函数
lovecj6185 2009-07-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 WYhack 的回复:]
引用类型new出来之后默认是null的!!!原始类型都有默认值,具体不太一样!!!
[/Quote]

不是很明白这位朋友的意思
假如
一个类成员 Object obj;
只是这样声明的话,obj是null,没错

但是,如果
Object obj = new Object();
现在这个obj肯定不是null阿

所以不明白何谓
“引用类型new出来之后默认是null的”
WYhack 2009-07-01
  • 打赏
  • 举报
回复
至于new这个方法,会给每个新建的线程分配一个堆栈空间,new关键字的作用就是在堆内存中分配一块空间,栈中的引用指向他,同时调用对象的构造方法。
可以参考http://http://topic.csdn.net/u/20080304/21/bbbdf061-46a8-4325-ae30-e8da1098ad8a.html
yuhongpingimu 2009-07-01
  • 打赏
  • 举报
回复
一楼,同意
还有new这个函数的代码哪里可以找到?不知道啊
  • 打赏
  • 举报
回复
同意楼上
WYhack 2009-07-01
  • 打赏
  • 举报
回复
引用类型new出来之后默认是null的!!!原始类型都有默认值,具体不太一样!!!

58,454

社区成员

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

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