?1.字面常量
常量是在程序運(yùn)行期間,固定不變的量稱為常量。
public class HelloWorld{
public static void main(String[] args){
System.out.println("Hello,world");
}
}
在以上程序中,輸出的Hello Word,其中的“Hello Word”就是字面常量。
字面常量的分類:
- 字符串常量
- 整形常量
- 浮點(diǎn)數(shù)常量
- 字符常量
- 布爾常量
- 空常量
注意:字符串,整形,浮點(diǎn)型,字符型以及布爾型,在Java中都稱為數(shù)據(jù)類型。
2.數(shù)據(jù)類型
在java中數(shù)據(jù)類型主要分為兩類:基本數(shù)據(jù)類型和引用數(shù)據(jù)類型
基本數(shù)據(jù)類型有四類八種
1.四類:整形,浮點(diǎn)型,字符型以及布爾型
2.八種
?注意:
- 不論是在16位系統(tǒng)還是32位系統(tǒng),int都占用4個(gè)字節(jié),long都占8個(gè)字節(jié)
- 整形和浮點(diǎn)型都是帶有符號(hào)的
- 整型默認(rèn)為int型,浮點(diǎn)型默認(rèn)為double
- 字符串屬于引用類型,該中類型后序介紹
總結(jié):不管你是在多少位操作系統(tǒng)下,這個(gè)數(shù)據(jù)類型所占的字節(jié)數(shù)都是一樣的,這就是java的可移植性。
3.變量
3.1變量的概念
????????簡(jiǎn)單來說變量就是可以改變的量,在我們的日常生活中有很多值是需要改變的,比如說年齡,身高,成績(jī)分?jǐn)?shù)等等,在這個(gè)時(shí)候就要通過不同的數(shù)據(jù)類型來定義不同的變量。
3.2語法格式
定義變量的語法格式為:
數(shù)據(jù)類型? ?變量名? =? 初始值;
比如:
int a = 10; // 定義整形變量a,a是變量名也稱為標(biāo)識(shí)符,該變量中放置的值為10
3.3整型變量
public class test {
public static void main(String[] args){
int a = 10;
System.out.println(a);
}
}
注意事項(xiàng):
1.int無論在任何操作系統(tǒng)下都是4個(gè)字節(jié)。
2.在給變量設(shè)置初始值時(shí),值不能超過int的表示范圍,否則會(huì)溢出。
3.變量在使用之前必須要賦初值,否則編譯報(bào)錯(cuò)。
4.int的包裝類型為Integer
5.java所有的數(shù)據(jù)類型都是有符號(hào)的,沒有無符號(hào)這個(gè)說法。
長(zhǎng)整型變量
public class test {
public static void main(String[] args){
long a = 10L;
System.out.println(a);
}
}
注意事項(xiàng):
1.為了區(qū)分int和long,一般建議在初始值后面加上有個(gè)L?
2.長(zhǎng)整型在所有操作系統(tǒng)下都占8個(gè)字節(jié)
3.long的包裝類型為L(zhǎng)ong
短整型變量
public class test {
public static void main(String[] args){
short a = 10;
System.out.println(a);
}
}
注意事項(xiàng):
?1. short在任何系統(tǒng)下都占2個(gè)字節(jié)
2. short的表示范圍為:-32768 ~ 32767
3. 使用時(shí)注意不要超過范圍(一般使用比較少)
4. short的包裝類型為Short
字節(jié)型變量
public class test {
public static void main(String[] args){
byte a = 10;
System.out.println(a);
}
}
注意事項(xiàng):
1. byte在任何系統(tǒng)下都占1個(gè)字節(jié)
2. byte的范圍是:-128 ~ 127
3. 字節(jié)的包裝類型為Byte
可以通過這兩條語句分別打印最大值和最小值
3.4 浮點(diǎn)型變量
雙精度浮點(diǎn)型
double d = 3.14;
System.Out.println(d);
在下面這個(gè)代碼中會(huì)輸出0.5嗎?
int a = 1;
int b = 2;
System.out.println(a / b);
?肯定不會(huì)啊,在java中,int 除以 int 的值仍然是 int(會(huì)直接舍棄小數(shù)部分)。如果想得到 0.5, 需要使用 double 類型計(jì)算。
這個(gè)代碼的運(yùn)行結(jié)果是什么?
double num = 1.1;
System.out.println(num * num);
執(zhí)行結(jié)果為
1.2100000000000002
注意事項(xiàng):
1. double在任何系統(tǒng)下都占8個(gè)字節(jié)
2. 浮點(diǎn)數(shù)與整數(shù)在內(nèi)存中的存儲(chǔ)方式不同,不能單純使用 的形式來計(jì)算
3. double的包裝類型為Double
4. double 類型的內(nèi)存布局遵守 IEEE 754 標(biāo)準(zhǔn)(和C語言一樣), 嘗試使用有限的內(nèi)存空間表示可能無限的小數(shù), 勢(shì)必會(huì)存在一定的精度誤差,因此浮點(diǎn)數(shù)是個(gè)近似值,并不是精確值。
單精度浮點(diǎn)型
float num = 1.0f; // 寫作 1.0F 也可以
System.out.println(num);
?float 類型在 Java 中占四個(gè)字節(jié), 同樣遵守 IEEE 754 標(biāo)準(zhǔn). 由于表示的數(shù)據(jù)精度范圍較小, 一般在工程上用到浮點(diǎn)數(shù)都優(yōu)先考慮 double, 不太推薦使用 float. float的包裝類型為Float。
3.5字符型變量
char c1 = 'A'; // 大寫字母
char c2 = '1'; // 數(shù)字字符
System.out.println(c1);
System.out.println(c2);
// 注意:java中的字符可以存放整形
char c3 = '帥';
System.out.println(c3);
3.6布爾型數(shù)據(jù)
布爾類型只能用來表示真假,類似網(wǎng)絡(luò)用語:“尊都假都”。
boolean b = true;
System.out.println(b);
b = false;
System.out.println(b);
注意事項(xiàng):?
1. boolean 類型的變量只有兩種取值, true 表示真, false 表示假.
2. Java 的 boolean 類型和 int 不能相互轉(zhuǎn)換, 不存在 1 表示 true, 0 表示 false 這樣的用法
3. Java虛擬機(jī)規(guī)范中,并沒有明確規(guī)定boolean占幾個(gè)字節(jié),也沒有專門用來處理boolean的字節(jié)碼指令,在Oracle公司的虛擬機(jī)實(shí)現(xiàn)中,boolean占1個(gè)字節(jié)。
4. boolean的包裝類型為Boolean
3.7類型轉(zhuǎn)換
Java 作為一個(gè)強(qiáng)類型編程語言, 當(dāng)不同類型之間的變量相互賦值的時(shí)候, 會(huì)有教嚴(yán)格的校驗(yàn)
比如說:
int a = 10;
long b = 100L;
b = a; // 可以通過編譯
a = b; // 編譯失敗
在java中,當(dāng)參與運(yùn)算的數(shù)據(jù)類型不一致時(shí),就會(huì)進(jìn)行類型轉(zhuǎn)換。
主要可以分為兩種轉(zhuǎn)換:自動(dòng)類型轉(zhuǎn)換(隱式),強(qiáng)制類型轉(zhuǎn)換(顯示)。
自動(dòng)類型轉(zhuǎn)換:就是當(dāng)你不知道的情況下編譯器會(huì)幫你把這些事情給做了。
強(qiáng)制類型轉(zhuǎn)換:當(dāng)數(shù)據(jù)類型由大到小時(shí),需要強(qiáng)轉(zhuǎn),否則會(huì)編譯失敗。
注意事項(xiàng):
1. 不同數(shù)字類型的變量之間賦值, 表示范圍更小的類型能隱式轉(zhuǎn)換成范圍較大的類型
2. 如果需要把范圍大的類型賦值給范圍小的, 需要強(qiáng)制類型轉(zhuǎn)換, 但是可能精度丟失
3. 將一個(gè)字面值常量進(jìn)行賦值的時(shí)候, Java 會(huì)自動(dòng)針對(duì)數(shù)字范圍進(jìn)行檢查
4. 強(qiáng)制類型轉(zhuǎn)換不一定能成功,不相干的類型不能互相轉(zhuǎn)換
3.8類型提升
不同類型的數(shù)據(jù)之間相互運(yùn)算時(shí),數(shù)據(jù)類型小的會(huì)被提升到數(shù)據(jù)類型大的
?int a = 10;
long b = 20;
int c = a + b; // 編譯出錯(cuò): a + b==》int + long--> long + long 賦值給int時(shí)會(huì)丟失數(shù)據(jù)
long d = a + b; // 編譯成功:a + b==>int + long--->long + long 賦值給long
結(jié)論:
?1. 不同類型的數(shù)據(jù)混合運(yùn)算, 范圍小的會(huì)提升成范圍大的.
?2. 對(duì)于 short, byte 這種比 4 個(gè)字節(jié)小的類型, 會(huì)先提升成 4 個(gè)字節(jié)的 int , 再運(yùn)算
4.字符串類型?
在Java中使用String類定義字符串類型,比如
?
public static void main(String[] args) {
String s1 = "hello";
String s2 = " world";
System.out.println(s1);
System.out.println(s2);
System.out.println(s1+s2); // s1+s2表示:將s1和s2進(jìn)行拼接
}
本節(jié)對(duì)只是對(duì)字符串進(jìn)行簡(jiǎn)單的介紹,大家能夠正常使用即可,后序會(huì)詳細(xì)給大家介紹
?
5.什么是運(yùn)算符
作為一門計(jì)算機(jī)語言,java也提供了一套豐富的運(yùn)算符來操縱變量。Java中運(yùn)算符可以分為以下:算數(shù)運(yùn)算符( + - * /),關(guān)系運(yùn)算符(< > == ),邏輯運(yùn)算符,位運(yùn)算符,移位運(yùn)算符以及條件運(yùn)算符等。
6.算數(shù)運(yùn)算符
1.基本四則運(yùn)算符:加減乘除( + - * / %)
int a = 20;
int b = 10;
System.out.println(a + b); // 30
System.out.println(a - b); // 10
System.out.println(a * b); // 200
System.out.println(a / b); // 2
System.out.println(a % b); // 0 --->模運(yùn)算相當(dāng)于數(shù)學(xué)中除法的余數(shù)
2.賦值運(yùn)算符
這種類型運(yùn)算符操作完成后,會(huì)將操縱的結(jié)果賦值給左操作數(shù)。
int a = 1;
a += 2; // 相當(dāng)于 a = a + 2
System.out.println(a); // 輸出3
a -= 1; // 相當(dāng)于 a = a - 1
System.out.println(a); // 輸出2
a *= 3; // 相當(dāng)于 a = a * 3
System.out.println(a); // 輸出6
a /= 3; // 相當(dāng)于 a = a / 3
System.out.println(a); // 輸出2
a %= 3; // 相當(dāng)于 a = a % 2
System.out.println(a); // 輸出2
3.自增 / 自減運(yùn)算符
+ +是給變量的值+1,- -是給變量的值減1.
int a = 1;
a++; // 后置++ 表示給a的值加1,此時(shí)a的值為2
System.out.println(a++); // 注意:后置++是先使用變量原來值,表示式結(jié)束時(shí)給變量+1,因此輸出2
System.out.println(a); // 輸出3
++a; // 前置++ 表示給a的值加1
System.out.println(++a); // 注意:前置++是先給變量+1,然后使用變量中的值,因此輸出5
System.out.println(a); // 輸出5
// --操作符給操作-1,與++含義類似
注意:
如果單獨(dú)使用,【前置++】和【后置++】沒有任何區(qū)別
如果混合使用,【前置++】先+1,然后使用變量+1之后的值,【后置++】先使用變量原來的值,表達(dá)式結(jié)束時(shí)給變量+1
只有變量才能使用自增/自減運(yùn)算符,常量不能使用,因?yàn)槌A坎辉试S被修改
7.關(guān)系運(yùn)算符
關(guān)系運(yùn)算符主要有六個(gè): ==? !=? < >? <=? >= ,其計(jì)算結(jié)果是 true 或者 false
int a = 10;
int b = 20;
// 注意:在Java中 = 表示賦值,要與數(shù)學(xué)中的含義區(qū)分
// 在Java中 == 表示相等
System.out.println(a == b); // false
System.out.println(a != b); // true
System.out.println(a < b); // true
System.out.println(a > b); // false
System.out.println(a <= b); // true
System.out.println(a >= b); // false
注意:當(dāng)需要多次判斷時(shí),不能連著寫,比如:3 < a < 5,Java程序與數(shù)學(xué)中是有區(qū)別的
?
8.邏輯運(yùn)算符?
邏輯運(yùn)算符主要有三個(gè):&&? ||? !,運(yùn)算結(jié)果都是boolean類型。
1.邏輯&&
語法規(guī)則:表達(dá)式一? &&? 表達(dá)式二,左右表達(dá)式必須是boolean類型的結(jié)果。
兩個(gè)表達(dá)式都為真,結(jié)果才是真,只要有一個(gè)是假,結(jié)果就是假。
int a = 1;
int b = 2;
System.out.println(a == 1 && b == 2); // 左為真 且 右為真 則結(jié)果為真
System.out.println(a == 1 && b > 100); // 左為真 但 右為假 則結(jié)果為假
System.out.println(a > 100 && b == 2); // 左為假 但 右為真 則結(jié)果為假
System.out.println(a > 100 && b > 100); // 左為假 且 右為假 則結(jié)果為假
2.邏輯 | |
?語法規(guī)則:表達(dá)式1 || 表達(dá)式2,左右表達(dá)式必須是boolean類型的結(jié)果。
?兩個(gè)表達(dá)式都為假,結(jié)果才是假,只要有一個(gè)是真,結(jié)果就是真。
int a = 1;
int b = 2;
System.out.println(a == 1 || b == 2); // 左為真 且 右為真 則結(jié)果為真
System.out.println(a == 1 || b > 100); // 左為真 但 右為假 則結(jié)果也為真
System.out.println(a > 100 || b == 2); // 左為假 但 右為真 則結(jié)果也為真
System.out.println(a > 100 || b > 100); // 左為假 且 右為假 則結(jié)果為假
3.邏輯非
語法規(guī)則: !表達(dá)式
真變假,假變真
int a = 1;
System.out.println(!(a == 1)); // a == 1 為true,取個(gè)非就是false
System.out.println(!(a != 1)); // a != 1 為false,取個(gè)非就是true
4.短路求值?
&& 和 || 遵循短路求值規(guī)則。
System.out.println(10 > 20 && 10 / 0 == 0); // 打印 false
System.out.println(10 < 20 || 10 / 0 == 0); // 打印 true
?我們都知道, 計(jì)算 10 / 0 會(huì)導(dǎo)致程序拋出異常. 但是上面的代碼卻能正常運(yùn)行, 說明 10 / 0 并沒有真正被求值。
注意:
- 對(duì)于 && , 如果左側(cè)表達(dá)式值為 false, 則表達(dá)式結(jié)果一定是 false, 無需計(jì)算右側(cè)表達(dá)式.
- 對(duì)于 ||, 如果左側(cè)表達(dá)式值為 true, 則表達(dá)式結(jié)果一定是 true, 無需計(jì)算右側(cè)表達(dá)式.
- & 和 | 如果表達(dá)式結(jié)果為 boolean 時(shí), 也表示邏輯運(yùn)算. 但與 && || 相比, 它們不支持短路求值.
System.out.println(10 > 20 & 10 / 0 == 0); // 程序拋出異常
System.out.println(10 < 20 | 10 / 0 == 0); // 程序拋出異常
9.條件運(yùn)算符?
條件運(yùn)算符只有一個(gè):
表達(dá)式1 ? 表達(dá)式2 : 表達(dá)式3
當(dāng) 表達(dá)式1 的值為 true 時(shí), 整個(gè)表達(dá)式的值為 表達(dá)式2 的值;
當(dāng) 表達(dá)式1 的值為 false 時(shí), 整個(gè)表達(dá)式的值為 表達(dá)式3 的值.
也是 Java 中唯一的一個(gè) 三目運(yùn)算符, 是條件判斷語句的簡(jiǎn)化寫法
?文章來源:http://www.zghlxwxcb.cn/news/detail-719367.html
// 求兩個(gè)整數(shù)的最大值
int a = 10;
int b = 20;
int max = a > b ? a : b文章來源地址http://www.zghlxwxcb.cn/news/detail-719367.html
到了這里,關(guān)于Java數(shù)據(jù)類型,變量與運(yùn)算符的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!