Java數據類型轉換題目


題目一

public static void main(String[] args) {
	byte b1 = 1, b2 = 2, b3, b6, b8;

	final byte b4 = 4, b5 = 6, b7;
	b3 = b1 + b2;// 語句1
	b6 = b4 + b5; // 語句2
	b8 = b1 + b4; // 語句3
	b7 = b2 + b5; // 語句4
	System.out.println(b3 + b6);
}
上述代碼片段中,存在編譯錯誤的語句是(ACD)
A語句1      B語句2     C語句3     D語句4    

剖析

  • 語句1錯誤:b3 = b1 + b2;
    b1,b2均為byte自動轉int,b3作為byte類型無法接受int類型的值,所以正確寫法為b3=(byte)(b1+b2);或將b3定義為int;

  • 語句2正確,b6 = b4 + b5;b4和b5為final類型不會自動提升,所以和的類型視左邊變量類型而定,即b6是可以任意數值類型

  • 語句3錯誤:b8 = b1 + b4;雖然b4不會自動提升,但b1仍會自動提升,所以結果需要強轉,b8=(byte)(b1+b4)

  • 語句4錯誤:b7 = b2 + b5;原理同語句3,所以錯誤。同時大家要注意b7是final修飾,即只可賦值一次,便不可再改變。

本題主要是涉及到以下幾個知識點

  1. 自動轉型
  • 表示數范圍小的數據類型可以自動轉換為表示數范圍大的數據類型;
  • 所有的byte,short,char型的值在操作時將被提升為int型
  1. final修飾的變量如何轉型
  • 被final修飾的變量不會自動改變類型,當2個final修飾相操作時,結果會根據左邊變量的類型而轉化


免責聲明!

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



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