疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

深入了解null在Java中的特性


 

        Java是一种平台,有编程高手认为通过参加java软件就业培训以及其他交流方式是能够快速了解编程语言之间有共通之处,领会了编程的精髓。疯狂java本期根据反馈针对在Java中关键字null进行深入剖析,希望能加深大家对关键字null的理解。

  一、关键字null是代表不确定的对象

  null是一个关键字在Java中,,用来标识一个不确定的对象。因此可以将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,则最后一句就会报错。

  二、Java中包含有默认给变量赋值的特点

  在定义变量的时候,如果定义后没有给变量赋值,则Java在运行时会自动给变量赋值。赋值原则是根据定义的类型来定义的,如整数类型int、byte、short、long的自动赋值为0,带小数点的float、double自动赋值为0.0,boolean的自动赋值为false,其他各供引用类型变量自动赋值为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运行时会自动给定值。引用类型数组,不给定初始值,则所有的元素值为null。

  Map:Map以按键/数值对的形式存储数据,和数组非常相似,在数组中存在的索引,它们本身也是对象。Map的key最多可以加入一个null,value字段没有限制。

  List:List包括List接口以及List接口的所有实现类,拥有Collection接口并实现该接口提供的所有方法,允许重复元素,可以加入任意多个null。

  Set:在Java中使用Set,可以方便地将需要的类型以集合类型保存在一个变量中.主要应用在显示列表.Set是一个不包含重复元素的collection。最多可以加入一个null。

  五、null的其他作用

  1、可以用来判断一个引用类型数据是否null。 用==来判断。

  2、释放内存,让一个非null的引用类型变量指向null。这样这个对象就不再被任何对象应用了。

  等待JVM垃圾回收机制去回收。