Java中的null到底是什么(◎_◎;)

一、null是个啥?

JLS 4.1 The Kinds of Types and Values

There is also a special null type, the type of the expression null, which has no name. Because the null type has no name, it is impossible to declare a variable of the null type or to cast to the null type. The null reference is the only possible value of an expression of null type. The nullreference can always be cast to any reference type. In practice, the programmer can ignore the null type and just pretend that null is merely a special literal that can be of any reference type.

//false
System.out.println(null instanceof Object);

一种特殊的类型(姑且称之为null类型吧~),没有名称无法声明null类型的变量或转换为null类型,空引用是null类型表达式的唯一可能值, nullreference总是可以强制转换为任何引用类型

二、null在内存中是怎么样的存在?

What exactly is null in memory? Or What is the null value in Java?

First of all, null is not a valid object instance, so there is no memory allocated for it. It is simply a value that indicates that the object reference is not currently referring to an object.

From JVM Specifications:

The Java Virtual Machine specification does not mandate a concrete value encoding null.

Java虚拟机规范没有强制要求编码null的具体值

三、null的使用

  • Uninitialized state
  • Termination condition
  • Non-existing object
  • An unknown value

1、null是任何引用类型的默认值

public class Test {private static String str;public static void main(String args[]) {System.out.println(str);  //null}
}

2、null可以赋给引用类型,不能赋给基本类型,可以将null转化为任何引用类型

Integer num1 = null;
int num3 = null;  //编译器报错Integer num2 = (Integer)null;
String str = (String)null;
Test test = (Test)null; 

3、null值的引用类型变量可以调用静态方法、静态变量,不能调用实例方法、实例变量

public class Test {public static String name="Qpee";public int age=18;public static void main(String args[]) {Test test1 = null;Test test2 = (Test)null;System.out.println(test1.name); //QpeeSystem.out.println(test1.age);  //Exception in thread "main" java.lang.NullPointerExceptionSystem.out.println(test2.name); //QpeeSystem.out.println(test2.age);  //Exception in thread "main" java.lang.NullPointerExceptiontest1.print1();   //Exception in thread "main" java.lang.NullPointerExceptiontest1.print2();   //static methodtest2.print1();   //Exception in thread "main" java.lang.NullPointerExceptiontest2.print2();   //static method}public void print1(){System.out.println("instance method");}public static void print2(){System.out.println("static method");}
}

四、Other

1、我丢一个null~~

public class Test {public static void main(String args[]) {try{throw null;}catch (Exception ex){System.out.println(ex instanceof Object);  //trueSystem.out.println(ex.getClass().getName());  //java.lang.NullPointerException}}
}

If evaluation of the Expression completes normally, producing a null value, then an instance V' of class NullPointerException is created and thrown instead of null.

如果表达式产生一个空值,则创建类NullPointerException的实例并抛出

五、Reference

What is null in java ?

你真的理解java中的null“类型”吗?

What exactly is null in Java ?

Why can I throw null in Java ?

深入Java关键字null

Java中有关Null的9件事

null是一条神奇的天路相关推荐

  1. *这是一条神奇的天路*

    梦想比作爱情,当我们怀揣梦想前赴后继的涌向北上,其实与渴望爱情的傻子,希望自己的一片真心,使尽浑身解数的去追求自己的女神一样. Python 基础 Python 模块 Django 相关 起步 Dja ...

  2. 技术分享 | 一条神奇的曲线——贝塞尔曲线在前端的应用

    源宝导读:在前端的开发中我们经常会遇到利用贝塞尔曲线帮助我们完成前端的动画和图形绘制,但是对其中的一些参数配置是一头雾水.本文将从贝塞尔曲线的原理讲起,由浅入深剖析一阶到多阶贝塞尔的实现原理,最后从三 ...

  3. Magic进博会!中国媒体上马了一条神奇的视频生产线

    8个展区展览面积总计约30万平方米,来自130多个国家和地区的企业参展--进博会,好大的"新闻富矿"!可是,好些媒体记者却表示脑阔有点疼--两只眼睛一双手,又要写文字.又要拍视频, ...

  4. 洛谷 P1768 天路

    P1768 天路 题目描述 "那是一条神奇的天路诶~,把第一个神犇送上天堂~",XDM先生唱着这首"亲切"的歌曲,一道猥琐题目的灵感在脑中出现了. 和C_SUN ...

  5. 天路 洛谷p1768

    题目描述 "那是一条神奇的天路诶~,把第一个神犇送上天堂~",XDM先生唱着这首"亲切"的歌曲,一道猥琐题目的灵感在脑中出现了. 和C_SUNSHINE大神商量 ...

  6. luogu P1768 天路

    题目描述 "那是一条神奇的天路诶~,把第一个神犇送上天堂~",XDM先生唱着这首"亲切"的歌曲,一道猥琐题目的灵感在脑中出现了. 和C_SUNSHINE大神商量 ...

  7. 洛谷P1768 天路

    题目描述 "那是一条神奇的天路诶~,把第一个神犇送上天堂~",XDM先生唱着这首"亲切"的歌曲,一道猥琐题目的灵感在脑中出现了. 和C_SUNSHINE大神商量 ...

  8. [luogu1768]天路

    ##链接## 题目描述 "那是一条神奇的天路诶,把第一个神犇送上天堂",XDM先生唱着这首"亲切"的歌曲,一道猥琐题目的灵感在脑中出现了. 和C_SUNSHIN ...

  9. 浴谷 P1768 天路

    P1768 天路 题目描述 "那是一条神奇的天路诶~,把第一个神犇送上天堂~",XDM先生唱着这首"亲切"的歌曲,一道猥琐题目的灵感在脑中出现了. 和C_SUN ...

最新文章

  1. linux下mysql修改字符集,远程连接
  2. IO设计模式:Reactor和Proactor对比
  3. JPA_‘Basic‘ attribute type should not be a container怎么解决
  4. Java字节码方法表与属性表深度剖析
  5. 315. Count of Smaller Numbers After Self
  6. java静态变量实例变量_java中静态变量和实例变量的区别
  7. 解决文件夹无限嵌套无法删除的问题---最新办法
  8. 使用ImageMagick和Tesseract进行简单数字图像识别
  9. MyEclipse内存不足配置
  10. 第二季-专题13-NandFlash变硬盘
  11. 模式识别—判别函数分类法(几何分类法)
  12. 营业执照在线生成_潍坊综合保税区发出全省首张覆盖四大市场主体类型的“微信秒批”营业执照...
  13. autorunner
  14. 大学生创新创业大赛案例_七大学生创新创业大赛样本示例
  15. android 4.4 沉浸模式,大杀器:安卓4.4沉浸模式强制开启!
  16. word 2007中在页眉中插入或这删除下划线
  17. php立方体相册源码,纯CSS实现3D的代码(正方体、动态立体图片册、平面的星空)...
  18. 手机游戏服务器使用UDP还是TCP
  19. java csv 引号_csv文本编辑引号问题
  20. python 读写csv文件(创建、追加、覆盖)_python 读写csv文件(创建,追加,覆盖)...

热门文章

  1. python逻辑回归:出现ConvergenceWarning: lbfgs failed to converge (status=1)
  2. 汇总一下Intellij IDEA常用的牛逼插件
  3. Altium Designer过孔盖油设置
  4. 解除iphone屏幕锁屏密码的方法
  5. word文档保存后闪退
  6. zip文件解压或压缩
  7. 根据知乎分析机皇HD2为何能刷如此多的系统
  8. 老爷机搭建linux 软路由 服务器
  9. ORA-00392 ORA-00312 日志正在清除故障
  10. python作业——随机生成不重复的20以内加法算式