首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

深入【Java】底层细节知识点(7)null和“”的区别

深入【Java】底层细节知识点(7)null和“”的区别

null

本质区别:
  • null是没有地址的
  • “”是有地址的,里边的内容是空的
具体区别:
  • 1、做成员变量(字段/属性/类变量)时,如果只写String str;那么是默认赋值为null的。null的话,你屏幕输出(toString方法)的结果为字符串null,而且其它调用str的操作,编译可通过,运行时会空指针异常,此时是异常。
  • 2、做局部变量(方法里的变量)时,如果只写String str;是不会默认赋值null的,这里仅声明了一个str变量,在栈内存中有定义,但没有任何值,null其实也是一种值。此时任何调用str的操作,编译时就均会报错,是error,不是异常。
  • 3、“”是空字符串,但也是字符串,没有什么东西。 而null是空的意思,什么都没有,没有地址

    如果你直接输出str1,本质上其实是调用了toString方法。所以就会报错
    西(=)


String str = null;和String str1; 这两者也是不同的,前者是分配了内存,也就是说,你对他可以进行相关操作,而不会报错,后者是不可以的。
返回列表