最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java基礎(chǔ)詳解之?dāng)?shù)據(jù)類型知識(shí)點(diǎn)總結(jié)

 更新時(shí)間:2021年04月23日 09:52:00   作者:愛敲代碼的三毛  
這篇文章主要介紹了java基礎(chǔ)詳解之?dāng)?shù)據(jù)類型知識(shí)點(diǎn)總結(jié),文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java基礎(chǔ)的小伙伴們有很大的幫助,需要的朋友可以參考下

一、基本數(shù)據(jù)類型

1.1 整形

1.1.1 int

int a = Integer.MAX_VALUE;//int最大值
int b = Integer.MIN_VALUE;//int最小值

在java中int占4個(gè)字節(jié),和操作系統(tǒng)每任何關(guān)系。這也是java的可移植性。

int 能表示的范圍為-231~231-1,如果超出最大值或者小于最小值則會(huì)發(fā)生溢出。

public static void main(String[] args) {
            int a = Integer.MAX_VALUE;//int最大值
            int b = Integer.MIN_VALUE;//int最小值
            System.out.println("MAX_VALUE="+a);
            System.out.println("MIN_VALUE="+b);
            a = a+1;
            b = b-1;
            System.out.println("---------------");
            System.out.println("MAX_VALUE+1="+a);
            System.out.println("MIN_VALUE-1="+b);
}

在這里插入圖片描述

我們發(fā)現(xiàn)int的最大值加1會(huì)等于int的最小值,而int的最小值減1會(huì)等于int的最大值。這種情況不僅在int,在long和short都存在

在這里插入圖片描述

1.1.2 長(zhǎng)整形:long

long占8個(gè)字節(jié),可表示的范圍是 -263~-263-1

long a = 100L;
long b = 100l;
long c = 100;

在創(chuàng)建長(zhǎng)整形變量時(shí),a,b,c三種都可以,當(dāng)我們一般用第一種,大寫L更好識(shí)別它時(shí)長(zhǎng)整形

1.1.3 短整形:short

short占2個(gè)字節(jié),所能表示的范圍為-215~215-1
short能表示的范圍 -32768~32767 ,所表示的范圍比較小一般不推薦使用,所以我們以后 int 和 long 時(shí)使用的比較多的。

1.2 浮點(diǎn)型

1.2.1 雙精度浮點(diǎn)型:double

public static void main(String[] args) {
            int a1 = 1;
            int a2 = 2;
            double b1 = 1.0;
            double b2 = 2.0;
            System.out.println("a1/a2="+a1/a2);
            System.out.println("b1/b2="+b1/b2);
}

在這里插入圖片描述

在java當(dāng)中int除以 int 只能得到 int 類型,因?yàn)樾?shù)部分會(huì)被舍去。如果要得到小數(shù)則需要用浮點(diǎn)數(shù)來(lái)計(jì)算。

再來(lái)看一個(gè)有意思的代碼

public static void main(String[] args) {
            double a = 1.1;
            System.out.println(a*a);

}

在這里插入圖片描述

這里a*a理論上說(shuō)時(shí)等于1.21的但這里為什么不是呢?

1.Java 中的 double 雖然也是 8 個(gè)字節(jié), 但是浮點(diǎn)數(shù)的內(nèi)存布局和整數(shù)差別很大, 不能單純的用 2n 的形式表示數(shù)據(jù)范

2.Java 的 double 類型的內(nèi)存布局遵守 IEEE 754 標(biāo)準(zhǔn)(和C語(yǔ)言一樣), 嘗試使用有限的內(nèi)存空間表示可能無(wú)限的小數(shù), 勢(shì)
必會(huì)存在一定的精度誤差圍,而且計(jì)算機(jī)中小數(shù)是沒(méi)有精確的數(shù)字的

1.2.2 單精度浮點(diǎn)型:float

flaot占4個(gè)字節(jié)

public static void main(String[] args) {
            float a1 = 1.1;
            float a2 = (float)1.1;
            float b = 1.1F;
            float c = 1.1f;
}    

在這里插入圖片描述

這里為什么報(bào)錯(cuò)呢?因?yàn)镴ava是一個(gè)強(qiáng)類型語(yǔ)言,安全性更高。在Java當(dāng)中小數(shù)默認(rèn)是double類型的,在創(chuàng)建float變量的時(shí)候,需要在小數(shù)后面加上一個(gè)F(f)或者強(qiáng)制類型轉(zhuǎn)換。

不過(guò)float能表示的精度較小,所以我們一般都是用double

1.3 字符類型變量char

在java中char不同于C語(yǔ)言它是占兩個(gè)字節(jié)的,計(jì)算機(jī)中的字符本質(zhì)上是一個(gè)整數(shù). 在 C 語(yǔ)言中使用 ASCII 表示字符, 而 Java 中使用 Unicode 表示字符. 因此一個(gè)字符占用兩個(gè)字節(jié), 表示的字符種類更多, 包括中文.

public static void main(String[] args) {
            char a = 97;
            char b = 65;
            char c = '好';
            System.out.println(a);
            System.out.println(b);
            System.out.println(c);
}       

在這里插入圖片描述

在Java當(dāng)中字符類型就是字符類型不要和數(shù)字掛鉤,記住java中字符類型是不能夠給負(fù)數(shù)的。

在這里插入圖片描述

1.4 字節(jié)類型變量byte

byte占1個(gè)字節(jié),能表示的范圍為 -128~127
byte不能賦值超過(guò)它范圍外的數(shù)字,從而可以推到出其它類型也是一樣的。

來(lái)看一段代碼:

在這里插入圖片描述

這里的 b3和b5都報(bào)錯(cuò),而b4沒(méi)有報(bào)錯(cuò)呢?

1.這是因?yàn)閳?zhí)行 b3 這段代碼時(shí),b1和b2都是變量編譯器不知道里面是什么,為了安全起見所以報(bào)錯(cuò)。

2.而b4不報(bào)錯(cuò)時(shí)因?yàn)樵诰幾g的時(shí)候 5+10就已經(jīng)被替換為15了,相當(dāng)于 b4 = 15.

3.那b5報(bào)錯(cuò)又是為什么呢?這里就牽扯到了整形提升,

簡(jiǎn)單說(shuō)一下整形提升:當(dāng)變量小于4個(gè)字節(jié)的時(shí)候,比如這里的byte在計(jì)算時(shí)會(huì)把它先提升為整形int再進(jìn)行計(jì)算。而byte是1個(gè)字節(jié)接收不了int類型的變量,所以報(bào)錯(cuò)。后面會(huì)再提到整形提升

1.5 布爾類型變量 boolean

boolean a = false;
boolean b = true;

1.在java中布爾類型只有兩個(gè)取值 falsetrue 。

2.java中的boolean和int 類型不能相互轉(zhuǎn)換,不存在1表示true ,0表示false這種用法

3.boolean 類型有些 JVM 的實(shí)現(xiàn)是占 1 個(gè)字節(jié), 有些是占 1 個(gè)比特位。并沒(méi)有明確規(guī)定大小

1.6 字符串類型變量 String

Java的字符串可以用+進(jìn)行拼接

public static void main(String[] args) {
            String str1 = "這是一個(gè)字符串";
            String str2 = "java";
            String tmp = str1 + str2;
            System.out.println(tmp);
}

在這里插入圖片描述

同樣也可以拼接數(shù)字

public static void main(String[] args) {
            String str1 = "這是一個(gè)字符串";
            String str2 = "java";
            String tmp = str1 + str2;
            System.out.println(tmp);
            int a = 10;
            int b = 20;
            System.out.println(tmp+a+b);
            System.out.println(a+b+tmp);
}

在這里插入圖片描述

輸出的時(shí)候如果前面是字符串則后面的數(shù)字會(huì)被當(dāng)作字符進(jìn)行拼接,可以根據(jù)自己的需要進(jìn)行運(yùn)算或者拼接

1.Java 使用 雙引號(hào) + 若干字符 的方式表示字符串字面值.

2. 和上面的類型不同, String 不是基本類型, 而是引用類型(在以后的文章會(huì)說(shuō)到).

二、常量

上面討論的都是各種規(guī)則的變量, 每種類型的變量也對(duì)應(yīng)著一種相同類型的常量.

常量指的是運(yùn)行時(shí)類型不能發(fā)生改變.

常量主要有以下兩種體現(xiàn)形式

2.1 字面常量

在這里插入圖片描述

2.2 … final 關(guān)鍵字修飾的常量

在這里插入圖片描述

final修飾的常量是不能被直接修改的

三、 類型轉(zhuǎn)換和數(shù)值轉(zhuǎn)換

3.1 類型轉(zhuǎn)換

java 作為一個(gè)強(qiáng)類型編程語(yǔ)言, 當(dāng)不同類型之間的變量相互賦值的時(shí)候, 會(huì)有教嚴(yán)格的校驗(yàn).來(lái)看一下列子

在這里插入圖片描述

long 表示的范圍更大, 可以將 int 賦值給 long, 但是不能將 long 賦值給 int.

double 表示的范圍更大, 可以將 int 賦值給 double, 但是不能將 double 賦值給 int.

結(jié)論: 不同數(shù)字類型的變量之間賦值, 表示范圍更小的類型能隱式轉(zhuǎn)換成范圍較大的類型, 反之則不行.

3.1.1 強(qiáng)制類型轉(zhuǎn)換

在這里插入圖片描述

結(jié)論: 使用 (類型) 的方式可以將 double 類型強(qiáng)制轉(zhuǎn)成 int. 但是

1.強(qiáng)制類型轉(zhuǎn)換可能會(huì)導(dǎo)致精度丟失. 如剛才的例子中, 賦值之后, 20.5 就變成 20 了, 小數(shù)點(diǎn)后面的部分被忽略.

2.強(qiáng)制類型轉(zhuǎn)換不是一定能成功, 互不相干的類型之間無(wú)法強(qiáng)轉(zhuǎn)

在這里插入圖片描述

比如這個(gè)列子 int 和 boolean這兩種完全不相關(guān)的類型是不可以強(qiáng)轉(zhuǎn)的。

類型轉(zhuǎn)換小結(jié):

1. 不同數(shù)字類型的變量之間賦值, 表示范圍更小的類型能隱式轉(zhuǎn)換成范圍較大的類型.
2. 如果需要把范圍大的類型賦值給范圍小的, 需要強(qiáng)制類型轉(zhuǎn)換, 但是可能精度丟失.
3. 將一個(gè)字面值常量進(jìn)行賦值的時(shí)候, Java 會(huì)自動(dòng)針對(duì)數(shù)字范圍進(jìn)行檢查.

3.2 數(shù)值提升

在這里插入圖片描述

結(jié)論: 當(dāng) int 和 long 混合運(yùn)算的時(shí)候, int 會(huì)提升成 long, 得到的結(jié)果仍然是 long 類型, 需要使用 long 類型的變量來(lái)
接收結(jié)果. 如果非要用 int 來(lái)接收結(jié)果, 就需要使用強(qiáng)制類型轉(zhuǎn)換.

再來(lái)看一個(gè)例子,前面在byte類型的時(shí)候就已經(jīng)說(shuō)到了,這里再詳細(xì)說(shuō)一下。

在這里插入圖片描述

結(jié)論: byte 和 byte 都是相同類型, 但是出現(xiàn)編譯報(bào)錯(cuò). 原因是, 雖然 a 和 b 都是 byte, 但是計(jì)算 a + b 會(huì)先將 a 和 b 都提升成 int, 再進(jìn)行計(jì)算, 得到的結(jié)果也是 int, 這時(shí)賦給 c, 就會(huì)出現(xiàn)上述錯(cuò)誤。

由于計(jì)算機(jī)的 CPU 通常是按照 4 個(gè)字節(jié)為單位從內(nèi)存中讀寫數(shù)據(jù). 為了硬件上實(shí)現(xiàn)方便, 諸如 byte 和 short 這種低于4 個(gè)字節(jié)的類型, 會(huì)先提升成 int, 再參與計(jì)算。
簡(jiǎn)單來(lái)說(shuō)類型提升就是為了加快cpu運(yùn)算速度

如果非要這樣計(jì)算,則需要強(qiáng)轉(zhuǎn)。

類型提升小結(jié):

1.不同類型的數(shù)據(jù)混合運(yùn)算, 范圍小的會(huì)提升成范圍大的.

2.對(duì)于 short, byte 這種比 4 個(gè)字節(jié)小的類型, 會(huì)先提升成 4 個(gè)字節(jié)的 int , 再運(yùn)算.

四、 int 和 String 之間的相互轉(zhuǎn)換

4.1 int轉(zhuǎn)String

public static void main(String[] args) {
            int a = 10;
            //方法1
            String str1 = 10+" ";
            //方法2
            String str2 = String.valueOf(a);
}

4.2 String轉(zhuǎn)int

public static void main(String[] args) {
            String str = "123456";
            int b = Integer.valueOf(str);
            int c = Integer.parseInt(str);
}

五、總結(jié)

在這里插入圖片描述

內(nèi)置數(shù)據(jù)類型共有8種,每一個(gè)內(nèi)置類型都會(huì)對(duì)應(yīng)一個(gè)包裝類,這里也不深入講解。簡(jiǎn)單來(lái)說(shuō)就是方便了數(shù)據(jù)的處理
感謝閱讀!

到此這篇關(guān)于java基礎(chǔ)詳解之?dāng)?shù)據(jù)類型知識(shí)點(diǎn)總結(jié)的文章就介紹到這了,更多相關(guān)java數(shù)據(jù)類型總結(jié)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 一次排查@CacheEvict注解失效的經(jīng)歷及解決

    一次排查@CacheEvict注解失效的經(jīng)歷及解決

    這篇文章主要介紹了一次排查@CacheEvict注解失效的經(jīng)歷及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • 單例模式的反射漏洞和反序列化漏洞代碼實(shí)例

    單例模式的反射漏洞和反序列化漏洞代碼實(shí)例

    這篇文章主要介紹了單例模式的反射漏洞和反序列化漏洞,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • java 動(dòng)態(tài)代理的方法總結(jié)

    java 動(dòng)態(tài)代理的方法總結(jié)

    這篇文章主要介紹了java 動(dòng)態(tài)代理的方法總結(jié)的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • 使用自定義參數(shù)解析器同一個(gè)參數(shù)支持多種Content-Type

    使用自定義參數(shù)解析器同一個(gè)參數(shù)支持多種Content-Type

    這篇文章主要介紹了使用自定義參數(shù)解析器同一個(gè)參數(shù)支持多種Content-Type的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • eclipse下整合springboot和mybatis的方法步驟

    eclipse下整合springboot和mybatis的方法步驟

    這篇文章主要介紹了eclipse下整合springboot和mybatis的方法步驟,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-03-03
  • 一文搞懂Java?ScheduledExecutorService的使用

    一文搞懂Java?ScheduledExecutorService的使用

    JUC包(java.util.concurrent)中提供了對(duì)定時(shí)任務(wù)的支持,即ScheduledExecutorService接口。本文主要對(duì)ScheduledExecutorService的使用進(jìn)行簡(jiǎn)單的介紹,需要的可以參考一下
    2022-11-11
  • JAVA中的 map,list,set

    JAVA中的 map,list,set

    這篇文章主要介紹了JAVA中的 map、list、set這三個(gè)集合,下面文章圍繞JAVA中的三大集合 map、list、set詳情講解,需要的朋友可以參考一下
    2021-11-11
  • java之左旋轉(zhuǎn)字符串介紹

    java之左旋轉(zhuǎn)字符串介紹

    java之左旋轉(zhuǎn)字符串介紹,需要的朋友可以參考一下
    2013-02-02
  • Springboot使用JustAuth實(shí)現(xiàn)各種第三方登陸

    Springboot使用JustAuth實(shí)現(xiàn)各種第三方登陸

    本文主要介紹了Springboot使用JustAuth實(shí)現(xiàn)各種第三方登陸,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • 一文帶你深入了解Guava的緩存機(jī)制

    一文帶你深入了解Guava的緩存機(jī)制

    緩存在現(xiàn)代編程中的作用非常大,它能提高應(yīng)用性能,減少數(shù)據(jù)庫(kù)壓力,簡(jiǎn)直就是性能優(yōu)化的利器,本文主要來(lái)和大家聊聊Google?Guava的緩存機(jī)制,感興趣的小伙伴可以了解下
    2023-12-12

最新評(píng)論

蓬溪县| 丘北县| 上思县| 武定县| 通城县| 信丰县| 时尚| 彰化县| 合阳县| 麦盖提县| 黎城县| 东源县| 新和县| 突泉县| 柳河县| 丹江口市| 伊吾县| 大同县| 沁阳市| 县级市| 柳州市| 邻水| 隆昌县| 营山县| 招远市| 河源市| 博湖县| 炉霍县| 隆回县| 平度市| 伊川县| 仪征市| 安西县| 定西市| 祁门县| 扬中市| 宜良县| 醴陵市| 务川| 辽宁省| 三门峡市|