深入Java关键字null

转载 2016年06月01日 18:41:01
转载:http://lavasoft.blog.51cto.com/62575/79243/
深入Java关键字null
 
 
一、null是代表不确定的对象
 
Java中,null是一个关键字,用来标识一个不确定的对象。因此可以将null赋给引用类型变量,但不可以将null赋给基本类型变量。
 
比如:int a = null;是错误的。Ojbect o = null是正确的。
 
Java中,变量的适用都遵循一个原则,先定义,并且初始化后,才可以使用。我们不能int a后,不给a指定值,就去打印a的值。这条对对于引用类型变量也是适用的。
 
有时候,我们定义一个引用类型变量,在刚开始的时候,无法给出一个确定的值,但是不指定值,程序可能会在try语句块中初始化值。这时候,我们下面使用变量的时候就会报错。这时候,可以先给变量指定一个null值,问题就解决了。例如:
 
        Connection conn = null;
        try {
            conn = DriverManager.getConnection("url", "user", "password");
        } catch (SQLException e) {
            e.printStackTrace();
        }
 
        String catalog = conn.getCatalog();
 
如果刚开始的时候不指定conn = null,则最后一句就会报错。
 
二、null本身不是对象,也不是Objcet的实例
 
null本身虽然能代表一个不确定的对象,但就null本身来说,它不是对象,也不知道什么类型,也不是java.lang.Object的实例。
可以做一个简单的例子:
 
        //null是对象吗? 属于Object类型吗?
        if (null instanceof java.lang.Object) {
            System.out.println("null属于java.lang.Object类型");
        } else {
            System.out.println("null不属于java.lang.Object类型");
        }
 
结果会输出:null不属于java.lang.Object类型
 
三、Java默认给变量赋值
 
在定义变量的时候,如果定义后没有给变量赋值,则Java在运行时会自动给变量赋值。赋值原则是整数类型int、byte、short、long的自动赋值为0,带小数点的float、double自动赋值为0.0,boolean的自动赋值为false,其他各供引用类型变量自动赋值为null。
这个具体可以通过调试来看。
 
四、容器类型与null
 
List:允许重复元素,可以加入任意多个null。
Set:不允许重复元素,最多可以加入一个null。
Map:Map的key最多可以加入一个null,value字段没有限制。
数组:基本类型数组,定义后,如果不给定初始值,则java运行时会自动给定值。引用类型数组,不给定初始值,则所有的元素值为null。
 
五、null的其他作用
 
1、判断一个引用类型数据是否null。 用==来判断。
2、释放内存,让一个非null的引用类型变量指向null。这样这个对象就不再被任何对象应用了。等待JVM垃圾回收机制去回收

深入Java关键字null

一、null是代表不确定的对象 Java中,null是一个关键字,用来标识一个不确定的对象。因此可以将null赋给引用类型变量,但不可以将null赋给基本类型变量。 比如:int a = ...
  • u012874998
  • u012874998
  • 2013年11月20日 21:49
  • 811

深入Java关键字null

深入Java关键字null  一、null是代表不确定的对象 Java中,null是一个关键字,用来标识一个不确定的对象。因此可以将null赋给引用类型变量,但不可以将null赋给基本类型变量。 比如...
  • BatiTan
  • BatiTan
  • 2008年10月23日 10:03
  • 620

深入理解Java关键字null

深入Java关键字null     一、null是代表不确定的对象   Java中,null是一个关键字,用来标识一个不确定的对象。因此可以将null赋给引用类型变量,但...
  • zhangliangzi
  • zhangliangzi
  • 2016年02月16日 11:33
  • 895

深入了解Java关键字null

一、null是代表不确定的对象 Java中,null是一个关键字,用来标识一个不确定的对象。因此可以将null赋给引用类型变量,但不可以将null赋给基本类型变量。 比如:int a = ...
  • shengfeixiang
  • shengfeixiang
  • 2013年04月29日 12:42
  • 505

Java学习笔记之深入理解关键字static

基本概念static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量这个概念。 在Java中,用static修饰的方法称为...
  • GongchuangSu
  • GongchuangSu
  • 2016年06月26日 22:45
  • 649

java多线程(六)深入理解volitale关键字

我们继续来讨论java的多线程编程,今天我们一起来学习一下java多线程中的另一个关键字——volitale。 一、java内存模型与多线程编程中的三个感念 1、原子性 原子性是指一些操作或者全...
  • xingjiarong
  • xingjiarong
  • 2015年08月26日 09:12
  • 4364

Java的关键字还有this和super的用法

一般会从下面几个方面考,不管是面试C++,C#,java都是 首先是关于关键字和标示常量的考察 然后是关于类和接口的试题 然后是关于array,io和socket的试题 然后是关于数据库的各种...
  • xpp1993
  • xpp1993
  • 2013年08月11日 11:07
  • 1636

Java关键字null的深入理解

一、null是代表不确定的对象   Java中,null是一个关键字,用来标识一个不确定的对象。因此可以将null赋给引用类型变量,但不可以将null赋给基本类型变量。   比...
  • renxyz
  • renxyz
  • 2014年10月24日 23:06
  • 389

Java学习笔记之深入理解关键字null

更多博文可参考我的个人独立博客:贱贱的梦想 关键字null跟public、static、final一样,null也是java的关键字(更多关键字可以参考Java学习笔记之基本语法)。不能将null写...
  • GongchuangSu
  • GongchuangSu
  • 2016年05月28日 22:26
  • 528

Java基础——关键字null的使用

主要分为三部分来讲。第一部分是java关键字null本身所代表的意义;第二部分是null的使用场景;第三部分是null与集合。学习整理自null总结 Java关键字nullnull本身不是对象 nul...
  • HughGilbert
  • HughGilbert
  • 2017年05月03日 16:54
  • 211
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深入Java关键字null
举报原因:
原因补充:

(最多只允许输入30个字)