java里null強轉為某個類會報錯嗎?


1.定義一個User類如下:
/**
* @author lizhibiao
* @date 2018/11/27 17:21
*/
public class User
{
private String userName;

private int age;

private int cutScore;

public String getUserName()
{
return userName;
}

public void setUserName(String userName)
{
this.userName = userName;
}

public int getAge()
{
return age;
}

public void setAge(int age)
{
this.age = age;
}

public int getCutScore() {
return cutScore;
}

public void setCutScore(int cutScore) {
this.cutScore = cutScore;
}
}
 
2.測試null是否可以轉為User類
public class Test
{
public static void main(String[] args)
{
User user = (User)null;
System.out.println(user);
}
}
運行結果如下:
null
 
也就是輸出值為null,所以null可以強轉為某個類編譯不報錯,但是強轉后還是為null
 
 
3.如果null來調用方法則會報錯
public class Test
{
public static void main(String[] args)
{
User user = (User)null;
System.out.println(user.getUserName());
}
}
運行結果如下:
Exception in thread "main" java.lang.NullPointerException
 at str.Test.main(Test.java:11)
 
報空異常
 
 
4.今天有網友加好友,給我發了一個例子,發現null強轉某個對象后,調用方法居然不報空指針。然后我按他的意思寫了個例子如下:
/**
* Hello world!
*
*/
public class App
{
private void commonMethod()
{
System.out.println("commonMethod");
}

private static void staticMethod()
{
System.out.println("我是靜態方法");
}


public static void main(String[] args)
{
App app = (App)null;

//調用靜態方法,不報錯
app.staticMethod();

//調用普通方法,報空指針
app.commonMethod();
}
}
運行結果:
 
分析:發現沒,null強轉為對象后,調用靜態方法居然是不會報錯的,調用普通方法會報空指針。原因是,我們在進行App app = (App)null強轉操作時,雖然對象app是為null沒有引用的,但是java里調用靜態方法不需要創建實例對象,靜態成員應該通過類型來訪問,也就是類名.靜態方法()就可以調用了靜態方法了。所以,app.staticMethod()調用靜態方法不報錯。
 
感謝這位網友,也歡迎大家有疑問添加微信:lizb0907,進行交流。
最后,以后不怎么在博客園上寫文章了,在新搭的博客上寫文章:
有興趣的伙伴們可以來交流,
堅持做好一件事!
 
 
有疑問,掃我二維碼添加微信,歡迎騷擾!
堅持做一件事,一起學習。


<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM