定义对象时给null和不写有什么区别?

开拓者Amadues 2020-11-05 01:34:15
Object object和Object object = null
有什么区别?我的理解是一样的。
...全文
3389 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
冰思雨 2020-11-06
  • 打赏
  • 举报
回复
引用 楼主 鸣鸣Amadues 的回复:
Object object和Object object = null 有什么区别?我的理解是一样的。
如果没有上下文环境的话,这两个语句的效果是一样的。我们不能断章取义。 为啥一样? 因为,你只声明一个对象的引用,不做初始化赋值的话,默认的,编译器会帮你初始化赋值为null。 比如,boolean会初始化赋值为false,int会初始化赋值为0,这些都是编译器默认的行为。 如果是其他厂商的编译器,或者你自己开发的编译器,就不知道会不会这么干了。
qybao 2020-11-06
  • 打赏
  • 举报
回复
有区别,没有赋初始值的变量不能使用,null也是一种初始值。 Object o1; Object o2=o1; //应该是不允许的 但是改成 Object o1=null; 上面就可以了
qybao 2020-11-06
  • 打赏
  • 举报
回复
null也算是一种初始化,指针指向0地址,静态变量自动初始化为null也是这个意思(要不然你觉得系统自动给静态变量赋初始值null是啥?) 如果没有初始化,在c/c++里是野指针,也就是指针指向的地址是不确定的
开拓者Amadues 2020-11-06
  • 打赏
  • 举报
回复
引用 3 楼 qybao 的回复:
有区别,没有赋初始值的变量不能使用,null也是一种初始值。 Object o1; Object o2=o1; //应该是不允许的 但是改成 Object o1=null; 上面就可以了
我理解null不算赋值“初始”,初始是实例化,给null只是声明这个对象还没有被初始化,处于还“没有”的状态。
开拓者Amadues 2020-11-06
  • 打赏
  • 举报
回复
如果没有编译错误,应该是编译器会初始化的
开拓者Amadues 2020-11-05
  • 打赏
  • 举报
回复
引用 1 楼 赵琛 的回复:
你的意思 比如 string a=null a='''' 这样吗。 这样的话是会有分配空间,null是不占空间的
说的是对象,String空字符串和null肯定有区别
赵琛 2020-11-05
  • 打赏
  • 举报
回复
你的意思 比如 string a=null a='''' 这样吗。 这样的话是会有分配空间,null是不占空间的

67,538

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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