【Java面試題】short s1 = 1; s1 = s1 + 1;有錯嗎?short s1 = 1; s1 += 1;有錯嗎?


昨天去面試,雖然體驗不是很好, 但是看到了這個面試題,當時感覺無從下手,所以在這里記錄一下。

解決這道題之前,先復習一下Java的基本數據類型轉換規則,以便后面對面試題的理解。

java的基本數據類型轉換

  • 自動類型轉換:小–>大 byte-->short-->int-->long-->float-->double

  • 強制類型轉換:大–>小 小類型 變量名 = (大類型) 值

    注意:自增/自減運算符、復合賦值運算符底層做了優化,內部自動強制類型轉換;

    如:++, --, +=, -=, ......

  • 類型提升:是指在多種不同數據類型的表達式中,類型會自動向范圍表達大的值的數據類型提升;

    long count = 1000000;
    int price = 1999;
    long totalPrice = price * count;
    

正文——面試題

1. short s1 = 1; s1 = s1 + 1;

錯誤!

根據java的基本數據類型轉換規則,s1為short類型的變量,在表達式s1 = s1 + 1;中,s1會自動轉為int類型與1進行運算,運算結果為int類型,而int類型的值 賦值給short類型的變量時需要強制類型轉換。

2. short s1 = 1; s1 += 1;

正確!

在復合賦值運算符底層自動進行強制類型轉換,所以此處實際上是s1 = (int) s1 + 1;因為此處有強制類型轉換,所以編譯可以通過。


免責聲明!

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



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