當前位置:首頁 » 編程語言 » java強制轉換類型

java強制轉換類型

發布時間: 2023-09-09 00:27:10

java中的強制類型轉換

用(String)做強制類型轉換和用String.valueOf()區別在於:

String 就是直接強制轉化成String型的字元串,且有優先順序限制,像int i=123;不能String s=(String)i。

而String.valueOf()裡面的參數轉換可以是double、long、char[] 、long等等,沒限制,所以String s=String.valueOf(i)。

toString()方法返回的是這個對象的字元串表示,就像是這個對象的名字一樣,任何對象都可以有自己的名字,你可以重寫其toString()方法,給其賦予任意的名字。

但是調用toString()方法的對象不能為 null,否則會拋出異常:java.lang.NullPointerException。

例子如下:

(1)java強制轉換類型擴展閱讀:

java中強制類型轉換

在Java中強制類型轉換分為基本數據類型和引用數據類型兩種,這里我們討論的後者,也就是引用數據類型的強制類型轉換。

在Java中由於繼承和向上轉型,子類可以非常自然地轉換成父類,但是父類轉換成子類則需要強制轉換。

因為子類擁有比父類更多的屬性、更強的功能,所以父類轉換為子類需要強制。那麼,是不是只要是父類轉換為子類就會成功呢?其實不然,他們之間的強制類型轉換是有條件的。

當我們用一個類型的構造器構造出一個對象時,這個對象的類型就已經確定的,也就說它的本質是不會再發生變化了。

在Java中我們可以通過繼承、向上轉型的關系使用父類類型來引用它,這個時候我們是使用功能較弱的類型引用功能較強的對象,這是可行的。但是將功能較弱的類型強制轉功能較強的對象時,就不一定可以行了。

舉個例子來說明。比如系統中存在Father、Son兩個對象。首先我們先構造一個Son對象,然後用一個Father類型變數引用它:

Father father = new Son();

在這里Son 對象實例被向上轉型為father了,但是請注意這個Son對象實例在內存中的本質還是Son類型的,只不過它的能力臨時被消弱了而已,如果我們想變強怎麼辦?將其對象類型還原!

Son son = (Son)father;

這條語句是可行的,其實father引用仍然是Father類型的,只不過是將它的能力加強了,將其加強後轉交給son引用了,Son對象實例在son的變數的引用下,恢復真身,可以使用全部功能了。

前面提到父類強制轉換成子類並不是總是成功,那麼在什麼情況下它會失效呢?

當引用類型的真實身份是父類本身的類型時,強制類型轉換就會產生錯誤。例如:

Father father = new Father();

Son son = (Son) father;

這個系統會拋出ClassCastException異常信息。

所以編譯器在編譯時只會檢查類型之間是否存在繼承關系,有則通過;而在運行時就會檢查它的真實類型,是則通過,否則拋出ClassCastException異常。

所以在繼承中,子類可以自動轉型為父類,但是父類強制轉換為子類時只有當引用類型真正的身份為子類時才會強制轉換成功,否則失敗

㈡ JAVA如何進行強制類型轉換

  1. 轉型有兩種: 向上轉型和向下轉型(強制轉型)

  2. 兩種分別如下:

    1. 一種是向上轉型

      1. 對於基礎數據類型 , 可以自動轉型 ,比如:

        int a = 10;

        long b = a;

        這里就是把int型轉成了long型 , 因為 long范圍比int大 , 這樣的轉型不會有任何影響 , 所以可以自動轉型

      2. 又比如 A a = new B();

        其中 A 是B 的父類 , 這也是多態 , 就是父類的對象指向子類的引用 , 你調用a對象 , 實際上是B的類 , 但是B繼承A , 擁有A的一切屬性和方法 (不談復寫)

    2. 第二種是向下轉型 , 也就是強制

      這種需要強轉 , 比如

      long a = 10 ;

      int b = (int) a;

      通過 (int)可以強制轉型 , 但是這樣會丟失精度 , 比如a如果超過了b的范圍 , 那麼強轉成int型, 只會等於int的最大值

      又比如 :

      B b = new A(); 這樣是不行的 , 需要有中間途徑 , 比如

      A a = new A(); Object obj = a; B b = (A) a;

      而這種強轉 , 又有要求 , 必須是同類型 , 也就是說 A 就是B , 不然會報錯.

  3. 不同類型之間如果要轉型 , 需要通過中間途徑 , 比如JSON , 將A轉成JSON串 , 然後再轉換為B



㈢ JAVA如何進行強制類型轉換

如果這2種類型是兼容的,那麼Java 將自動地進行轉換。

㈣ Java強制數據類型轉換

規則可不少,挺亂的其實:
強制數據類型轉換: int nowC = (int)c;
還可以這樣,使用intValue方法,返回一個int值:
Double d = 5 / 9.0 * (f - 32);
int nowC = d.intValue();
Double類是基本數據類型double所對應的包裝類。

基本數據類型轉換的規則:
Java中基本數據類型共有8種,其中boolean類型不能轉換為其它類型,其它類型也不能轉換為boolean型
除了boolean類型,還有7種,按照它們的容量(也就是表數范圍,就是能表示的數的大小范圍,比如char是0——65535)的大小,從小到大,排序依次為:
byte short char int long float double
1.容量小的向容量大的轉換,可以自動轉換,比如可以直接將一個int類型賦值給double:
double d = 34;
2.容量大的向容量小的轉換,必須強制類型轉換,就是你上面的那種形式,比如:
double c = 5/9.0 *(f - 32);
int nowC = (int)c;
3.整數類型常量默認為int類型,比如17
4.浮點類型常量默認為double類型,比如3.14
5.在多種數據類型混合運算時,容量小的自動轉換為整個表達式中容量最大的,然後再進行計算,比如:
int i = 9; float f = 4f; double d = 3.14; double dd = i+f+d;
此時,i和f都各自先轉換成double,在進行+運算。
6.在多種數據類型混合運算時,byte short char 3者不會互相轉換,他們各自轉換為int再進行計算
7.在有些時候,容量小的會自動提升為容量大的,比如方法重載傳參數時候,
但是byte 和 short 不會自動提升為char,其它類型按照我上面所述的順序提升。

差不多就這些,不明白補充,另外需要注意的是強轉雖然編譯沒問題,但是運行時,有可能會數據溢出,損失精度

㈤ java中的數據類型可以進行強制轉換嗎,String和int如何進行強制轉換

可以轉換,在平時寫代碼的時候經常會用到string和int數據類型的轉換,由於java和python在string和int數據類型轉換的時候是不一樣的。

在 java中要將 String 類型轉化為 int 類型時,需要使用 Integer 類中的parseInt() 方法或者valueOf() 方法進行轉換。

String str = "123";try { int a = Integer.parseInt(str);


} catch (NumberFormatException e) {
e.printStackTrace();


}String str = "123";try { int b = Integer.valueOf(str).intValue()


} catch (NumberFormatException e) {


e.printStackTrace();


}

Java是一門面向對象編程語言,不僅吸收了C++語言的各種優點,還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特徵。

熱點內容
滑板鞋腳本視頻 發布:2025-02-02 09:48:54 瀏覽:432
群暉怎麼玩安卓模擬器 發布:2025-02-02 09:45:23 瀏覽:557
三星安卓12彩蛋怎麼玩 發布:2025-02-02 09:44:39 瀏覽:743
電腦顯示連接伺服器錯誤 發布:2025-02-02 09:24:10 瀏覽:537
瑞芯微開發板編譯 發布:2025-02-02 09:22:54 瀏覽:146
linux虛擬機用gcc編譯時顯示錯誤 發布:2025-02-02 09:14:01 瀏覽:235
java駝峰 發布:2025-02-02 09:13:26 瀏覽:651
魔獸腳本怎麼用 發布:2025-02-02 09:10:28 瀏覽:538
linuxadobe 發布:2025-02-02 09:09:43 瀏覽:212
sql2000資料庫連接 發布:2025-02-02 09:09:43 瀏覽:726