被賦予了特殊java含義的單詞。
- 關鍵字全都是小寫
1.行注釋:使用 // 來注釋一行文字或代碼。
//這是行注釋的內(nèi)容
2.塊注釋: 塊前使用 /* ,塊后使用 */ 包裹住要注釋的塊內(nèi)容
/*這是塊注釋這是塊注釋*/
3.文檔注釋:文檔前使用 /** ,文檔后使用 */ 包裹文檔注釋的內(nèi)容。
/**這是文檔注釋*/
注釋的作用:
- 注解說明程序
- 調(diào)試程序
- 常量表示不能改變的數(shù)值。代碼中直接出現(xiàn)的值。
- java中常量的分類:
- 整數(shù)常量。所有整數(shù)
- 小數(shù)常量。所有小數(shù)
- 布爾常量,true或false
- 字符常量。將一個符號,數(shù)字或字母用單引號(’’)標識
- 字符串常量。將一個或多個數(shù)字,符號或字母用雙引號(””)標識
- null常量,只有一個值 即 null,表示空
用來不斷的存放同一類型的常量,并可以重復利用
java是強類型語言,對每一種數(shù)據(jù)都定義了明確的具體數(shù)據(jù)類型,在內(nèi)存中分配了不同大小的區(qū)域。

整數(shù)默認:int 小數(shù)默認:double
取值范圍:
byte : -128~127 , 1個字節(jié)
short: -2^15~2^15-1 ,2個字節(jié)
int : -2^31~2^31-1 ,4個字節(jié)
long:-2^63~2^63-1 , 8個字節(jié)
float : 4個字節(jié)
double: 8個字節(jié)
char: 0~65535, 2個字節(jié)
變量的定義:
byte b = 3;short s = 4000;int x = 12;long l = 1234567890123l;//最后一個字符不是數(shù)字1,而是字母Lfloat f = 2.3f;double d = 2.3;char ch = 'a'; boolean bl = true;
整數(shù)的類型提升和強制類型轉(zhuǎn)換:
類型提升,如:
int a = 12;byte b = 3;a = a + b;
運算過程:a+b時,由于a為4個字節(jié),b為1個字節(jié),在運算時,java會自動類型提升,并且以a為主,即把b轉(zhuǎn)換為4個字節(jié),前三個字節(jié)全為0,再進行相加,結(jié)果為4個字節(jié),最后把結(jié)果賦值給a。
強制類型轉(zhuǎn)換,如:
int a = 12;byte b = 3;b = (byte)(a + b);運算過程:和上面一樣,a+b的結(jié)果為4個字節(jié),不能直接賦值給byte類型的b,需要進行強制類型轉(zhuǎn)換,將結(jié)果的第一個字節(jié)保留后賦值給byte類型的b。要對整數(shù)進行強制類型轉(zhuǎn)換,必須確保要轉(zhuǎn)換的值在byte范圍之內(nèi),否則后丟失數(shù)據(jù)。
注意:字符型數(shù)據(jù)和int類型數(shù)據(jù)運算時,取字符類型數(shù)據(jù)的Ascii碼再和這個int數(shù)據(jù)運算,結(jié)果為int數(shù)據(jù)。
到這里,我有了一個疑問:在定義和初始化byte類型數(shù)據(jù)時,byte b = 4; 4不是int類型數(shù)據(jù)嗎?怎么不用強制類型轉(zhuǎn)換,就可以把4賦值給byte類型的變量b。
原因:java在運行byte b = 4這句代碼時,編譯器會自動判斷4這個int型數(shù)據(jù)是否超過byte型數(shù)據(jù)所能表示的范圍(-128~127)之內(nèi),如果4這個數(shù)在這個范圍內(nèi),自動類型轉(zhuǎn)換為byte數(shù)據(jù),沒有丟失數(shù)據(jù);如果4這個數(shù)超出這個范圍,編譯就會報 可能丟失精度的錯誤。
面試題:下面兩個代碼為什么出現(xiàn)不同的結(jié)果。
1.
byte b = 4;b = 3+7;System.out.PRintln(b);
2.
byte b = 4;byte b1 = 3;byte b2 = 7;b = b1 + b2;System.out.println(b);
結(jié)果:第一個代碼運行不會報錯,第二個會報b = b1 + b2 這句可能損失精度的錯誤。
原因分析:第一個代碼分析同上面疑問的原因,第二個,由于b1和b2是變量,編譯器不確定它們的值會不會超出byte表示數(shù)據(jù)的范圍。所以也就檢查不了。第一個為常量,可以判斷和檢查3+7的結(jié)果有沒有超出byte類型所表示的范圍。
聯(lián)想:以下代碼不會報錯:
int x ;int x1 = 100;int x2 = 98;x = x1 + x2;System.out.println(x);
原因:int是整數(shù)的默認類型。就算這個結(jié)果超出了int數(shù)據(jù)表示的范圍,底層也會進行強制類型轉(zhuǎn)換,不管是不是損失精度。
新聞熱點
疑難解答