黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學(xué)習(xí)攻略 Java學(xué)習(xí) Java空指針異常解決方案

Java空指針異常解決方案

更新時間:2022-11-15 10:50:52 來源:動力節(jié)點 瀏覽1492次

NullPointerException是一個 RuntimeException。在Java中,可以將特殊的空值分配給對象引用。當程序嘗試使用具有空值的對象引用時拋出 NullPointerException。

這些可以是:

從空對象調(diào)用方法。

訪問或修改空對象的字段。

取null的長度,就好像是一個數(shù)組一樣。

訪問或修改空對象的槽,就像它是一個數(shù)組一樣。

拋出 null,就好像它是一個 Throwable 值一樣。

當您嘗試通過空對象進行同步時。

為什么我們需要空值?

Null 是 Java 中使用的特殊值。主要用于表示沒有給引用變量賦值。null 的一種應(yīng)用是實現(xiàn)鏈表和樹等數(shù)據(jù)結(jié)構(gòu)。其他應(yīng)用程序包括 Null Object 模式和Singleton 模式。單例模式確保只創(chuàng)建一個類的一個實例,并且旨在提供對對象的全局訪問點。

最多創(chuàng)建一個類的一個實例的示例方法是將其所有構(gòu)造函數(shù)聲明為私有的,然后創(chuàng)建一個返回該類的唯一實例的公共方法:

// To use randomUUID function.
import java.util.UUID;
import java.io.*;
class Singleton
{
	// Initializing values of single and ID to null.
	private static Singleton single = null;
	private String ID = null;
	private Singleton()
	{
		/* Make it private, in order to prevent the
		creation of new instances of the Singleton
		class. */
		// Create a random ID
		ID = UUID.randomUUID().toString();
	}
	public static Singleton getInstance()
	{
		if (single == null)
			single = new Singleton();
		return single;
	}
	public String getID()
	{
		return this.ID;
	}
}
// Driver Code
public class TestSingleton
{
	public static void main(String[] args)
	{
		Singleton s = Singleton.getInstance();
		System.out.println(s.getID());
	}
}

輸出:

10099197-8c2d-4638-9371-e88c820a9af2

在上面的示例中,單例類的靜態(tài)實例。該實例最多在 Singleton getInstance 方法中初始化一次。

如何避免 NullPointerException?

為避免 NullPointerException,我們必須確保在使用它們之前正確初始化所有對象。當我們聲明一個引用變量時,在我們從對象請求方法或字段之前,我們必須驗證對象不為空。

以下是克服該問題的解決方案的常見問題。

案例 1:字符串與文字的比較

一個非常常見的案例問題涉及字符串變量和文字之間的比較。文字可以是字符串或枚舉的元素。不要從空對象調(diào)用方法,考慮從字面量調(diào)用它。

// A Java program to demonstrate that invoking a method
// on null causes NullPointerException
import java.io.*;
class GFG
{
	public static void main (String[] args)
	{
		// Initializing String variable with null value
		String ptr = null;
		// Checking if ptr.equals null or works fine.
		try
		{
			// This line of code throws NullPointerException
			// because ptr is null
			if (ptr.equals("gfg"))
				System.out.print("Same");
			else
				System.out.print("Not Same");
		}
		catch(NullPointerException e)
		{
			System.out.print("NullPointerException Caught");
		}
	}
}

輸出:

捕獲空指針異常

我們可以通過對文字而不是對象調(diào)用 equals 來避免 NullPointerException。

// A Java program to demonstrate that we can avoid
// NullPointerException
import java.io.*;
class GFG
{
	public static void main (String[] args)
	{
		// Initializing String variable with null value
		String ptr = null;
		// Checking if ptr is null using try catch.
		try
		{
			if ("gfg".equals(ptr))
				System.out.print("Same");
			else
				System.out.print("Not Same");		
		}
		catch(NullPointerException e)
		{
			System.out.print("Caught NullPointerException");
		}
	}
}

輸出:

不一樣

案例 2:檢查方法的參數(shù)

在執(zhí)行新方法的主體之前,我們應(yīng)該首先檢查其參數(shù)是否為空值,然后只有在正確檢查參數(shù)后才繼續(xù)執(zhí)行該方法。否則,它將拋出IllegalArgumentException并通知調(diào)用方法傳遞的參數(shù)有問題。

// A Java program to demonstrate that we should
// check if parameters are null or not before
// using them.
import java.io.*;
class GFG
{
	public static void main (String[] args)
	{
		// String s set an empty string and calling getLength()
		String s = "";
		try
		{
			System.out.println(getLength(s));
		}
		catch(IllegalArgumentException e)
		{
			System.out.println("IllegalArgumentException caught");
		}
		// String s set to a value and calling getLength()
		s = "GeeksforGeeks";
		try
		{
			System.out.println(getLength(s));
		}
		catch(IllegalArgumentException e)
		{
			System.out.println("IllegalArgumentException caught");
		}
		// Setting s as null and calling getLength()
		s = null;
		try
		{
			System.out.println(getLength(s));
		}
		catch(IllegalArgumentException e)
		{
			System.out.println("IllegalArgumentException caught");
		}
	}
	// Function to return length of string s. It throws
	// IllegalArgumentException if s is null.
	public static int getLength(String s)
	{
		if (s == null)
			throw new IllegalArgumentException("The argument cannot be null");
		return s.length();
	}
}

輸出:

0
13
捕獲到 IllegalArgumentException

 

提交申請后,顧問老師會電話與您溝通安排學(xué)習(xí)

免費課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 亚洲欧美第一 | 模特精品视频一区 | 亚洲 欧美 成人日韩 | 免费三级伦理片 | 青青草狠狠干 | 国产大片黄 | 麻豆果冻传媒新剧国产短视频 | 在线精品视频成人网 | 草逼视频免费观看 | 国产一级片在线播放 | 黄色大片久久 | 精品免费视频 | 中国一级特黄真人毛片 | free性hd中国| 欧美黄色一级片免费看 | 一区二区三区日韩 | 亚洲视频精品 | 欧美视频一区在线观看 | 伊人久久精品成人网 | 首页 动漫 亚洲 欧美 日韩 | 免费精品国产 | 欧美激情视频网 | 免费可以看黄的视频 s色 | 午夜影院视频 | 日本va视频 | 亚洲欧美日本一区 | 中文字幕在线日韩 | 日韩在线观看中文字幕 | 欧美成人二区 | 动漫精品专区一区二区三区不卡 | 午夜影院网站 | 在线免费看黄视频 | 额去鲁97在线观看视频 | 成人二区 | 日本护士xxxxx18.19 | 国产成人亚洲欧美激情 | 亚洲精品午夜国产va久久 | 成人午夜视频在线观 | 欧美xxx在线 | 国产a一级毛片午夜剧场14 | 亚洲无限乱码一二三四区 |