关于Java中null的十点详解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
关于Java中null的⼗点详解
对于每⼀个Java程序员来说,null肯定是⼀个让⼈头痛的东西,连Java的发明者都承认这是⼀项巨⼤的设计失误,今天就来总结⼀下Java中关于null的知识.
1.null不属于任何类型,可以被转换成任何类型,但是⽤instanceof永远返回false.
2.null永远不能和⼋⼤基本数据类型进⾏赋值运算等,否则不是编译出错,就是运⾏出错.
3.null可以和字符串进⾏运算.
4.同种类型的null,⽐较都返回true,null==null也返回true.
持续更新中......
下⾯将⽤⼗个例⼦来验证上⾯的四点
⾸先来看看下⾯的⼀道⾯试题:
public class Null{
public static void nihao(){
System.out.println("你好陌⽣⼈");
}
public static void main(String[] args){
((Null)null).nihao();
}
}
A、你好陌⽣⼈
B、编译不通过
C、编译通过,执⾏报错
D、内存溢出
答案是A
下⾯的总结将使你很清晰的了解到上⾯程序为什么成为这样的结果:
1.null是Java中的关键字,它不属于任何类型,只是⼀种特殊的值,也可以说说代表⼀个不确定的对象.
2.null是所有引⽤类型的默认值.
3.null可以被转化为任何类型,输出null不会抛出任何异常,这和println()的源代码有关.
4.null可以被转化为任何类型,所以可以调⽤静态⽅法.
5.null可以被转化为任何类型,但是不能调⽤⾮静态⽅法,运⾏时会出错.
6.null被强转化任何类型后,它还仅仅是⼀个特殊值,并不属于任何类型.
7.null==null返回true,被转换为同种类型的null,都返回true,不同类型直接编译报错.
8.⽤String转换后的null可以进⾏字符串运算,这是因为字符串进⾏连接的时候,编译器对null进⾏了特别的优化,其实就是例化StringBuilder,在调⽤append()⽅法时对null的⼀个特别处理,当为null时,转化为“null”,最后调⽤toString()返回⼀个String对象.
9.⽤⼋⼤基本类型转换后的null,不可以进⾏基本类型的运算,否则会出现编译或者运⾏错误.
10.null和“”并不相等,因为下⾯的s并没有指向某⼀块内存,⽽s1指向了⼀块空字符串的内存.。