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 賦給非原始變量至關於釋放該變量先前所引用的對象。內存

相關文章
相關標籤/搜索