Java 之关键字 null 使用总结

1.null的使用

  Java中,null是一个关键字,用来标识一个不肯定的对象。所以能够将null赋给引用类型变量,但不能够将null赋给基本类型变量。好比咱们在定义一个变量的时候咱们经过会这样作:XXXX xxxx = null;在须要赋值的时候xxx = new XXXX();咱们知道咱们在定义变量的时候,java会给其赋一个初始化的值,通常的基本类型中整数类型int、byte、short、long的自动赋值为0,带小数点的float、double自动赋值为0.0,boolean的自动赋值为false,而引用类型变量自动赋值为null。须要注意的是不能将 null 赋给原始类型(byte、short、int、long、char、float、double、boolean)变量。java

2.null与Object关系

先看段代码以及运行结果函数

package com.test;

public class NullTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		   if (null instanceof Object) {
	            System.out.println("null是Object类型");
	        } else {
	            System.out.println("null不是Object类型");
	        }
	}

}

  毫无疑问结果是:null不是Object类型测试

3.访问static成员变量和方法

首先看下代码,能够猜想下具体的执行结果,指针

package com.test;

public class NullTest {
	
	
	public static String str = "nullString测试";

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		 System.out.println("************ ");
		 System.out.println(((NullTest)null).str+"  来自于静态变量");
		 System.out.println("************ ");
		  ((NullTest)null).printStr();
		 System.out.println("************ ");
	}
	
	public static void printStr(){
		System.out.println(str+"   来自于静态函数");
	}

}

  执行结果是:对象

************ 
nullString测试  来自于静态变量
************ 
nullString测试   来自于静态函数
************ 

  没有错误,这段代码能够正确的运行而且获取咱们指望的结果;简单解析下:由于null值能够强制转换为任何java类类型,(String)null也是合法的。但null强制转换后是无效对象,其返回值仍是为null,而static方法的调用是和类名绑定的,不借助对象进行访问因此能正确输出。反过来,没有static修饰就只能用对象进行访问,使用null调用对象确定会报空指针错了。blog

4.null的其余做用

  若是咱们想快速的释放对象所占的内存资源而不是指望GC和在合适的时候才扫描清除掉,咱们就可使用null。让一个非null的引用类型变量指向null。这样这个对象就再也不被任何对象应用了,等待JVM垃圾回收机制去回收。也就是说将 null 赋给非原始变量至关于释放该变量先前所引用的对象。内存

相关文章
相关标签/搜索