亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關于java中自動強制的問題?

關于java中自動強制的問題?

喵喔喔 2021-09-26 18:12:35
許多人推薦我閱讀“Java - 完整參考”一書。我開始閱讀它,我發現了這段文字:“在某些語言中,沒有沖突類型的自動強制或轉換。Java 編譯器檢查所有表達式和參數以確保類型兼容。任何類型不匹配都是必須在執行之前糾正的錯誤”這是否與以下內容相矛盾: System.out.println("string"+ a);哪里a是任何原始類型。這不是一種自動強制的隱式類型轉換。例如,字符串和整數不是兼容的類型。注意:我不是母語為英語的人
查看完整描述

3 回答

?
慕桂英546537

TA貢獻1848條經驗 獲得超10個贊

沖突類型

隱式轉換String為不沖突。的JLS,5.1.11節,定義了非沖突的方式這種轉換。

基本上,任何原始類型轉換為包裝對象類型,然后toString()在引用類型上調用。此方法定義在Object并因此保證存在于所有引用類型上。

雖然這種轉換是“自動的”,但它不是在沖突類型之間進行的,因為有一個易于理解、有意義的規則描述了總是會成功的轉換(除非從原始值創建一個對象生成一個OutOfMemoryError)。

這與稱為縮小原始轉換的沖突轉換形成對比,例如intto byte。這可能會丟失信息,因此不會隱式發生。它是只有顯式轉換的合法代碼,例如byte b = (byte) myInt.


查看完整回答
反對 回復 2021-09-26
?
qq_花開花謝_0

TA貢獻1835條經驗 獲得超7個贊

要去的地方始終是 Java 語言規范。在這種情況下,我們談論的是15.18.1,字符串連接運算符 +

如果只有一個操作數表達式的類型為String,則在運行時對另一個操作數執行字符串轉換(第 5.1.11 節)以生成字符串。

特別是,+根據上下文,符號可以表示三種不同的含義:一元加號、字符串連接或加法。


查看完整回答
反對 回復 2021-09-26
?
慕后森

TA貢獻1802條經驗 獲得超5個贊

在 java 中,會發生從一種數據類型到另一種數據類型的自動類型轉換或擴展,因為這兩種數據類型是兼容的,并且目標類型大于源類型。因此,當 Java 編譯器自動將數據從一種類型轉換為另一種類型時,根本不會丟失任何信息,因為目標類型的內存始終大于源類型。但是,在類型不兼容的情況下,java 編譯器會檢查類型兼容性,如果兩者類型不兼容,因為不會發生自動類型轉換。如果這樣做,它將自動導致信息丟失。因此,java 阻止了不兼容或沖突的數據類型之間的自動類型。為了在不兼容的類型之間轉換數據,java 具有縮小轉換。在縮小轉換范圍內,這兩種數據類型可能兼容也可能不兼容,目標可能大于也可能不大于源。在縮小范圍中,用戶明確縮小數據范圍,使其適合目標類型。縮小可能會導致信息丟失,例如將雙精度型轉換為整數類型時,小數點后的所有信息都會丟失。java中的例子:





import java.util.*;

class byteb

{

public static void main(String args [])

{

    double a=30.45;

    int b;

    //b=a;

    b=(int)a;

    System.out.println("b="+a +"and"+ "a="+b);

}

}   

    

 Run code snippetHide resultsExpand snippet


查看完整回答
反對 回復 2021-09-26
  • 3 回答
  • 0 關注
  • 178 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號