Java基礎(chǔ)第二天 2.1回顧 第一個代碼: /** 這是我的第一個java程序 @author zhang @version v1.0 */ publicclass HelloJava{ /* 1.源文件以.java結(jié)尾 2.源文件中可以有多個class聲明的類 3.類中可以有主方法(即main()方法),其格式是固定的:public static void main(String[]args){} 4.main()方法是程序的入口,方法內(nèi)是程序的執(zhí)行部分。 5.一個源文件中只能有一個聲明為public 的類,同時要求此類的類名與源文件名一致。 6.每個語句都以";"結(jié)束 7.執(zhí)行程序:①編譯:javac.exe 編譯完,生成諸多個.class字節(jié)碼文件。②運行:java.exe 8.多行注釋不能夠嵌套 */ publicstaticvoid main(String[] args){ System.out.println("Hello World!" +'\n' +"Hello it18zhang.com");
} } 2.1 關(guān)鍵字1關(guān)鍵字的定義和特點關(guān)鍵字的定義和特點 定義:被Java語言賦予了特殊含義,用做專門用途的字符串(單詞) 特點:關(guān)鍵字中所有字母都為小寫 保留字 Java保留字:現(xiàn)有Java版本尚未使用,但以后版本可能會作為關(guān)鍵字使用。自己命名標(biāo)記符時要避免使用這些保留字 2.2標(biāo)識符標(biāo)識符: (1)Java 對各種變量、方法和類等要素命名時使用的字符序列稱為標(biāo)識符 (2)凡是自己可以起名字的地方都叫標(biāo)識符。
定義合法標(biāo)識符規(guī)則: (1)由26個英文字母大小寫,0-9 ,_或 $ 組成 (2)數(shù)字不可以開頭。 (3)不可以使用關(guān)鍵字和保留字,但能包含關(guān)鍵字和保留字 (4)Java中嚴(yán)格區(qū)分大小寫,長度無限制 (5)標(biāo)識符不能包含空格 注意:在起名字時,為了提高閱讀性,要盡量有意義,“見名知意
Java中的名稱命名規(guī)范 (1)包名:多單詞組成時所有字母都小寫:xxxyyyzzz (2)類名、接口名:多單詞組成時,所有單詞的首字母大寫:XxxYyyZzz (3)變量名、方法名:多單詞組成時,第一個單詞首字母小寫,第二個單詞開始每個單詞首字母大寫:xxxYyyZzz (4)常量名:所有字母都大寫。多單詞時每個單詞用下劃線連接:XXX_YYY_ZZZ 案例: /* 標(biāo)識符:凡是可以自己命名的地方,都叫標(biāo)識符。如:類名、方法名、變量名、接口名,。。。
1.標(biāo)識符命名的規(guī)則:(要求嚴(yán)格遵守,否則會報編譯性的錯誤) 由26個英文字母大小寫,0-9 ,_或 $ 組成 數(shù)字不可以開頭。 不可以使用關(guān)鍵字和保留字,但能包含關(guān)鍵字和保留字。 Java中嚴(yán)格區(qū)分大小寫,長度無限制。 標(biāo)識符不能包含空格。
2.Java中的名稱命名規(guī)范:(如果不遵守,也不會報錯) 包名:多單詞組成時所有字母都小寫:xxxyyyzzz 類名、接口名:多單詞組成時,所有單詞的首字母大寫:XxxYyyZzz 變量名、方法名:多單詞組成時,第一個單詞首字母小寫,第二個單詞開始每個單詞首字母大寫:xxxYyyZzz 常量名:所有字母都大寫。多單詞時每個單詞用下劃線連接:XXX_YYY_ZZZ
*/
class TestMarker { publicstaticvoid main(String[] args) { int static1 = 1; int myInt = 12; System.out.println("Hello World!"); }
publicvoid add(){
} //注意:在起名字時,為了提高閱讀性,要盡量有意義,“見名知意”。 publicvoid m1(){} publicvoid m2(){} } //class 4Hello class Static{ } 2.3變 量變量的概念: (1)內(nèi)存中的一個存儲區(qū)域 (2)該區(qū)域有自己的名稱(變量名)和類型(數(shù)據(jù)類型) (3)Java中每個變量必須先聲明,后使用 (4)該區(qū)域的數(shù)據(jù)可以在同一類型范圍內(nèi)不斷變化
使用變量注意 (1)變量的作用域:一對{ }之間有效 (2)初始化值
定義變量的格式:數(shù)據(jù)類型 變量名 = 初始化值 變量是通過使用變量名來訪問這塊區(qū)域的 變量的分類-按數(shù)據(jù)類型對于每一種數(shù)據(jù)都定義了明確的具體數(shù)據(jù)類型,在內(nèi)存中分配了不同大小的內(nèi)存空間 整數(shù)類型:byte、short、int、longJava各整數(shù)類型有固定的表數(shù)范圍和字段長度,不受具體OS的影響,以保證java程序的可移植性。
java的整型常量默認(rèn)為 int 型,聲明long型常量須后加‘l’或‘L’ 浮點類型:float、double(1)與整數(shù)類型類似,Java 浮點類型也有固定的表數(shù)范圍和字段長度,不受具體OS的影響 (2)Java 的浮點型常量默認(rèn)為double型,聲明float型常量,須后加‘f’或‘F’。 (3)浮點型常量有兩種表示形式: 十進制數(shù)形式:如:5.12 512.0f .512 (必須有小數(shù)點) 科學(xué)計數(shù)法形式:如:5.12e2 512E2 100E-2 字符類型:charchar 型數(shù)據(jù)用來表示通常意義上“字符”(2字節(jié)) 字符型常量的三種表現(xiàn)形式: (1)字符常量是用單引號(‘’)括起來的單個字符,涵蓋世界上所有書面語的字符。例如:char c1 = 'a'; char c2 = '中'; char c3= '9'; (2)Java中還允許使用轉(zhuǎn)義字符‘\’來將其后的字符轉(zhuǎn)變?yōu)樘厥庾址统A?。例如?/span>char c3 = ‘\n’; // '\n'表示換行符 (3)直接使用 Unicode值來表示字符型常量:‘\uXXXX’。其中,XXXX代表一個十六進制整數(shù)。如:\u000a表示 \n。 (4)char類型是可以進行運算的。因為它都對應(yīng)有Unicode碼 ASCII 碼 在計算機內(nèi)部,所有數(shù)據(jù)都使用二進制表示。每一個二進制位(bit)有 0 和 1 兩種狀態(tài),因此 8 個二進制位就可以組合出 256 種狀態(tài),這被稱為一個字節(jié)(byte)。一個字節(jié)一共可以用來表示 256 種不同的狀態(tài),每一個狀態(tài)對應(yīng)一個符號,就是 256 個符號,從 0000000 到 11111111。
ASCII碼:上個世紀(jì)60年代,美國制定了一套字符編碼,對英語字符與二進制位之間的關(guān)系,做了統(tǒng)一規(guī)定。這被稱為ASCII碼。ASCII碼一共規(guī)定了128個字符的編碼,比如空格“SPACE”是32(二進制00100000),大寫的字母A是65(二進制01000001)。這128個符號(包括32個不能打印出來的控制符號),只占用了一個字節(jié)的后面7位,最前面的1位統(tǒng)一規(guī)定為0。 Unicode 編碼亂碼:世界上存在著多種編碼方式,同一個二進制數(shù)字可以被解釋成不同的符號。因此,要想打開一個文本文件,就必須知道它的編碼方式,否則用錯誤的編碼方式解讀,就會出現(xiàn)亂碼
Unicode:一種編碼,將世界上所有的符號都納入其中。每一個符號都給予一個獨一無二的編碼,使用 Unicode 沒有亂碼的問題。
Unicode 的缺點:Unicode 只是一個符號集,它只規(guī)定了符號的二進制代碼,卻沒有規(guī)定這個二進制代碼應(yīng)該如何存儲:無法區(qū)別 Unicode 和 ASCII:計算機無法區(qū)分三個字節(jié)表示一個符號還是分別表示三個符號
UTF-8UTF-8 是在互聯(lián)網(wǎng)上使用最廣的一種 Unicode的實現(xiàn)方式。 UTF-8 是一種變長的編碼方式。它可以使用 1-6 個字節(jié)表示一個符號,根據(jù)不同的符號而變化字節(jié)長度。 UTF-8的編碼規(guī)則: (1)對于單字節(jié)的UTF-8編碼,該字節(jié)的最高位為0,其余7位用來對字符進行編碼(等同于ASCII碼)。 (2)對于多字節(jié)的UTF-8編碼,如果編碼包含 n 個字節(jié),那么第一個字節(jié)的前n 位為1,第一個字節(jié)的第 n+1 位為0,該字節(jié)的剩余各位用來對字符進行編碼。在第一個字節(jié)之后的所有的字節(jié),都是最高兩位為"10",其余6位用來對字符進行編碼。
布爾類型:booleanboolean 類型適于邏輯運算,一般用于程序流程控制 if條件控制語句 while循環(huán)控制語句 do-while循環(huán)控制語句; for循環(huán)控制語句
boolean類型數(shù)據(jù)只允許取值true和false,無null。 不可以0或非 0 的整數(shù)替代false和true,這點和C語言不同 案例 //變量:基本數(shù)據(jù)類型(8個) vs 引用數(shù)據(jù)類型(類、接口、數(shù)組) //1.java中的變量定義的格式:數(shù)據(jù)類型 變量名 = 初始化值 class TestVeriable { publicstaticvoid main(String[] args) { //2.變量得先定義,后使用 int myInt1 = 10; double d = 12.3;
System.out.println(myInt1); System.out.println(myInt1 + d); //i1超出了其作用的范圍,不可使用。 //System.out.println(i1);
//3.整型:byte(-128~+127) short int(默認(rèn)類型) long byte b1 = 12; //byte b2 = 128; short s1 = 128; int i1 = 12; //定義long型變量,值的末尾加“L”或“l” long l1 = 2134123351345325L; System.out.println(l1);
//4.浮點型(帶小數(shù)點的數(shù)值):float double(默認(rèn)類型) double d1 = 12.3; //聲明float類型的浮點型數(shù)據(jù),末尾要加“F”或者“f” float f1 = 12.3F; System.out.println(f1);
//5.字符型(=兩個字節(jié)):char 只能表示一個字符(英文、中文、標(biāo)點符號、日文、。。。) char c1 = 'a'; //char c2 = 'ab'; String str = "ab"; char c3 = '中'; String str1 = "中國"; //可以表示轉(zhuǎn)義字符 char c4 = '\t'; char c5 = '\n'; System.out.println("abc" + c5 + "def"); //了解 char c6 = '\u1234'; System.out.println(c6);
//6.布爾類型:boolean 只能夠取值為true 或 false 。不能取值null boolean bool1 = true; if(bool1){ System.out.println("今天是周五"); }else{ System.out.println("今天明明是周六!"); }
}
publicvoid method1(){ int i1 = 10; System.out.println(i1); } } 基本數(shù)據(jù)類型轉(zhuǎn)換自動類型轉(zhuǎn)換:容量小的類型自動轉(zhuǎn)換為容量大的數(shù)據(jù)類型。數(shù)據(jù)類型按容量大小排序為:
有多種類型的數(shù)據(jù)混合運算時,系統(tǒng)首先自動將所有數(shù)據(jù)轉(zhuǎn)換成容量最大的那種數(shù)據(jù)類型,然后再進行計算
byte,short,char之間不會相互轉(zhuǎn)換,他們?nèi)咴谟嬎銜r首先轉(zhuǎn)換為int類型。
當(dāng)把任何基本類型的值和字符串值進行連接運算時(+),基本類型的值將自動轉(zhuǎn)化為字符串類型。 強制類型轉(zhuǎn)換自動類型轉(zhuǎn)換的逆過程,將容量大的數(shù)據(jù)類型轉(zhuǎn)換為容量小的數(shù)據(jù)類型。使用時要加上強制轉(zhuǎn)換符(()),但可能造成精度降低或溢出,格外要注意。
通常,字符串不能直接轉(zhuǎn)換為基本類型,但通過基本類型對應(yīng)的包裝類則可以實現(xiàn)把字符串轉(zhuǎn)換成基本類型。
如: String a = “43”; int i = Integer.parseInt(a); boolean類型不可以轉(zhuǎn)換為其它的數(shù)據(jù)類型。 案例:/* 變量之間的運算:(不考慮boolean。剩下:char byte short int long floatdouble) 1.自動類型轉(zhuǎn)換 2.強制類型轉(zhuǎn)換 */ class TestVeriable1{ publicstaticvoid main(String[] args){ //1.自動類型轉(zhuǎn)換:當(dāng)容量小的數(shù)據(jù)類型與容量大的數(shù)據(jù)類型做運算時,容量小的會自動轉(zhuǎn)換為 //容量大的數(shù)據(jù)類型:char,byte,short ===>int===>long ===>float===double int i1 = 12; short s1 = 2; int i2 = i1 + s1; float f1 = 12.3F; float f2 = f1 + i2; //float d1 = f2 + 12.3;
long l = 12L; float f3 = l; System.out.println(i2); System.out.println(f2);
char c1 = 'a';//97 c1 = 'A';//65 int i3 = c1 + 1; System.out.println(i3);
//需要注意的:當(dāng)char\byte\short之間做運算時,默認(rèn)的結(jié)果為int類型 short ss1 = 12; byte bb1 = 1; char cc1 = 'a'; //short ss2 = ss1 + bb1; int ii1 = ss1 + bb1; //char cc2 = cc1 + bb1; int ii2 = cc1 + bb1; short ss2 = 11; //short ss3 = ss1 + ss2;
//2.強制類型轉(zhuǎn)換:容量大轉(zhuǎn)換為容量小的.要使用強制類型轉(zhuǎn)換符:() //強制類型轉(zhuǎn)換的問題:導(dǎo)致精度的損失 long l1 = 12345L; int m1 = (int)l1; System.out.println(m1);
byte by1 = (byte)m1; System.out.println(by1);
//平時常用的字符串,也是一種數(shù)據(jù)類型:String String nation = "我是一個中國人"; System.out.println(nation); //字符串與基本數(shù)據(jù)類型之間的運算:只能是連接運算:+。得到的結(jié)果仍為一個字符串 String str = "abc"; String str1 = str +m1;//abc12345 System.out.println(str1);
//題目: String st1 = "hello"; int myInt1 = 12; char ch1 = 'a';//97 System.out.println(str1+ myInt1 + ch1);//hello12a System.out.println(myInt1+ ch1 + str1);//109hello System.out.println(ch1+ str1 + myInt1);//ahello12
String st2 = "12"; str2 = 12 + ""; } }
練習(xí): String str1 = 4; //判斷對錯:錯 String str2 = 3.5f + “”; //判斷str2對錯:對System.out.println(str2); //輸出:3.5 System.out .println(3+4+“Hello!”); //輸出:7Hello! System.out.println(“Hello!”+3+4); //輸出:Hello!34 System.out.println(‘a’+1+“Hello!”); //輸出:98Hello! System.out.println(“Hello”+‘a’+1); //輸出:Hello!a1 進 制對于整數(shù),有四種表示方式 (1)二進制:0,1 ,滿2進1.以0b或0B開頭。 (2)十進制:0-9 ,滿10進1 (3)八進制:0-7 ,滿8進1. 以數(shù)字0開頭表示 (4)十六進制:0-9及A-F,滿16進1. 以0x或0X開頭表示。此處的A-F不區(qū)分大小寫。 (5)如:0x21AF +1=0X21B0 原碼、反碼、補碼 所有數(shù)字在計算機底層都以二進制形式存在。 計算機以補碼的形式保存所有的整數(shù)。 正數(shù)的原碼、反碼、補碼都相同 負(fù)數(shù)的補碼是其反碼加1。 原碼:直接將一個數(shù)值換成二進制數(shù)。 反碼:是對原碼按位取反,只是最高位(符號位)確定為1。 Java整數(shù)常量默認(rèn)是int類型,當(dāng)用二進制定義整數(shù)時,其第32位是符號位;當(dāng)是long類型時,二進制默認(rèn)占64位,第64位是符號位 進制間轉(zhuǎn)化進制的基本轉(zhuǎn)換 十進制 二進制互轉(zhuǎn) (1)二進制轉(zhuǎn)成十進制 乘以2的冪數(shù) (2)十進制轉(zhuǎn)成二進制 除以2取余數(shù) (3)二進制 八進制互轉(zhuǎn) (4)二進制 十六進制互轉(zhuǎn) (5)十進制 八進制互轉(zhuǎn) (6)十進制 十六進制互轉(zhuǎn) 算術(shù)運算符//測試算術(shù)運算符: + - + - * / % ++ -- + class TestAri{ publicstaticvoid main(String[] args){
// 除:/ int i = 12; int j = i/5; double d = i / 5; double d1 = i/5.0; System.out.println(j);//2 System.out.println(d);//2.0 System.out.println(d1);//2.4 //取模:%:取余數(shù). 結(jié)果的符號取決于被模數(shù) int i1 = 12 % 5; int i2 = -12 % 5; int i3 = 12 % (-5); int i4 = -12 % (-5); System.out.println(i1); System.out.println(i2); System.out.println(i3); System.out.println(i4); //前++:先自增1,后做運算 //后++:先做運算,后自增1
int myInt1 = 10; int myInt2 = myInt1++;//后++ System.out.println(myInt1);//11 System.out.println(myInt2);//10
int myInt3 = 10; int myInt4 = ++myInt3;//前++ System.out.println(myInt3);//11 System.out.println(myInt4);//11
//前--:先自減1,后做運算 //后--:先做運算,后自減1
} }
|
|