java數(shù)據(jù)類型和運(yùn)算符的深入講解
一.整型變量
1.基本格式
int 變量名 = 初始值;
代碼示例:
public class CSDN { public static void main(String[] args) { int a=10; System.out.println(a); } }
2.java中的int是4個(gè)字節(jié)。
3.java中int的最大值和最小值
如果數(shù)大于0,則最高位為0,如果數(shù)小于0,則最高位為1。在判斷數(shù)值范圍時(shí),不用考慮負(fù)數(shù)采用補(bǔ)碼形式存儲(chǔ),因?yàn)檠a(bǔ)碼和原碼是一一對(duì)應(yīng)的。當(dāng)最高位是1,即為負(fù)數(shù),后面最多還有31個(gè)1,而這31個(gè)1的加值之和為2的31次方-1,而負(fù)數(shù)最高位也為1,該位在再次進(jìn)位時(shí)仍滿足負(fù)數(shù)的條件,即可將最高位看成數(shù)值位,故最小值為-2的31次方,最大值整數(shù)最高位必須一值為1,且原碼等于補(bǔ)碼,這就限制了整數(shù)的最大值31位的1相加,之和為2^31-1。
public class CSDN{ public static void main(String[] args) { int a = 10; System.out.println(Integer.MAX.VALUE); System.out.println(Integer.MIN.VALUE); } }
4.如果一個(gè)局部變量,沒(méi)有進(jìn)行初始化則不能使用他。
標(biāo)識(shí)符可以包含:數(shù)字 字母 下劃線 符 , 但 開 頭 不 能 用 數(shù) 字 , 不 建 議 用 下 劃 線 和 符,但開頭不能用數(shù)字,不建議用下劃線和 符,但開頭不能用數(shù)字,不建議用下劃線和.
二. 長(zhǎng)整型變量
定義一個(gè)長(zhǎng)整型,數(shù)字后面必須加L
public static void main(String[] args) { Long a = 10L; System.out.println(a); }
java與c語(yǔ)言不同,沒(méi)有所謂的無(wú)符號(hào),Long有8個(gè)字節(jié),64個(gè)比特位,首位是符號(hào)位。
如果想打印漢字的話用加號(hào)拼接。
public static void main(String[] args) { Long a = 10L; System.out.println(a); System.out.println("a的值是:"+a);//打印漢字用引號(hào)括起來(lái)然后用加號(hào)拼接
任何類型的數(shù)據(jù)和字符串進(jìn)行拼接,結(jié)果就是字符串。
三.雙精度浮點(diǎn)類型
public static void main(String[] args) { //雙精度浮點(diǎn)型 double d = 12.5; System.out.println(d); }
小數(shù)默認(rèn)為雙精度類型。
public static void main(String[] args) { int a = 1; int b = 2; System.out.println(a / b); } //輸出結(jié)果是0
因?yàn)閍和b都是整型,所以打印的也是整型,不能保存小數(shù)。
public static void main(String[] args) {, double num = 1.1; System.out.println(num * num) // 執(zhí)行結(jié)果=1.2100000000000002 }
任何的小數(shù)都是有精度的,沒(méi)有精確值,只有一個(gè)范圍,要研究這個(gè)問(wèn)題需要了解浮點(diǎn)數(shù)在內(nèi)存中的存儲(chǔ)。
一般情況下,遇到小數(shù),建議使用double
四.單精度的浮點(diǎn)類型
float是4個(gè)字節(jié),不能把double類型放在float類型里,會(huì)編譯錯(cuò)誤,需要在小數(shù)后面加個(gè)f,體現(xiàn)了Java的安全。
public static void main(String[] args) { float f = 12.3; System.out.println(f); }
五.字符數(shù)據(jù)類型
在java中char占兩個(gè)字節(jié),在c語(yǔ)言中是占一個(gè)字節(jié)的。
public static void main(String[] args) { char ch = 'a'; System.out.println(ch); char ch2 = 97; System.out.println(ch2); }
在java中遵循unicode字符集類似于c語(yǔ)言中的asii值,但unicode表示字符的范圍更廣了。
六.字節(jié)類型
注意事項(xiàng):
- 字節(jié)類型表示的也是整數(shù). 只占一個(gè)字節(jié), 表示范圍較小 ( -128 -> +127 )
- 字節(jié)類型和字符類型互不相干。
public static void main(String[] args) { byte b = 12; byte c = 21; System.out.println(b+" "+c); }
每一種數(shù)據(jù)類型在賦值的時(shí)候不能超過(guò)其范圍,否則會(huì)報(bào)錯(cuò)。
七.短整型
short是兩個(gè)字節(jié),取值范圍是-32768到32767.
這個(gè)表示范圍較小,一般不建議使用。
public static void main(String[] args) { short sh = 12; System.out.println(sh); }
八.布爾類型
布爾類型:
1.在java中,布爾類型沒(méi)有明確的大小。
2.在java中,布爾類型只有兩個(gè)取值,true和false。
3.在java中,沒(méi)有所謂的0是假,非0是真。
public static void main(String[] args) { boolean flag = true; System.out.println(flg); }
總結(jié):
java中8種基本的數(shù)據(jù)類型分別是一下的:
1 2 2 4 8 4 8
byte char short int long float double boolean
Byte Character Short Integer Long Float Double Boolean
字符串類型變量
字符串類型用String進(jìn)行定義
注意事項(xiàng):
- Java 使用 雙引號(hào) + 若干字符 的方式表示字符串字面值.
- 和上面的類型不同, String 不是基本類型, 而是引用類型(后面重點(diǎn)解釋).
- 字符串中的一些特定的不太方便直接表示的字符需要進(jìn)行轉(zhuǎn)義.
字符串的 + 操作, 表示字符串拼接:
String a = "hello"; String b = "world"; String c = a + b; System.out.println(c);
以上代碼說(shuō)明, 當(dāng)一個(gè) + 表達(dá)式中存在字符串的時(shí)候, 都是執(zhí)行字符串拼接行為.
因此我們可以很方便的使用 System.out.println 同時(shí)打印多個(gè)字符串或數(shù)字。
理解數(shù)值提升
int 和 long 混合運(yùn)算
int a = 10; long b = 20; int c = a + b; // 編譯出錯(cuò), 提示將 long 轉(zhuǎn)成 int 會(huì)丟失精度 long d = a + b; // 編譯通過(guò)
結(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)換.
byte 和 byte 的運(yùn)算
byte a = 10; byte b = 20; byte c = a + b; System.out.println(c); // 編譯報(bào)錯(cuò) Test.java:5: 錯(cuò)誤: 不兼容的類型: 從int轉(zhuǎn)換到byte可能會(huì)有損失 byte c = a + b;
結(jié)論: byte 和 byte 都是相同類型, 但是出現(xiàn)編譯報(bào)錯(cuò). 原因是, 雖然 a 和 b 都是 byte, 但是計(jì)算 a + b 會(huì)先將 a 和 b 都提升成 int, 再進(jìn)行計(jì)算, 得到的結(jié)果也是 int, 這是賦給 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é):
- 不同類型的數(shù)據(jù)混合運(yùn)算, 范圍小的會(huì)提升成范圍大的.
- 對(duì)于 short, byte 這種比 4 個(gè)字節(jié)小的類型, 會(huì)先提升成 4 個(gè)字節(jié)的 int , 再運(yùn)算.
int 和 String 之間的相互轉(zhuǎn)換
int 轉(zhuǎn)成 String
int num = 10; // 方法1 String str1 = num + ""; // 方法2 String str2 = String.valueOf(num);
String 轉(zhuǎn)成 int
String str = "100"; int num = Integer.parseInt(str);
運(yùn)算符
1.基本四則運(yùn)算符 + - * / %
規(guī)則比較簡(jiǎn)單,值得注意的是除法
a) int / int 結(jié)果還是 int, 需要使用 double 來(lái)計(jì)算
b) 0 不能作為除數(shù)
2.關(guān)系運(yùn)算符返回類型都是boolean類型。
3.移位運(yùn)算符
左移 <<: 最左側(cè)位不要了, 最右側(cè)補(bǔ) 0。
右移 >>: 最右側(cè)位不要了, 最左側(cè)補(bǔ)符號(hào)位(正數(shù)補(bǔ)0, 負(fù)數(shù)補(bǔ)1)
注意:
- 左移 1 位, 相當(dāng)于原數(shù)字 * 2. 左移 N 位, 相當(dāng)于原數(shù)字 * 2 的N次方.
- 右移 1 位, 相當(dāng)于原數(shù)字 / 2. 右移 N 位, 相當(dāng)于原數(shù)字 / 2 的N次方.
- 由于計(jì)算機(jī)計(jì)算移位效率高于計(jì)算乘除, 當(dāng)某個(gè)代碼正好乘除 2 的N次方的時(shí)候可以用移位運(yùn)算代替.
- 移動(dòng)負(fù)數(shù)位或者移位位數(shù)過(guò)大都沒(méi)有意義。
總結(jié)
到此這篇關(guān)于java數(shù)據(jù)類型和運(yùn)算符的文章就介紹到這了,更多相關(guān)java數(shù)據(jù)類型和運(yùn)算符內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SkyWalking?自定義插件(Spring?RabbitMQ)具體分析過(guò)程
這篇文章主要介紹了SkyWalking?自定義插件(Spring?RabbitMQ)具體分析過(guò)程,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-02-02Java Socket實(shí)現(xiàn)猜數(shù)字小游戲
這篇文章主要為大家詳細(xì)介紹了Java Socket實(shí)現(xiàn)猜數(shù)字小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-09-09SpringBoot 整合Redisson重寫cacheName支持多參數(shù)的案例代碼
這篇文章主要介紹了SpringBoot 整合Redisson重寫cacheName支持多參數(shù),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2024-01-01java Date裝成英文String后,無(wú)法再轉(zhuǎn)回Date的解決方案
本文介紹了java Date裝成英文String后,無(wú)法再轉(zhuǎn)回Date的解決方案。具有一定的參考價(jià)值,下面跟著小編一起來(lái)看下吧2017-01-01SpringBoot整合mybatis-plus快速入門超詳細(xì)教程
mybatis-plus 是一個(gè) Mybatis 的增強(qiáng)工具,在 Mybatis 的基礎(chǔ)上只做增強(qiáng)不做改變,為簡(jiǎn)化開發(fā)、提高效率而生,本文給大家分享SpringBoot整合mybatis-plus快速入門超詳細(xì)教程,一起看看吧2021-09-09一小時(shí)迅速入門Mybatis之bind與多數(shù)據(jù)源支持 Java API
這篇文章主要介紹了一小時(shí)迅速入門Mybatis之bind與多數(shù)據(jù)源支持 Java API,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09Spring實(shí)現(xiàn)動(dòng)態(tài)切換多數(shù)據(jù)源的解決方案
這篇文章主要給大家介紹了Spring實(shí)現(xiàn)動(dòng)態(tài)切換多數(shù)據(jù)源的解決方案,文中給出了詳細(xì)的介紹和示例代碼,相信對(duì)大家的理解和學(xué)習(xí)具有一定的參考借鑒價(jià)值,有需要的朋友可以參考學(xué)習(xí),下面來(lái)一起看看吧。2017-01-01Java正則表達(dá)式處理特殊字符轉(zhuǎn)義的方法
由于正則表達(dá)式定了一些特殊字符,而有時(shí)候需要對(duì)這些特殊字符進(jìn)行匹配的話就需要進(jìn)行轉(zhuǎn)義了,下面這篇文章主要給大家介紹了Java正則表達(dá)式處理特殊字符轉(zhuǎn)義的方法,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-01-01