Java自我学习第三章基础数据类型
Java的基本數(shù)據(jù)類型(掌握)
1、整型系列
(1)byte:字節(jié)類型
占內(nèi)存:1個(gè)字節(jié)
存儲(chǔ)范圍:-128~127
(2)short:短整型類型
占內(nèi)存:2個(gè)字節(jié)
存儲(chǔ)范圍:-32768~32767
(3)int:整型
占內(nèi)存:4個(gè)字節(jié)
存儲(chǔ)范圍:-2的31次方 ~ 2的31次方-1
(4)long:整型
占內(nèi)存:8個(gè)字節(jié)
存儲(chǔ)范圍:-2的63次方 ~ 2的63次方-1
注意:如果要表示某個(gè)常量數(shù)字它是long類型,那么需要在數(shù)字后面加L
byte b = 127; //右邊的整數(shù)必須在-128~127范圍內(nèi) long num = 1234567; //右邊的整數(shù)如果在int范圍呢,編譯和運(yùn)行都可以通過 long bigNum = 12345678912L;//右邊的整數(shù)如果超過int范圍,必須加L,否則編譯不通過2、浮點(diǎn)型系列(小數(shù))
(1)float:單精度浮點(diǎn)型
占內(nèi)存:4個(gè)字節(jié)
精度:科學(xué)記數(shù)法的小數(shù)點(diǎn)后6~7位
注意:如果要表示某個(gè)常量數(shù)字是float類型,那么需要在數(shù)字后面加F或f
(2)double:雙精度浮點(diǎn)型
占內(nèi)存:8個(gè)字節(jié)
精度:科學(xué)記數(shù)法的小數(shù)點(diǎn)后15~16位
float f = 12.0F;//右邊如果賦值小數(shù),那么必須加F或f3、單字符類型
char:字符類型
占內(nèi)存:2個(gè)字節(jié)
Java中使用的字符集:Unicode編碼集
字符常量的三種表示方式:
(1)'一個(gè)字符'
例如:'A','0','尚'
(2)轉(zhuǎn)義字符
\n:換行 \r:回車 \t:Tab鍵 \\:\ \":" \':' \b:刪除鍵Backspace(3)\u字符的Unicode編碼值的十六進(jìn)制型
例如:\u5c1a代表'尚'
char c = '尚';String s = '尚';//錯(cuò)誤的,哪怕是一個(gè)字符,也要使用雙引號(hào)char c2 = '';//錯(cuò)誤,單引號(hào)中有且只能有一個(gè)字符String s2 = "";//可以,雙引號(hào)中可以沒有其他字符,表示是空字符串(4)直接給char類型變量賦值十進(jìn)制的0~65535之間的Unicode編碼值
例如:'a'的編碼值是97
char c2 = 97; System.out.println(c2);//a在計(jì)算機(jī)的內(nèi)部都是二進(jìn)制的0、1數(shù)據(jù),如何讓計(jì)算機(jī)可以直接識(shí)別人類文字的問題呢?就產(chǎn)生出了編碼表的概念。
-
編碼表 :就是將人類的文字和一個(gè)十進(jìn)制數(shù)進(jìn)行對(duì)應(yīng)起來組成一張表格。例如:
| 字符 | 數(shù)值 |
| 1 | 48 |
| A | 65 |
| a | 95 |
-
將所有的英文字母,數(shù)字,符號(hào)都和十進(jìn)制進(jìn)行了對(duì)應(yīng),因此產(chǎn)生了世界上第一張編碼表ASCII(American Standard Code for Information Interchange 美國(guó)標(biāo)準(zhǔn)信息交換碼)。
-
Unicode(統(tǒng)一碼、萬國(guó)碼、單一碼)是計(jì)算機(jī)科學(xué)領(lǐng)域里的一項(xiàng)業(yè)界標(biāo)準(zhǔn),包括字符集、編碼方案等。Unicode 是為了解決傳統(tǒng)的字符編碼方案的局限而產(chǎn)生的,它為每種語言中的每個(gè)字符設(shè)定了統(tǒng)一并且唯一的二進(jìn)制編碼,以滿足跨語言、跨平臺(tái)進(jìn)行文本轉(zhuǎn)換、處理的要求。
-
4、布爾類型
boolean:只能存儲(chǔ)true或false
進(jìn)制(了解)
-
1、進(jìn)制的分類:
(1)十進(jìn)制
數(shù)字組成:0-9
進(jìn)位規(guī)則:逢十進(jìn)一
(2)二進(jìn)制
數(shù)字組成:0-1
進(jìn)位規(guī)則:逢二進(jìn)一
(3)八進(jìn)制
數(shù)字組成:0-7
進(jìn)位規(guī)則:逢八進(jìn)一
(4)十六進(jìn)制
數(shù)字組成:0-9,a~f(或A~F)
進(jìn)位規(guī)則:逢十六進(jìn)一
2、請(qǐng)分別用四種類型的進(jìn)制來表示10,并輸出它的結(jié)果:(了解)
(1)十進(jìn)制:正常表示
System.out.println(10);
(2)二進(jìn)制:0b或0B開頭
System.out.println(0B10);
(3)八進(jìn)制:0開頭
System.out.println(010);
(4)十六進(jìn)制:0x或0X開頭
System.out.println(0X10);
3、進(jìn)制轉(zhuǎn)換
-
十進(jìn)制數(shù)據(jù)轉(zhuǎn)成二進(jìn)制數(shù)據(jù):使用除以2獲取余數(shù)的方式
-
二進(jìn)制數(shù)據(jù)轉(zhuǎn)成十進(jìn)制數(shù)據(jù):
1 0 1 1 1 1 1 64 32 16 8 4 2 1 把64+32+16+8+4+2+1=75
-
字節(jié)(Byte):是計(jì)算機(jī)信息技術(shù)用于計(jì)量存儲(chǔ)容量的一種計(jì)量單位,通常情況下一字節(jié)等于有八位, 也表示一些計(jì)算機(jī)編程語言中的數(shù)據(jù)類型和語言字符。
-
位(bit):是數(shù)據(jù)存儲(chǔ)的最小單位。也就是二進(jìn)制。二進(jìn)制數(shù)系統(tǒng)中,每個(gè)0或1就是一個(gè)位,叫做bit(比特),其中8 bit 就稱為一個(gè)字節(jié)(Byte)。
-
轉(zhuǎn)換關(guān)系:
-
8 bit = 1 Byte
-
1024 Byte = 1 KB
-
1024 KB = 1 MB
-
1024 MB = 1 GB
-
1024 GB = 1 TB
-
4、為什么byte是-128~127?(理解)
1個(gè)字節(jié):8位
0000 0001 ~ 0111 111 ==> 1~127
1000 0001 ~ 1111 1111 ==> -127 ~ -1
0000 0000 ==>0
1000 0000 ==> -128(特殊規(guī)定)
解釋:計(jì)算機(jī)數(shù)據(jù)的存儲(chǔ)(了解)
計(jì)算機(jī)數(shù)據(jù)的存儲(chǔ)使用二進(jìn)制補(bǔ)碼形式存儲(chǔ),并且最高位是符號(hào)位,1是負(fù)數(shù),0是正數(shù)。
規(guī)定:正數(shù)的補(bǔ)碼與反碼、原碼一樣,稱為三碼合一;
負(fù)數(shù)的補(bǔ)碼與反碼、原碼不一樣:
負(fù)數(shù)的原碼:把十進(jìn)制轉(zhuǎn)為二進(jìn)制,然后最高位設(shè)置為1
負(fù)數(shù)的反碼:在原碼的基礎(chǔ)上,最高位不變,其余位取反(0變1,1變0)
負(fù)數(shù)的補(bǔ)碼:反碼+1
例如:byte類型(1個(gè)字節(jié),8位)
25 ==> 原碼 0001 1001 ==> 反碼 0001 1001 -->補(bǔ)碼 0001 1001
-25 ==>原碼 1001 1001 ==> 反碼1110 0110 ==>補(bǔ)碼 1110 0111
底層是用加法代替減法:-128==》-127-1==》-127+(-1)
127- -1 ==> -127 + 1
基本數(shù)據(jù)類型轉(zhuǎn)換(Conversion)
在Java程序中,不同的基本數(shù)據(jù)類型的值經(jīng)常需要進(jìn)行相互轉(zhuǎn)換。Java語言所提供的七種數(shù)值類型之間可以相互轉(zhuǎn)換,基本數(shù)據(jù)類型轉(zhuǎn)換有兩種轉(zhuǎn)換方式:自動(dòng)類型轉(zhuǎn)換和強(qiáng)制類型轉(zhuǎn)換。
1、自動(dòng)類型轉(zhuǎn)換(隱式類型轉(zhuǎn)換)
自動(dòng)轉(zhuǎn)換:
-
將取值范圍小的類型自動(dòng)提升為取值范圍大的類型 。
基本數(shù)據(jù)類型的轉(zhuǎn)換規(guī)則
(1)當(dāng)把存儲(chǔ)范圍小的值(常量值、變量的值、表達(dá)式計(jì)算的結(jié)果值)賦值給了存儲(chǔ)范圍大的變量時(shí), 會(huì)按照其中最大的類型運(yùn)算
int i = 'A';//char自動(dòng)升級(jí)為int
double d = 10;//int自動(dòng)升級(jí)為double
(2)當(dāng)存儲(chǔ)范圍小的數(shù)據(jù)類型與存儲(chǔ)范圍大的數(shù)據(jù)類型一起混合運(yùn)算時(shí),會(huì)按照其中最大的類型運(yùn)算
int i = 1;
byte b = 1;
double d = 1.0;
double sum = i + b + d;//混合運(yùn)算,升級(jí)為double
(3)當(dāng)byte,short,char數(shù)據(jù)類型進(jìn)行算術(shù)運(yùn)算時(shí),按照int類型處理
byte b1 = 1;
byte b2 = 2;
byte b3 = b1 + b2;//編譯報(bào)錯(cuò),b1 + b2自動(dòng)升級(jí)為int
char c1 = '0';
char c2 = 'A';
System.out.println(c1 + c2);//113?
(4)boolean類型不參與
? ? ? ? ?強(qiáng)制類型轉(zhuǎn)換(顯示類型轉(zhuǎn)換)
? ? ? ? ?將1.5 賦值到int 類型變量會(huì)發(fā)生什么?產(chǎn)生編譯失敗,肯定無法賦值
int i = 3.14; // 錯(cuò)誤
? ? ? ?想要賦值成功,只有通過強(qiáng)制類型轉(zhuǎn)換,將double 類型強(qiáng)制轉(zhuǎn)換成int 類型才能賦值。
-
強(qiáng)制類型轉(zhuǎn)換:將取值范圍大的類型強(qiáng)制轉(zhuǎn)換成取值范圍小的類型。
? ? ? ?比較而言,自動(dòng)轉(zhuǎn)換是Java自動(dòng)執(zhí)行的,而強(qiáng)制轉(zhuǎn)換需要我們自己手動(dòng)執(zhí)行。
? ??轉(zhuǎn)換格式
? ? ? ? ?數(shù)據(jù)類型 變量名 = (數(shù)據(jù)類型)被強(qiáng)轉(zhuǎn)數(shù)據(jù)值;
(1)當(dāng)把存儲(chǔ)范圍大的值(常量值、變量的值、表達(dá)式計(jì)算的結(jié)果值)賦值給了存儲(chǔ)范圍小的變量時(shí),需要強(qiáng)制類型轉(zhuǎn)換,提示:有風(fēng)險(xiǎn),可能會(huì)損失精度或溢出
int i = (int)3.14;//強(qiáng)制類型轉(zhuǎn)換,損失精度
double d = 1.2;
int num = (int)d;//損失精度
int i = 200;
byte b = (byte)i;//溢出
?
(2)boolean類型不參與
(3)當(dāng)某個(gè)值想要提升數(shù)據(jù)類型時(shí),也可以使用強(qiáng)制類型轉(zhuǎn)換
int i = 1;
int j = 2;
double shang = (double)i/j;
提示:這個(gè)情況的強(qiáng)制類型轉(zhuǎn)換是沒有風(fēng)險(xiǎn)的。
特殊的數(shù)據(jù)類型轉(zhuǎn)換
1、任意數(shù)據(jù)類型的數(shù)據(jù)與String類型進(jìn)行“+”運(yùn)算時(shí),結(jié)果一定是String類型
System.out.println("" + 1 + 2);//12
2、但是String類型不能通過強(qiáng)制類型()轉(zhuǎn)換,轉(zhuǎn)為其他的類型
String str = "123";
int num = (int)str;//錯(cuò)誤的
int num = Integer.parseInt(str);//后面才能講到,借助包裝類的方法才能轉(zhuǎn)
運(yùn)算符(Operator)
表達(dá)式:用運(yùn)算符連接起來的式子
| 分類 | 運(yùn)算符 |
| 算術(shù)運(yùn)算符 | +、-、*、/、%、++、-- |
| 賦值運(yùn)算符 | =、+=、-=、*=、/=、%=等 |
| 關(guān)系運(yùn)算符 | >、>=、<、<=、==、!= |
| 邏輯運(yùn)算符 | &、|、^、!、&&、|| |
| 三元運(yùn)算符 | (關(guān)系表達(dá)式)?結(jié)果1:結(jié)果2; |
| 位運(yùn)算符(了解) | &、|、~、^、<<、>>、>>> |
算術(shù)運(yùn)算符
| 算術(shù)運(yùn)算符 | 符號(hào)解釋 |
| + | 加法運(yùn)算,字符串連接運(yùn)算,正號(hào) |
| - | 減法運(yùn)算,負(fù)號(hào) |
| * | 乘法運(yùn)算 |
| / | 除法運(yùn)算 |
| % | 求余運(yùn)算,兩個(gè)數(shù)字相除的余數(shù) |
| ++、-- | 自增自減運(yùn)算 |
?
public class OperatorDemo01 {
?? ?public static void main(String[] args) {
?? ??? ?int a = 3;
?? ??? ?int b = 4;
?? ??? ?
?? ??? ?System.out.println(a + b);// 7
?? ??? ?System.out.println(a - b);// -1
?? ??? ?System.out.println(a * b);// 12
?? ??? ?System.out.println(a / b);// 計(jì)算機(jī)結(jié)果是0,為什么不是0.75呢?
?? ??? ?System.out.println(a % b);// 3
?? ?}
}
“+”號(hào)的兩種用法
-
第一種:對(duì)于+兩邊都是數(shù)值的話,+就是加法的意思
-
第二種:對(duì)于+兩邊至少有一邊是字符串得話,+就是拼接的意思
public class OperatorDemo02 {
?? ?public static void main(String[] args) {
?? ??? ?// 字符串類型的變量基本使用
?? ??? ?// 數(shù)據(jù)類型 變量名稱 = 數(shù)據(jù)值;
?? ??? ?String str1 = "Hello";
?? ??? ?System.out.println(str1); // Hello
?? ??? ?
?? ??? ?System.out.println("Hello" + "World"); // HelloWorld
?? ??? ?
?? ??? ?String str2 = "Java";
?? ??? ?// String + int --> String
?? ??? ?System.out.println(str2 + 520); // Java520
?? ??? ?// String + int + int
?? ??? ?// String?? ??? ?+ int
?? ??? ?// String
?? ??? ?System.out.println(str2 + 5 + 20); // Java520
?? ?}
}
?
自加自減運(yùn)算
理解:++ 運(yùn)算,變量自己的值加1。反之,-- 運(yùn)算,變量自己的值減少1,用法與++ 一致。
1、單獨(dú)使用
-
變量在單獨(dú)運(yùn)算的時(shí)候,變量前++和變量后++,變量的是一樣的;
-
變量前++ :例如 ++a 。
-
變量后++ :例如 a++ 。
public class OperatorDemo3 {
?? ?public static void main(String[] args) {
?? ??? ?// 定義一個(gè)int類型的變量a
?? ??? ?int a = 3;
?? ??? ?//++a;
?? ??? ?a++;
? ? ? ? // 無論是變量前++還是變量后++,結(jié)果都是4
?? ??? ?System.out.println(a);
?? ?}
}
2、復(fù)合使用
-
和其他變量放在一起使用或者和輸出語句放在一起使用,前++和后++就產(chǎn)生了不同。
-
變量前++ :變量先自身加1,然后再將加1后的結(jié)果進(jìn)行其他使用。
-
變量后++ :變量先拿去使用,然后再自身加1。
public class OperatorDemo03 {
?? ?public static void main(String[] args) {
?? ??? ?// 其他變量放在一起使用
?? ??? ?int x = 3;
?? ??? ?//int y = ++x; // y的值是4,x的值是4,
?? ??? ?int y = x++; // y的值是3,x的值是4
?? ??? ?
?? ??? ?System.out.println(x);
?? ??? ?System.out.println(y);
?? ??? ?System.out.println("==========");
? ? ? ??
?? ??? ?// 和輸出語句一起
?? ??? ?int z = 5;
?? ??? ?//System.out.println(++z);// 輸出結(jié)果是6,z的值也是6
?? ??? ?System.out.println(z++);// 輸出結(jié)果是5,z的值是6
?? ??? ?System.out.println(z);
? ? ? ??
? ? ? ? int a = 1;
? ? ? ? a = a++;//(1)先取a的值“1”放操作數(shù)棧(2)a再自增,a=2(3)再把操作數(shù)棧中的"1"賦值給a,a=1
? ? ? ? int i = 1;
? ? ? ? int j = i++ + ++i * i++;
? ? ? ? /*
? ? ? ? 從左往右加載
? ? ? ? (1)先算i++
? ? ? ? ①取i的值“1”放操作數(shù)棧
? ? ? ? ②i再自增 i=2
? ? ? ? (2)再算++i
? ? ? ? ①i先自增 i=3
? ? ? ? ②再取i的值“3”放操作數(shù)棧
? ? ? ? (3)再算i++
? ? ? ? ①取i的值“3”放操作數(shù)棧
? ? ? ? ②i再自增 i=4
? ? ? ? (4)先算乘法
? ? ? ? 用操作數(shù)棧中3 * 3 = 9,并把9壓會(huì)操作數(shù)棧
? ? ? ? (5)再算求和
? ? ? ? 用操作數(shù)棧中的 1 + 9 = 10
? ? ? ? (6)最后算賦值
? ? ? ? j = 10
? ? ? ? */
?? ?}?
}
小結(jié):
-
++在前,先自加,后使用;
-
++在后,先使用,后自加。
賦值運(yùn)算符
| 賦值運(yùn)算 | 符號(hào)解釋 |
| = | 將符號(hào)右邊的值,賦值給左邊的變量 |
| += | 將符號(hào)左邊的值和右邊的值進(jìn)行相加操作,最后將結(jié)果賦值給左邊的變量 |
| *= | 將符號(hào)左邊的值和右邊的值進(jìn)行相乘操作,最后將結(jié)果賦值給左邊的變量 |
| /= | 將符號(hào)左邊的值和右邊的值進(jìn)行相除操作,最后將結(jié)果賦值給左邊的變量 |
| %= | 將符號(hào)左邊的值和右邊的值進(jìn)行取余操作,最后將結(jié)果賦值給左邊的變量 |
| -= | 將符號(hào)左邊的值和右邊的值進(jìn)行相減操作,最后將結(jié)果賦值給左邊的變量 |
int a = 3;
?? ??? ?int b = 4;
?? ??? ?b += a;// 相當(dāng)于 b = b + a ;?
?? ??? ?System.out.println(a); // 3
?? ??? ?System.out.println(b); // 4?? ?
? ? ? ? int a = 3;
?? ??? ?int b = 4;
?? ??? ?b += a;// 相當(dāng)于 b = b + a ;?
?? ??? ?System.out.println(a); // 3
?? ??? ?System.out.println(b); // 4?? ?
?? ??? ?
?? ??? ?short s = 3;
?? ??? ?// s = s + 4; 代碼編譯報(bào)錯(cuò),因?yàn)閷nt類型的結(jié)果賦值給short類型的變量s時(shí),可能損失精度
?? ??? ?s += 4; // 代碼沒有報(bào)錯(cuò)
? ? ? ? //因?yàn)樵诘玫絠nt類型的結(jié)果后,JVM自動(dòng)完成一步強(qiáng)制類型轉(zhuǎn)換,將int類型強(qiáng)轉(zhuǎn)成short
?? ??? ?System.out.println(s);
? ? ? ??
? ? ? ? int j = 1;
?? ??? ?j += ++j * j++;//相當(dāng)于 ?j = j + (++j * j++);
?? ??? ?System.out.println(j);//5
在將最后的結(jié)果賦值給左邊的變量前,都做了一步強(qiáng)制類型轉(zhuǎn)換 .
關(guān)系運(yùn)算符(比較運(yùn)算符)
| 關(guān)系運(yùn)算符 | 符號(hào)解釋 |
| < | 比較符號(hào)左邊的數(shù)據(jù)是否小于右邊的數(shù)據(jù),如果小于結(jié)果是true。 |
| > | 比較符號(hào)左邊的數(shù)據(jù)是否大于右邊的數(shù)據(jù),如果大于結(jié)果是true。 |
| <= | 比較符號(hào)左邊的數(shù)據(jù)是否小于或者等于右邊的數(shù)據(jù),如果大于結(jié)果是false。 |
| >= | 比較符號(hào)左邊的數(shù)據(jù)是否大于或者等于右邊的數(shù)據(jù),如果小于結(jié)果是false。 |
| == | 比較符號(hào)兩邊數(shù)據(jù)是否相等,相等結(jié)果是true。 |
| != | 不等于符號(hào) ,如果符號(hào)兩邊的數(shù)據(jù)不相等,結(jié)果是true。 |
比較運(yùn)算符,是兩個(gè)數(shù)據(jù)之間進(jìn)行比較的運(yùn)算,運(yùn)算結(jié)果一定是boolean值true或者false 。
? ? ? ??int a = 3;
?? ??? ?int b = 4;
?? ??? ?System.out.println(a < b); // true
?? ??? ?System.out.println(a > b); // false
?? ??? ?System.out.println(a <= b); // true
?? ??? ?System.out.println(a >= b); // false
?? ??? ?System.out.println(a == b); // false
?? ??? ?System.out.println(a != b); // true
邏輯運(yùn)算符
| 邏輯運(yùn)算符 | 符號(hào)解釋 | 符號(hào)特點(diǎn) |
| & | 與,且 | 有false則false |
| | | 或 | 有true則true |
| ^ | 異或 | 相同為false,不同為true |
| ! | 非 | 非false則true,非true則false |
| && | 雙與,短路與 | 左邊為false,則右邊就不看 |
| || | 雙或,短路或 | 左邊為true,則右邊就不看 |
? ? ? ? int a = 3;
?? ??? ?int b = 4;
?? ??? ?int c = 5;
?? ??? ?// & 與,且;有false則false
?? ??? ?System.out.println((a > b) & (a > c)); // false & false
?? ??? ?System.out.println((a > b) & (a < c)); // false & false
?? ??? ?System.out.println((a < b) & (a > c)); // true & false
?? ??? ?System.out.println((a < b) & (a < c)); // true & true
?? ??? ?System.out.println("===============");
?? ??? ?// | 或;有true則true
?? ??? ?System.out.println((a > b) | (a > c)); // false | false
?? ??? ?System.out.println((a > b) | (a < c)); // false | false
?? ??? ?System.out.println((a < b) | (a > c)); // true | false
?? ??? ?System.out.println((a < b) | (a < c)); // true | true
?? ??? ?System.out.println("===============");
?? ??? ?// ^ 異或;相同為false,不同為true
?? ??? ?System.out.println((a > b) ^ (a > c)); // false ^ false
?? ??? ?System.out.println((a > b) ^ (a < c)); // false ^ false
?? ??? ?System.out.println((a < b) ^ (a > c)); // true ^ false
?? ??? ?System.out.println((a < b) ^ (a < c)); // true ^ true
?? ??? ?System.out.println("===============");
?? ??? ?// ! 非;非false則true,非true則false
?? ??? ?System.out.println(!false);
?? ??? ?System.out.println(!true);
&&和&區(qū)別,||和|區(qū)別
-
&&和&區(qū)別:
-
&&和&結(jié)果一樣,&&有短路效果,左邊為false,右邊不執(zhí)行;&左邊無論是什么,右邊都會(huì)執(zhí)行。
-
-
||和|區(qū)別:
-
||和|結(jié)果一樣,||有短路效果,左邊為true,右邊不執(zhí)行;|左邊無論是什么,右邊都會(huì)執(zhí)行。
-
三元運(yùn)算符(三目運(yùn)算符)
三元運(yùn)算符格式:
數(shù)據(jù)類型 變量名 = 關(guān)系表達(dá)式?結(jié)果1:結(jié)果2
三元運(yùn)算符計(jì)算方式:
-
條件判斷的結(jié)果是true,三元運(yùn)算符整體結(jié)果為結(jié)果1,賦值給變量。
-
判斷條件的結(jié)果是false,三元運(yùn)算符整體結(jié)果為結(jié)果2,賦值給變量。
? ? int i = (1==2 ? 100 : 200);
? ? System.out.println(i);//200
? ? int j = (3<=4 ? 500 : 600);
? ? System.out.println(j);//500
位運(yùn)算符(了解)
| 位運(yùn)算符 | 符號(hào)解釋 |
| & | 按位與,當(dāng)兩位相同時(shí)為1時(shí)才返回1 |
| | | 按位或,只要有一位為1即可返回1 |
| ~ | 按位非,將操作數(shù)的每個(gè)位(包括符號(hào)位)全部取反 |
| ^ | 按位異或。當(dāng)兩位相同時(shí)返回0,不同時(shí)返回1 |
| << | 左移運(yùn)算符 |
| >> | 右移運(yùn)算符 |
| >>> | 無符號(hào)右移運(yùn)算符 |
左移:<<
運(yùn)算規(guī)則:左移幾位就相當(dāng)于乘以2的幾次方
右移:>>
運(yùn)算規(guī)則:右移幾位就相當(dāng)于除以2的幾次方
無符號(hào)右移:>>>
運(yùn)算規(guī)則:往右移動(dòng)后,左邊空出來的位直接補(bǔ)0,不看符號(hào)位
按位與:&
運(yùn)算規(guī)則:
1 & 1 結(jié)果為1
1 & 0 結(jié)果為0
0 & 1 結(jié)果為0
0 & 0 結(jié)果為0
按位或:|
運(yùn)算規(guī)則:
1 | 1 結(jié)果為1
1 | 0 結(jié)果為1
0 | 1 結(jié)果為1
0 & 0 結(jié)果為0
按位異或:^
運(yùn)算規(guī)則:
1 ^ 1 結(jié)果為0
1 ^ 0 結(jié)果為1
0 ^ 1 結(jié)果為1
0 ^ 0 結(jié)果為0
按位取反:~
運(yùn)算規(guī)則:~0就是1
~1就是0
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的Java自我学习第三章基础数据类型的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: dita编写工具有哪些_我们已经有了美好
- 下一篇: 【天天Java系列】02_变量与运算符