麻豆黑色丝袜jk制服福利网站-麻豆精品传媒视频观看-麻豆精品传媒一二三区在线视频-麻豆精选传媒4区2021-在线视频99-在线视频a

千鋒教育-做有情懷、有良心、有品質(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數(shù)據(jù)類型轉(zhuǎn)換?

什么是Java數(shù)據(jù)類型轉(zhuǎn)換?

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

  一. 數(shù)據(jù)類型轉(zhuǎn)換

  其實(shí)Java數(shù)據(jù)類型轉(zhuǎn)換是將一個(gè)數(shù)據(jù)類型的值轉(zhuǎn)換為另一個(gè)數(shù)據(jù)類型的值的過(guò)程。Java中的數(shù)據(jù)類型可以分為兩類:基本數(shù)據(jù)類型和引用數(shù)據(jù)類型。基本數(shù)據(jù)類型包括整型、浮點(diǎn)型、字符型、布爾型等,而引用數(shù)據(jù)類型則包括類、接口、數(shù)組等。

  而在Java中,數(shù)據(jù)類型的轉(zhuǎn)換可以分為兩種:自動(dòng)類型轉(zhuǎn)換和強(qiáng)制類型轉(zhuǎn)換。自動(dòng)類型轉(zhuǎn)換指的是在類型轉(zhuǎn)換時(shí),Java編譯器自動(dòng)將一種類型的值轉(zhuǎn)換為另一種類型的值。例如,將一個(gè)int類型的值賦給一個(gè)long類型的變量,編譯器會(huì)自動(dòng)將int類型的值轉(zhuǎn)換為long類型的值。強(qiáng)制類型轉(zhuǎn)換則指的是在類型轉(zhuǎn)換時(shí),需要使用強(qiáng)制轉(zhuǎn)換符進(jìn)行轉(zhuǎn)換,強(qiáng)制轉(zhuǎn)換符包括小括號(hào)加目標(biāo)類型的方式,例如:(int) 3.14。

  二. 自動(dòng)類型轉(zhuǎn)換(隱式轉(zhuǎn)換)

  1. 概念

  所謂的自動(dòng)類型轉(zhuǎn)換,是指在基本類型中,容量小的數(shù)據(jù)類型可以自動(dòng)轉(zhuǎn)換為容量大的數(shù)據(jù)類型。在數(shù)據(jù)類型兼容的情況下,小轉(zhuǎn)大就是自動(dòng)類型轉(zhuǎn)換,自動(dòng)類型轉(zhuǎn)換也被稱為隱式類型轉(zhuǎn)換,不需要我們做任何額外的操作。

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

  根據(jù)自動(dòng)類型轉(zhuǎn)換的定義,8種基本類型之間的自動(dòng)轉(zhuǎn)換關(guān)系如下圖所示:

什么是Java數(shù)據(jù)類型轉(zhuǎn)換1

  根據(jù)上圖,給大家提取了基本類型進(jìn)行自動(dòng)類型轉(zhuǎn)換時(shí)的基本規(guī)律,如下:

  1. 自動(dòng)類型轉(zhuǎn)換必須滿足,轉(zhuǎn)換前數(shù)據(jù)類型的位數(shù)要低于轉(zhuǎn)換后的數(shù)據(jù)類型;

  2. 當(dāng)多種數(shù)據(jù)類型的數(shù)據(jù)混合運(yùn)算時(shí),Java首先會(huì)自動(dòng)將所有的數(shù)據(jù)轉(zhuǎn)換成容量最大的那種數(shù)據(jù)類型,然后再進(jìn)行計(jì)算;

  3. byte、short、char這三者之間不會(huì)相互轉(zhuǎn)換,他們?nèi)咴谟?jì)算時(shí)首先都會(huì)轉(zhuǎn)換為 int 類型;

  4. boolean類型不能與其他任何基本數(shù)據(jù)類型進(jìn)行轉(zhuǎn)換;

  5. 當(dāng)把任意基本數(shù)據(jù)類型(包括boolean)的值和字符串進(jìn)行連接運(yùn)算時(shí),基本數(shù)據(jù)類型的值會(huì)自動(dòng)轉(zhuǎn)換為字符串類型;

  6. 必須滿足轉(zhuǎn)換前的數(shù)據(jù)類型的位數(shù)要低于轉(zhuǎn)換后的數(shù)據(jù)類型。

  以上這些基本規(guī)律,希望各位能夠熟練的記住并運(yùn)用,這是我們開(kāi)發(fā)時(shí)的基本功哦。

  3. 案例

  為了能讓大家更好地理解自動(dòng)類型轉(zhuǎn)換,給大家設(shè)計(jì)了如下配套代碼案例,你必須手敲幾遍哦。

  public class TypeDemo04 { public static void main(String[] args) { // 自動(dòng)類型轉(zhuǎn)換:小轉(zhuǎn)大,自動(dòng)轉(zhuǎn)換,啥也不用做 // 1.byte-->short,可以 byte b = 19; short s = b; // short-->byte,不可以自動(dòng)轉(zhuǎn)換:Type mismatch: cannot convert from short to byte // byte b2=s; System.out.println("s=" + s); // 2.short-->int,可以 int i = s; System.out.println("i=" + i); // int-->short,不可以自動(dòng)轉(zhuǎn)換:Type mismatch: cannot convert from int to short // short s2=i; // 3.char-->int,可以 char c = 'a'; int j = c; System.out.println("j=" + j); // int-->char,不可以自動(dòng)轉(zhuǎn)換:Type mismatch: cannot convert from char to int // char c2=j; // 4.int-->long,可以 long x = i; System.out.println("x=" + x); // long-->int,不可以自動(dòng)轉(zhuǎn)換:Type mismatch: cannot convert from int to long // j = x; // 5.int-->float,可以 float f1 = i; System.out.println("f1=" + f1); // float-->int,不可以自動(dòng)轉(zhuǎn)換:Type mismatch: cannot convert from float to int // j = f1; // 6.int-->double,可以 double d1 = i; System.out.println("d1=" + d1); // double-->int,不可以自動(dòng)轉(zhuǎn)換:Type mismatch: cannot convert from double to int // j = d1; // 7. long-->float,可以 float f2 = x; System.out.println("f2=" + f2); // float-->long,不可以自動(dòng)轉(zhuǎn)換:Type mismatch: cannot convert from float to long // x = f2; // 8. long-->double,可以 double d2 = x; System.out.println("d2=" + d2); // double-->long,不可以自動(dòng)轉(zhuǎn)換:Type mismatch: cannot convert from double to long // x = d2; // 9. float-->double,可以 double d3 = f1; System.out.println("d3=" + d3); // double-->float,不可以自動(dòng)轉(zhuǎn)換:Type mismatch: cannot convert from double to float // f2 = d3; }}

  我們要注意,超出范圍的強(qiáng)制轉(zhuǎn)型會(huì)得到錯(cuò)誤的結(jié)果。因?yàn)檗D(zhuǎn)型時(shí)int的兩個(gè)高位字節(jié)直接被扔掉,僅保留了低位的兩個(gè)字節(jié),因此強(qiáng)制轉(zhuǎn)型的結(jié)果有可能是錯(cuò)的。

  對(duì)于以上案例,希望大家動(dòng)手敲起來(lái),這些代碼雖然看著簡(jiǎn)單,但只有你自己親手練習(xí)了,你才能理解得更深刻。紙上得來(lái)終覺(jué)淺,絕知此事要躬行!

  三. 強(qiáng)制類型轉(zhuǎn)換(顯式轉(zhuǎn)換)

  1. 概念

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

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

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

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

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

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

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

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

  3. 案例

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

  public class TypeDemo04 { public static void main(String[] args) { // 強(qiáng)制類型轉(zhuǎn)換:大轉(zhuǎn)小。 double d1 = 100; // double-->int,大轉(zhuǎn)小,d1的類型為double,i的類型為int,需要強(qiáng)制轉(zhuǎn)換,類型前添加(要轉(zhuǎn)換成的類型)。 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類型是8位,最大值為127,當(dāng)int強(qiáng)制轉(zhuǎn)換為byte類型時(shí),128就會(huì)導(dǎo)致溢出變成-128。 byte b = (byte)k; System.out.println("b="+b);//-128 //表達(dá)式中進(jìn)行類型轉(zhuǎn)換 double d2 = 10; double d3 = 12; int m = (int) (d2 + d3); System.out.println("m="+m); //double+int,小類型和大類型進(jìn)行計(jì)算,會(huì)進(jìn)行類型提升,最終的結(jié)果變成大類型。 //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 }}

  大家要注意:

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

什么是Java數(shù)據(jù)類型轉(zhuǎn)換2

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

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

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

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

什么是Java數(shù)據(jù)類型轉(zhuǎn)換3

  四. 隱含強(qiáng)制類型轉(zhuǎn)換(初始化)

  1. 概念

  首先我們要知道這樣的基本原則:

  ● 在變量初始化時(shí),整數(shù)的默認(rèn)類型都是int;

  ● 浮點(diǎn)型小數(shù)的默認(rèn)類型是 double;

  ● 浮點(diǎn)型不存在隱含強(qiáng)制類型轉(zhuǎn)換的情況,在定義 float 類型時(shí)必須在數(shù)字后面跟上 F 或者 f。

  在 byte b = 100; 這句代碼中,100 默認(rèn)就是 int 類型!雖然100默認(rèn)是int類型,但Java會(huì)把100隱含地強(qiáng)制轉(zhuǎn)換成低級(jí)別的 byte 和 short 類型,所以不用我們進(jìn)行顯式的強(qiáng)制類型轉(zhuǎn)換。也就是說(shuō),Java會(huì)把-128到127之間的int類型數(shù)據(jù),都隱含地強(qiáng)制轉(zhuǎn)換成低級(jí)別的byte和short類型。

  2. 案例

  public class TypeDemo04 { public static void main(String[] args) { // 隱含強(qiáng)制類型轉(zhuǎn)換,初始化時(shí)。 //100默認(rèn)是int類型, //雖然int>byte,但Java會(huì)把-128到127之間的數(shù)字,隱含強(qiáng)制轉(zhuǎn)換成低級(jí)別的byte和short類型, //所以不用我們進(jìn)行顯式的強(qiáng)制類型轉(zhuǎn)換。 byte b = 100; System.out.println("b=" + b); //b2=-129,b2=128都會(huì)報(bào)錯(cuò),Type mismatch: cannot convert from int to byte。 //byte b2 = -129; }}

什么是Java數(shù)據(jù)類型轉(zhuǎn)換4

  五. 其他類型轉(zhuǎn)換

  關(guān)于其他類型之間的轉(zhuǎn)換,主要包括基本類型與字符串、基本類型與包裝類、字符串與包裝類、包裝類與字符串之間的轉(zhuǎn)換。接下來(lái),壹哥再通過(guò)幾個(gè)案例給大家展示一下它們的用法。

  1. 基本類型轉(zhuǎn)字符串

  基本類型轉(zhuǎn)字符串,對(duì)我們初學(xué)者來(lái)說(shuō),最常用的一個(gè)辦法就是直接在基本類型后面加上一個(gè)雙引號(hào)""。這種方案最簡(jiǎn)單,但實(shí)際上效率并不高,在進(jìn)行大量字符串拼接時(shí)不建議采用這種方案。當(dāng)然,如果只是個(gè)別字符串的拼接,采用這種方案是無(wú)所謂的。

  public class TypeDemo04 { public static void main(String[] args) { //1.基本類型轉(zhuǎn)字符串 //變量+"",會(huì)自動(dòng)轉(zhuǎn)換String類型 int x = 111; String s1 = x + ""; System.out.println("s1=" + s1); }}

  2. 包裝類型轉(zhuǎn)字符串

  關(guān)于包裝類,對(duì)于剛?cè)腴T的朋友,我們現(xiàn)在暫時(shí)先了解一下即可:畢竟知識(shí)還是得一步一步消化的。

  public class TypeDemo04 { public static void main(String[] args) { //2.包裝類型轉(zhuǎn)字符串 Double d = 1000.0; String str = d.toString(); System.out.println("str=" + str); }}

  3. 字符串轉(zhuǎn)包裝類型

  該案例大家也是先簡(jiǎn)單了解即可,后面我們?cè)偌?xì)講。

  public class TypeDemo04 { public static void main(String[] args) { //3.字符串轉(zhuǎn)包裝類 Double d2 = Double.parseDouble("11.1"); Double d3 = Double.valueOf("11.1"); System.out.println("d2=" + d2 + ",d3=" + d3); int i = Integer.parseInt("100"); Integer j = Integer.valueOf("200"); System.out.println("i=" + i + ",j=" + j); }}

  剛?cè)腴T到的朋友們,不要光看哦!一定要?jiǎng)邮智靡磺?!!!

tags:
聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
請(qǐng)您保持通訊暢通,專屬學(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字符串截取?

在Python中,字符串是一種非常常見(jiàn)的數(shù)據(jù)類型,它可以用來(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ǔ)句是其中最基本也是最常用的一種。它的作用是在滿足一定條件的情況下,重復(fù)執(zhí)行一段代...詳情>>

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

在Python中,集合是一種無(wú)序且不重復(fù)的數(shù)據(jù)類型,可以用于存儲(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
主站蜘蛛池模板: 快一点使劲c我在线观看| 果冻传媒麻豆电影| 高h全肉动漫在线观看| 月夜直播在线看片www| 干b视频在线观看| 夜夜影院未满十八勿进| 日韩欧美亚洲国产精品字幕久久久 | 一线在线观看全集免费高清中文| 狠狠色狠狠色综合网| 爽爽影院在线免费观看| 大胸年轻的搜子4理论| 大陆三级午夜理伦三级三| а√天堂资源8在线官网在线 | 冠希实干阿娇13分钟视频在线看| 午夜精品久久久久久中宇| 中国美团外卖男男china| 伊人电影综合网| 亚洲欧美日韩久久精品第一区| 国产**aa全黄毛片| 黄a在线观看| 三级在线看中文字幕完整版| 老子影院dy888午夜| 一卡2卡3卡4卡免费高清| 爱我久久国产精品| 天天综合网天天综合色| 爽爽影院在线| 美女羞羞视频免费网站| 久久蜜桃| 免费观看国产| 特级毛片www| 被cao的合不拢腿的皇后| 欧美亚洲一二三区| 精品国产欧美一区二区| 亚洲无限资源| 天天操夜夜操| 天堂伦理片| 青娱乐国产| 久久精品人人做人人爽 | 精品亚洲欧美无人区乱码| 抵在洗手台挺进撞击bl| 一个人免费视频观看在线www|