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

java強制轉換

發布時間: 2022-11-28 03:02:16

java 強制類型轉換的規則是什麼

1、執行算術運算時,低類型(短位元組)可以轉換為高類型(長位元組);例如: int型轉換成double型,char型轉換成int型等等;

2、賦值表達式中,等號右邊表達式的值的類型自動隱式地轉換為左邊變數的類型,並賦值給它;

3、函數調用時,將實參的值傳遞給形參,系統首先會自動隱式地把實參的值的類型轉換為形參的類型,然後再賦值給形參;

4、函數有返回值時,系統首先會自動隱式地將返回表達式的值的類型轉換為函數的返回類型,然後再賦值給調用函數返回。

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

C++中強制類型轉換函數有4個:

1、const_cast(用於去除const屬性)。

2、static_cast(用於基本類型的強制轉換)。

3、dynamic_cast(用於多態類型之間的類型轉換)。

4、reinterpreter_cast(用於不同類型之間的指針之間的轉換,最常用的就是不同類型之間函數指針的轉換)。

隱式類型轉換發生在賦值表達式和有返回值的函數調用表達式中。

在賦值表達式中,如果賦值符左右兩側的操作數類型不同,則將賦值符右邊操作數強制轉換為賦值符左側的類型數值後,賦值給賦值符左側的變數。

在函數調用時,如果return後面表達式的類型與函數返回值類型不同,則在返回值時將return後面表達式的數值強制轉換為函數返回值類型後,再將值返回。

參考資料

網路-強制類型轉換

❷ 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。

例子如下:

(2)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 ) 整數 int 轉換成字串 String , 有三種方法 :
String s = String.valueOf(i);
String s = Integer.toString(i);
String s = "" + i;

2 ) String 轉 int
int i = Integer.parseInt([String]);
i = Integer.parseInt([String],[int radix]);
int i = Integer.valueOf(my_str).intValue();

3 ) 布爾類型 轉 String

1. 第一種方法

boolean bool = true;
String s = new Boolean(bool).toString();//將bool利用對象封裝器轉化為對象

2. 第二種方法

boolean bool = true;

String s = String.valueOf( bool );

4 ) String 轉 Date

1 . 導入 java.util.Date date=null;

2 . date=java.sql.Date.valueOf(String s);

5 ) 數字類型間的轉換

轉型有兩種: 向上轉型和向下轉型(強制轉型)
兩種分別如下:
第一種是向上轉型
對於基礎數據類型 , 可以自動轉型 ,比如:
int a = 10;
long b = a;
這里就是把int型轉成了long型 , 因為 long范圍比int大 , 這樣的轉型不會有任何影響 , 所以可以自動轉型

第二種是向下轉型 , 也就是強制
這種需要強轉 , 比如
long a = 10 ;
int b = (int) a;
通過 (int)可以強制轉型 , 但是這樣會丟失精度 , 比如a如果超過了b的范圍 , 那麼強轉成int型, 只會等於int的最大值

又如 : int a = ( int ) 8.8 ;
如果對編程感興趣可以來我這個看看,希望對您有所幫助!~

❹ Java中什麼情況下需要強制轉換

自動轉換和強制轉換我知道的有兩種情況:基本數據類型

類。
先說基本數據類型:因為java是強類型語言,由強類型向弱類型轉換需要強制轉換,而由弱類型向強類型轉換則系統自動轉換。比如:double
類型相比int類型是屬於強類型,則由double類型的數據向int類型數據轉換就需要強制轉換,反之則自動轉換。另外八大基本數據類型的強弱關系如下:byte

評論
0

0

載入更多

❺ Java強制類型轉換

原因有如下:

  1. Object數組中可以存儲int ,string, class等類型,對於計算機來說它不清楚用戶最終存儲的是什麼類型的數據,例如可以存儲:

    mm[0] = new String("123");
    mm[1] = new MyClass();

  2. 如果存儲以上數據類型,那麼你強制轉換就是失敗的,Object數組存儲未知類型,所以無法強制轉換某一固定類型的數據,強制轉換就會異常。

  3. 針對Object數組中某一個具體數據進行強制轉換時,可以根據存儲的實際類型進行轉換處理,能夠正常進行,所以是正確的。

  4. 以上的說明希望你能明白。

❻ java 強制類型轉換的規則是什麼

表示強制轉換類型.學點強制轉換的知識吧比如: 1.基本類型:int a=0;float a=8.2//error,這個不能被編譯通過 //我們這樣寫就可以了 float a=(float)8.2;//把double 型的強制轉換為float //也可以這樣寫的float a=8.2f 2.引用類型: 一個超類能做的東西,其子類也能做,而一個子類能做的東西超類不一定能做,所以就有這樣的規則: (1).一個子類的對象可以強制轉換成為其超類的對象; (2).一個超類的對象如果強制轉換成子類的對象將在運行的時候有異常拋出; (3).如果不是同一繼承樹上的類強制轉換,將產生編譯錯誤. 例如:class A {}class B extends A{}class C {}B b=new B(); A a=(A)b;//被b引用的對象強制轉換為類A的對象,類B的對象具有類A對象的性質,所以可以轉換成功a=new A();b=(B)a;//原本是類A的對象,可能不具備類B的性質,這樣會在運行的時候產生異常.

❼ Java的強制類型轉換的格式,急

強制轉換格式為(int)a將變數a強制轉換為int型,但是轉換是有條件的。數值類型只能轉換為數值類型,邏輯類型boolean不能轉換為數值型。如(int)true就是不對的。詳細的可以參考一些網上的資料。我就不一一列舉了

❽ 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如何進行強制類型轉換

  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



熱點內容
安卓手機怎麼加速進程 發布:2025-01-18 07:29:48 瀏覽:681
塞恩拐彎腳本 發布:2025-01-18 07:29:37 瀏覽:742
師資配置含哪些內容 發布:2025-01-18 07:17:35 瀏覽:706
江西腳本 發布:2025-01-18 07:14:38 瀏覽:392
php中i方法 發布:2025-01-18 07:13:19 瀏覽:369
FTP寶塔Linux面板 發布:2025-01-18 07:10:05 瀏覽:396
無線網卡怎麼改密碼 發布:2025-01-18 06:54:41 瀏覽:766
ava動態編譯 發布:2025-01-18 06:54:39 瀏覽:765
中國學位論文全文資料庫 發布:2025-01-18 06:43:49 瀏覽:689
全局變數存儲類別 發布:2025-01-18 06:39:29 瀏覽:424