HelloWord
在 Java系列(一) 中知道了什么是java及如何搭建java開發(fā)環(huán)境插龄。系列二主要介紹Java的一些數(shù)據(jù)類型和運(yùn)算符暮胧,在此之前萬年不變老規(guī)矩HelloWord的流程必須走一下删铃。
用記事本寫java的第一個(gè)程序Hello Word !
public class HelloWord{
public static void main(String[] args){ //Java程序入口沙咏,程序從這里開始執(zhí)行
System.out.println("Hello Word!"); //控制臺(tái)打印一條語句
}
}
保存為文件HelloWord.java肮疗,注意文件擴(kuò)展名為.java漱抓,證明這是一個(gè)java 文件。
命令行進(jìn)入到HelloWord的文件路徑下精钮,首先用javac HelloWord.java
命令進(jìn)行編譯威鹿,將java文件編譯成字節(jié)碼.class文件,會(huì)發(fā)現(xiàn)文件夾下多出來一個(gè)HelloWord.class文件轨香。然后用java HelloWord
命令運(yùn)行這個(gè)文件就會(huì)在控制臺(tái)輸出Hello Word忽你!
注意用java運(yùn)行命令時(shí) HelloWord后面不要.class后綴名,不要問為什么臂容,這是規(guī)定記住即可科雳。由此Java第一個(gè)程序我們就已經(jīng)編寫運(yùn)行完成根蟹。
接下來學(xué)習(xí)Java的一些數(shù)據(jù)類型和運(yùn)算符
標(biāo)識(shí)符和關(guān)鍵字
java和其他編程語言一樣,需要用一些標(biāo)識(shí)符作為變量糟秘、對(duì)象的名字简逮,也提供了許多關(guān)鍵字實(shí)現(xiàn)一些特定的功能。
分割符
Java語言中的分號(hào)(;)尿赚、花括號(hào)({ })散庶、方括號(hào)([ ])、圓括號(hào)(( ))凌净、點(diǎn)(.)悲龟、空格都具有特殊的分割意義,這些符號(hào)被統(tǒng)稱為分割符號(hào)冰寻。
標(biāo)識(shí)符
標(biāo)識(shí)符就是用來給程序中變量须教、類、方法命名的符號(hào)斩芭,它需要遵守一些規(guī)則:
- 標(biāo)識(shí)符可以由數(shù)字除外的字母轻腺、下劃線、美元符號(hào)($)開頭秒旋,后面可接任意的數(shù)字约计、字母、下劃線迁筛、美元符號(hào)煤蚌。
- 標(biāo)識(shí)符中間不能有空格。
- 標(biāo)識(shí)符不能和關(guān)鍵字一樣细卧。
關(guān)鍵字
java中有一些特殊的單詞被用來實(shí)現(xiàn)特殊的功能尉桩,這些單詞稱為關(guān)鍵字。一共有53個(gè)贪庙,具體可查看關(guān)鍵字蜘犁。
數(shù)據(jù)類型
Java是一門強(qiáng)類型語言,什么是強(qiáng)類型呢止邮?意思是每個(gè)變量和表達(dá)式在編譯時(shí)就有一個(gè)確定的類型这橙,所以java中所有的變量都要先顯式申明類型才能使用。它的好處在于編譯時(shí)進(jìn)行了更加嚴(yán)格的語法檢查导披,從而減少編程錯(cuò)誤屈扎。
Java語言支持的類型有兩種:基本數(shù)據(jù)類型 和 引用類型
基本數(shù)據(jù)類型
基本數(shù)據(jù)類型分數(shù)值類型 和 布爾型
- 數(shù)值類型
- 整類型
- byte ------占一個(gè)字節(jié)-------8位
- short------占兩個(gè)字節(jié)------16位
- int----------占四個(gè)字節(jié)------32位
- long-------占八個(gè)字節(jié)------64位
- 字符型
- char--------占四個(gè)字節(jié)------32位
- 浮點(diǎn)型
- float--------占四個(gè)字節(jié)------32位
- dobule----占八個(gè)字符-------64位
- 整類型
- 布爾型
- boolean---占一位---0或1
int 是最常用的整數(shù)類型,因此通常情況下撩匕,一個(gè)java整數(shù)常量系統(tǒng)會(huì)默認(rèn)他是int類型鹰晨。有兩種情況例外:
- 將一個(gè)較小的整數(shù)常量(在byte或short類型的取值范圍類)賦值給byte或short變量,系統(tǒng)會(huì)將該常量當(dāng)成byte或short來處理。
- 將一個(gè)巨大的整數(shù)常量(超過int的取值范圍)模蜡,java不會(huì)將該整數(shù)常用當(dāng)作 long 類型類處理漠趁,需要我們?cè)谠摂?shù)值后面加上一個(gè)L后綴。
字符類型 char 通常表示單個(gè)的字符忍疾,用單引號(hào)括起來 闯传,如char tag ='a';
引用類型
引用類型包括 類、接口卤妒、數(shù)組類型還有特殊的null 類型
基本數(shù)據(jù)類型的轉(zhuǎn)換
自動(dòng)類型轉(zhuǎn)換
當(dāng)一個(gè)取值范圍小的數(shù)據(jù)類型賦值給取值范圍到的數(shù)據(jù)類型時(shí)丸边,java會(huì)將其自動(dòng)轉(zhuǎn)換。轉(zhuǎn)換的規(guī)則為:
int a = 8;
//a會(huì)自動(dòng)轉(zhuǎn)換成float類型
float b = a;
//將會(huì)輸出8.0
System.out.println("b" + b);
強(qiáng)制類型轉(zhuǎn)換
當(dāng)一個(gè)取值范圍大的數(shù)據(jù)類型賦值給取值范圍小的類型時(shí)荚孵,可以采用強(qiáng)制類型轉(zhuǎn)換。但強(qiáng)制過程中可能會(huì)發(fā)生溢出纬朝。
int a = 225;
//將int類型強(qiáng)制至byte類型
byte b = (byte) a;
//將會(huì)輸出 -31
System.out.println("b" + b);
b的值為-31的計(jì)算過程:首先是將225轉(zhuǎn)換為2進(jìn)制0000 0000 0000 0000 1110 0001收叶,byte數(shù)據(jù)類型占一個(gè)字節(jié),8位共苛。因此在強(qiáng)制過程中會(huì)截掉前面24位得到1110 0001判没,首位是符號(hào)標(biāo)準(zhǔn)位1,為負(fù)數(shù)隅茎。負(fù)數(shù)在計(jì)算機(jī)中是以補(bǔ)碼的方式存在澄峰,他的反碼為補(bǔ)碼減一得1110 0000,反碼除符號(hào)位外取反得到原碼為1001 1111即-31辟犀。
正數(shù)的補(bǔ)碼等于其原碼俏竞,負(fù)數(shù)的補(bǔ)碼等于其反碼加1,負(fù)數(shù)的反碼等于其原碼的符號(hào)位不動(dòng)其余位取反堂竟。
表達(dá)式類型的自動(dòng)提升
當(dāng)一個(gè)表達(dá)式包含多種數(shù)據(jù)類型時(shí)魂毁,整個(gè)算數(shù)表達(dá)式的數(shù)據(jù)類型會(huì)自動(dòng)提升。所有byte出嘹、short席楚、char數(shù)據(jù)類型將自動(dòng)提升為int類型,其余的會(huì)提升至表達(dá)式中的最高數(shù)據(jù)類型税稼。
運(yùn)算符
算數(shù)運(yùn)算符
java支持所有的基本運(yùn)算符烦秩,用于執(zhí)行基本的數(shù)學(xué)運(yùn)算:加、減郎仆、乘只祠、除、求余丸升、自增++铆农、自減--。除了簡(jiǎn)單的運(yùn)算符,java的Math類提供了許多方法用于復(fù)雜的數(shù)學(xué)計(jì)算墩剖。
關(guān)于++和--我們需要注意一點(diǎn)的是它位于變量的位置不同時(shí)會(huì)有不同的結(jié)果猴凹。
int a = 5;
//將int類型強(qiáng)制至byte類型
int b = ++a + 6;
//將會(huì)b=12
System.out.println("b--->" + b);
int c = 5;
int d = c++ + 6;
//將會(huì)輸出 d=11
System.out.println("d--->" + d);
自加++或自減 --符號(hào)位于變量的左邊會(huì)先進(jìn)行自加或自減運(yùn)算賦值給變量本身,再參與其他的計(jì)算岭皂。位于變量的右邊會(huì)先參與其他運(yùn)算后再做自增或自減操作郊霎。
位運(yùn)算符
在進(jìn)行按位運(yùn)算符時(shí),都是先將數(shù)值轉(zhuǎn)換為二進(jìn)制爷绘,對(duì)二進(jìn)制對(duì)應(yīng)的每一位進(jìn)行按位運(yùn)算书劝。當(dāng)其中一個(gè)數(shù)值為負(fù)數(shù)時(shí),先需獲得其補(bǔ)碼土至,在與其他數(shù)值的二進(jìn)制進(jìn)行按位運(yùn)算购对。位運(yùn)算符一共有七種:
- & 與------0&1=0;1&1=1陶因;0&0=0
- | 或------0 | 0=0骡苞;0 | 1=1;1 | 1=1
- ~ 非 ------取反 0變1 楷扬,1變0
- ^ 異或-----相同為0解幽,不同為1
- >> 右移---- 將二進(jìn)制往右移整數(shù)個(gè)位,高位用符號(hào)標(biāo)志位補(bǔ)上
- << 左移-----將二進(jìn)制往左移整數(shù)個(gè)位烘苹,低位用零補(bǔ)上
- >>> 無符號(hào)位右移---將二進(jìn)制往右移整數(shù)個(gè)位躲株,高位用0補(bǔ)上
邏輯運(yùn)算符
- & 不短路-----前后都為true返回為true,當(dāng)前面為false時(shí)還會(huì)去執(zhí)行后面的
- && 與 -----前后都為true返回為true镣衡,當(dāng)前面為false時(shí)不會(huì)去執(zhí)行后面的
- | 不短路或-----前后有一個(gè)為true則為true霜定,當(dāng)前面為true時(shí)還是會(huì)執(zhí)行后面的
- || 或-----前后有一個(gè)為true則為true,當(dāng)前面為true時(shí)不會(huì)執(zhí)行后面的
- ^ 異或---前后不同時(shí)返回為true廊鸥, 相同時(shí)返回false
//短路和非短路的區(qū)別
int a = 5;
int b = 6;
if (a > 3 | ++b > 6) { //不短路或
//將會(huì)輸出 b=7 因?yàn)閍>3為true后還是會(huì)執(zhí)行判斷 ++b>6 的操作
System.out.println("b--->" + b);
}
if (a > 3 || ++b > 6) { //短路或
//將會(huì)輸出 b=6 因?yàn)閍>3為true時(shí)然爆,后面的操作不進(jìn)行下去了
System.out.println("b--->" + b);
}
三目運(yùn)算符
相當(dāng)于if else的簡(jiǎn)寫。格式為: (條件)?表達(dá)式一:表達(dá)式二;
意思是當(dāng)條件成立時(shí)黍图,取表達(dá)式一的值曾雕,條件不成立時(shí)取表達(dá)式二的值。
//num的值將會(huì)是200
int num = (3 > 4) ? 100 : 200;