千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

手機(jī)站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

千鋒教育

掃一掃進(jìn)入千鋒手機(jī)站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學(xué)習(xí)站小程序
隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

當(dāng)前位置:首頁(yè)  >  技術(shù)干貨  > 什么是java強(qiáng)制類(lèi)型轉(zhuǎn)換?

什么是java強(qiáng)制類(lèi)型轉(zhuǎn)換?

來(lái)源:千鋒教育
發(fā)布人:wjy
時(shí)間: 2023-03-21 11:05:00 1679367900

  什么是java強(qiáng)制類(lèi)型轉(zhuǎn)換?

  1. 概念

  所謂的強(qiáng)制類(lèi)型轉(zhuǎn)換,其實(shí)是自動(dòng)類(lèi)型轉(zhuǎn)換的逆過(guò)程,在數(shù)據(jù)類(lèi)型兼容的情況下,將容量大的數(shù)據(jù)類(lèi)型轉(zhuǎn)換為容量小的數(shù)據(jù)類(lèi)型。強(qiáng)制類(lèi)型轉(zhuǎn)換也被稱(chēng)為顯式類(lèi)型轉(zhuǎn)換,需要我們顯式地進(jìn)行轉(zhuǎn)換操作,必須在=等號(hào)后面的類(lèi)型前加上強(qiáng)制()轉(zhuǎn)換符,并且有可能會(huì)造成數(shù)據(jù)精度的降低或溢出。

  2. 轉(zhuǎn)換規(guī)律

  強(qiáng)制類(lèi)型轉(zhuǎn)換時(shí),也具有一定的規(guī)律,但是這個(gè)規(guī)律比較簡(jiǎn)單。

  1. 進(jìn)行轉(zhuǎn)換的數(shù)據(jù)類(lèi)型必須是兼容的;

  2. 通常,字符串不能直接轉(zhuǎn)換為基本類(lèi)型;

  3. 通過(guò)基本類(lèi)型對(duì)應(yīng)的包裝類(lèi),可以把字符串類(lèi)型的數(shù)值轉(zhuǎn)換成對(duì)應(yīng)的基本類(lèi)型。如String s = “100”; int i = Integer.parseInt(s);

  4. boolean類(lèi)型不可以轉(zhuǎn)換成其他數(shù)據(jù)類(lèi)型。

  為了讓大家更好地理解這些規(guī)律,還是給大家設(shè)計(jì)一些代碼案例,往下看吧。

  3. 案例

  強(qiáng)制類(lèi)型轉(zhuǎn)換格式:(type)value其中type是要強(qiáng)制類(lèi)型轉(zhuǎn)換后的數(shù)據(jù)類(lèi)型。

  public class TypeDemo04 { public static void main(String[] args) { // 強(qiáng)制類(lèi)型轉(zhuǎn)換:大轉(zhuǎn)小。 double d1 = 100; // double-->int,大轉(zhuǎn)小,d1的類(lèi)型為double,i的類(lèi)型為int,需要強(qiáng)制轉(zhuǎn)換,類(lèi)型前添加(要轉(zhuǎn)換成的類(lèi)型)。 int i = (int) d1; System.out.println("i=" + i); //int-->char,大轉(zhuǎn)小 int j = 97; char c1 = (char) j; System.out.println("c1="+c1); //int-->byte,大轉(zhuǎn)小,精度可能會(huì)丟失 int k =128; //byte類(lèi)型是8位,最大值為127,當(dāng)int強(qiáng)制轉(zhuǎn)換為byte類(lèi)型時(shí),128就會(huì)導(dǎo)致溢出變成-128。 byte b = (byte)k; System.out.println("b="+b);//-128 //表達(dá)式中進(jìn)行類(lèi)型轉(zhuǎn)換 double d2 = 10; double d3 = 12; int m = (int) (d2 + d3); System.out.println("m="+m); //double+int,小類(lèi)型和大類(lèi)型進(jìn)行計(jì)算,會(huì)進(jìn)行類(lèi)型提升,最終的結(jié)果變成大類(lèi)型。 //Type mismatch: cannot convert from double to int //int n = d2 + k; int n = (int)d2 + k; System.out.println("n="+n); //浮點(diǎn)數(shù)到整數(shù)的轉(zhuǎn)換,是通過(guò)舍棄小數(shù)得到的,而不是四舍五入 int x=(int)55.9;//55 int y=(int)-28.89f; System.out.println("x="+x+",y="+y);//-28 }}

  大家要注意:

  類(lèi)型轉(zhuǎn)換時(shí)可能會(huì)導(dǎo)致溢出或精度的丟失,另外浮點(diǎn)數(shù)到整數(shù)的轉(zhuǎn)換是通過(guò)舍棄小數(shù)得到的,而不是四舍五入。我們可以看下圖的執(zhí)行結(jié)果:

什么是java強(qiáng)制類(lèi)型轉(zhuǎn)換1

  4. 類(lèi)型提升補(bǔ)充說(shuō)明

  在上面強(qiáng)制轉(zhuǎn)換時(shí),如果涉及到不同數(shù)據(jù)類(lèi)型之間的數(shù)學(xué)運(yùn)算,比如+、-、*、/等操作,大家要注意:小類(lèi)型的數(shù)據(jù)和大類(lèi)型的數(shù)據(jù)進(jìn)行計(jì)算時(shí),會(huì)自動(dòng)進(jìn)行類(lèi)型提升,最終的結(jié)果變成大類(lèi)型!關(guān)于這一塊的內(nèi)容,大家暫時(shí)先了解這么多,后面講運(yùn)算符時(shí)我再細(xì)說(shuō)。

  public class TypeDemo04 { public static void main(String[] args) { // 強(qiáng)制類(lèi)型轉(zhuǎn)換:大轉(zhuǎn)小 //類(lèi)型提升 //double+int,小類(lèi)型和大類(lèi)型進(jìn)行計(jì)算,會(huì)進(jìn)行類(lèi)型提升,最終的結(jié)果變成大類(lèi)型。 //Type mismatch: cannot convert from double to int //int m = d2 + k; int m = (int)d2 + k; System.out.println("m="+m); }}

  類(lèi)型自動(dòng)提升后,如果不進(jìn)行強(qiáng)制類(lèi)型轉(zhuǎn)換,也是會(huì)出現(xiàn)如下異常:

什么是java強(qiáng)制類(lèi)型轉(zhuǎn)換2

  5.java強(qiáng)制類(lèi)型轉(zhuǎn)換為什么是(數(shù)據(jù)類(lèi)型)而不是數(shù)據(jù)類(lèi)型()

  Java中的強(qiáng)制類(lèi)型轉(zhuǎn)換使用的語(yǔ)法是"(數(shù)據(jù)類(lèi)型) 值",而不是"值 數(shù)據(jù)類(lèi)型()",這是因?yàn)樵贘ava中,強(qiáng)制類(lèi)型轉(zhuǎn)換是一種運(yùn)算符,而不是一個(gè)函數(shù)調(diào)用。

  運(yùn)算符是一種操作符,它把一個(gè)或多個(gè)值作為輸入,并生成一個(gè)輸出。在Java中,強(qiáng)制類(lèi)型轉(zhuǎn)換運(yùn)算符需要一個(gè)數(shù)據(jù)類(lèi)型作為輸入,并且需要將一個(gè)值強(qiáng)制轉(zhuǎn)換為該數(shù)據(jù)類(lèi)型。因此,強(qiáng)制類(lèi)型轉(zhuǎn)換運(yùn)算符的語(yǔ)法為"(數(shù)據(jù)類(lèi)型) 值"。

  相反,如果使用"值 數(shù)據(jù)類(lèi)型()"的語(yǔ)法,這將被解釋為一個(gè)函數(shù)調(diào)用,其中"值"是函數(shù)的參數(shù),并且"數(shù)據(jù)類(lèi)型()"被解釋為函數(shù)名。但是,Java中并沒(méi)有名為"數(shù)據(jù)類(lèi)型()"的函數(shù),因此使用此語(yǔ)法將會(huì)導(dǎo)致語(yǔ)法錯(cuò)誤。

  總之,使用"(數(shù)據(jù)類(lèi)型) 值"的語(yǔ)法是Java中強(qiáng)制類(lèi)型轉(zhuǎn)換的正確方式。

tags:
聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
請(qǐng)您保持通訊暢通,專(zhuān)屬學(xué)習(xí)老師24小時(shí)內(nèi)將與您1V1溝通
免費(fèi)領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學(xué) 138****2860 剛剛成功領(lǐng)取
王同學(xué) 131****2015 剛剛成功領(lǐng)取
張同學(xué) 133****4652 剛剛成功領(lǐng)取
李同學(xué) 135****8607 剛剛成功領(lǐng)取
楊同學(xué) 132****5667 剛剛成功領(lǐng)取
岳同學(xué) 134****6652 剛剛成功領(lǐng)取
梁同學(xué) 157****2950 剛剛成功領(lǐng)取
劉同學(xué) 189****1015 剛剛成功領(lǐng)取
張同學(xué) 155****4678 剛剛成功領(lǐng)取
鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
董同學(xué) 138****2867 剛剛成功領(lǐng)取
周同學(xué) 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
python字符串截?。?/div>

在Python中,字符串是一種非常常見(jiàn)的數(shù)據(jù)類(lèi)型,它可以用來(lái)表示文本、數(shù)字、符號(hào)等內(nèi)容。在實(shí)際應(yīng)用中,我們經(jīng)常需要對(duì)字符串進(jìn)行截取,以便獲取...詳情>>

2023-11-02 17:56:27
Python socket C/S結(jié)構(gòu)的聊天室應(yīng)用實(shí)現(xiàn)?

隨著互聯(lián)網(wǎng)的發(fā)展,聊天室應(yīng)用成為人們?nèi)粘I钪惺殖R?jiàn)的一種社交方式。Python語(yǔ)言的Socket模塊是實(shí)現(xiàn)網(wǎng)絡(luò)通信的重要工具,可以輕松地實(shí)現(xiàn)C/...詳情>>

2023-11-02 17:53:38
用while求1到100的奇數(shù)和?

在計(jì)算機(jī)編程中,循環(huán)語(yǔ)句是非常重要的一部分。而while語(yǔ)句是其中最基本也是最常用的一種。它的作用是在滿(mǎn)足一定條件的情況下,重復(fù)執(zhí)行一段代...詳情>>

2023-11-02 17:50:57
python創(chuàng)建一個(gè)集合?

在Python中,集合是一種無(wú)序且不重復(fù)的數(shù)據(jù)類(lèi)型,可以用于存儲(chǔ)一組元素。創(chuàng)建一個(gè)集合非常簡(jiǎn)單,只需要使用大括號(hào){}或者set()函數(shù)即可。使用大...詳情>>

2023-11-02 17:34:02
linux改文件屬主命令?

Linux文件相關(guān)命令1、命令一:cat cat命令應(yīng)該是在Linux中查看文件內(nèi)容最常見(jiàn)的命令了。使用cat命令會(huì)打印指定文件的所有內(nèi)容到標(biāo)準(zhǔn)輸出上,比...詳情>>

2023-10-31 19:58:15