點擊上方"Java軟件編程之家"能夠關注我哦,文末也有公衆號二維碼能夠直接掃碼關注!
java
關注後回覆"Java"關鍵字能夠獲取正在更新中的Java系統性學習教程,回覆"資源"能夠免費獲取電子書!程序員
八大基本類型
Java語言開發規範中內置了8種基本類型,以下表:編程
數據類型安全 |
位數微信 |
默認值app |
取值範圍學習 |
例子spa |
short(短整數).net |
163d |
0 |
-2^15 至 2^15-1 |
short x = 6; |
int(整數) |
32 |
0 |
-2^31 至 2^31-1 |
int x = 6; |
long(長整數) |
64 |
0 |
-2^63 至 2^63-1 |
long x = 6; |
float(單精度) |
32 |
0.0 |
-2^31 至 2^31-1 |
float x = 6.0f; |
double(雙精度) |
64 |
0.0 |
-2^63 至 2^63-1 |
double x = 6.0d; |
char(字符) |
16 |
空(‘’) |
0 至2^16-1 |
char x = ‘c’; |
boolean(布爾值) |
8 |
false |
true, false |
boolean x = true; |
byte(位) |
8 |
0 |
-2^7 至 2^7-1 |
byte x = 6; |
這個表只須要簡單過一遍便可,能記住是最好,記不了就這暫時過一遍。
註釋
Java語言開發規範中註釋是一種代碼說明、解釋、備註,註釋不會被javac編譯器編譯到class文件中,註釋的做用是對某行或模塊代碼邏輯的一些說明。咱們通常能夠經過兩種方式進行代碼註釋:單行註釋(// 這是單行註釋),多行註釋(/** 這是多行註釋 */)。下面是註釋的代碼例子:
package com.soft.hello;
public class NotesExample {
/** * * 這是一個main方法 * 它能夠做爲程序入口方法 * * @param args 這是方法參數 */ public static void main(String[] args) {
// 這是一行打印語句 System.out.println("hello, world"); }}
塊
Java語言開發規範中經過一對花括號定義不一樣的代碼塊,例如某個類、某個方法、某個循環、某個分支判斷等,不一樣的塊一般有不用的做用域,做用域知識到後面講解控制語句時會再次提到。下面是塊代碼例子:
package com.soft.hello;
public class BlockExample { //這是類BlockExample塊 public static void main(String[] args) { //這是main方法塊 }
}
關鍵字
Java語言開發規範中默認定義了一系列關鍵字,例如class、static、package、import、final、main、void等等還有不少就不一一列舉,每個關鍵字對Java來講都是某種約定的規範,例如用class關鍵字定義一個類,用package關鍵字定義包,用final關鍵字定義某個類、方法、變量不可變等等。能夠絕不誇張說java語言規範就是由不一樣的關鍵字組出來的,關鍵字是咱們學習java最基礎的知識。下面是關鍵字代碼例子:
//經過關鍵字package定義包package com.soft.hello;
//經過public 關鍵字修飾類是公共的//經過class 關鍵字定義一個類public class KeywordExample {
}
權限修飾符
Java語言開發規範中經過不一樣關鍵字的方式定義了4種類型權限修飾符:
public:公共的,外部能夠訪問。
protected:父子類繼承範圍可訪問。
private:類私有的,同一個類可訪問。
缺省:同一個包範圍可訪問。
下面是權限修飾符的代碼例子:
package com.soft.hello;
public class PermissionExample {
//公共的,外部可訪問 public void method1() {
}
//父子繼承範圍可訪問 protected void method2() {
}
//私有的,同一個類範圍訪問 private void method3() {
} //缺省的, 同一個包範圍可訪問 void method4() { } }
其中public權限修飾符能夠修飾類、方法、屬性、內部類的定義,而其餘的修飾符只能修飾方法、屬性、內部類而不能修飾類。關於類、方法、屬性等知識後面會詳細講解,這裏大體瞭解便可。
標識符
Java語言開發規範中,除了關鍵字和花括號外,其餘的都是咱們自定義的,這類稱爲標識符,標識符命名規則以下:
只能由字母(a-z,A-Z),數字(0-9),下劃線(_)和美圓符號($)組成
不能以數字開頭
不能與關鍵字重名
大小寫敏感
下面是標識符代碼例子:
//IdentifierExample即是標識符,由咱們自定義public class IdentifierExample {
}
變量
Java語言開發規範中,使用最多的就是變量,變量須要先定義才能使用,定義變量通常代碼格式:變量類型 變量名稱 = 變量值。下面是變量的代碼例子:
package com.soft.hello;
public class VarExample { public static void main(String[] args) { // 定義int 類型變量 i 值爲 10 int i = 10; // 定義boolean 類型變量 b 值爲 false boolean b = false; // 定義long 類型變量l 值爲 10 long l = 10; System.out.println("i 的值 爲 " + i); System.out.println("b 的值 爲 " + b); System.out.println("l 的值 爲 " + l); } }
控制檯輸出:
i 的值 爲 10
b 的值 爲 false
l 的值 爲 10
運算符
Java語言開發規範中運算符從不一樣的角度有不一樣的分類,其中按功能可分爲以下幾類:
算術運算符
賦值運算符
關係運算符
邏輯運算符
位運算符
從操做數角度又能夠分爲:
單目運算符
雙目運算符
三目運算符
下面是各類運算符代碼例子:
public class OperatorExample {
public static void main(String[] args) {
// 算術運算符 ===================== 這是分割線 ========================== // + - * / % int a = 10 + 2; // 輸出 12 int b = 10 - 2; // 輸出 8 int c = 10 * 2; // 輸出 20 int d = 10 / 2; // 輸出 5 int e = 10 % 3;// 輸出 1,求餘數
// 賦值運算符 ===================== 這是分割線 ========================== // = += -= *= /= %= &= ^= |= <<= >>=,操做結果返回左邊定義的類型,不一樣類型會發生部分類型轉換, // 對於字面量數值編譯器會作上下界判斷,例如 int a = 100000000000000000000000,明顯值超出int類型取值範圍,編譯器會報錯 int a1 = 10; a1 += 5; // 輸出 15 相似:a1 = a1 + 5; 後面以此類推 a1 -= 5; // 輸出 10 a1 *= 5; // 輸出 50 a1 /= 5; // 輸出 10 a1 <<= 10; // 輸出 10240,左移 a1 >>= 10; // 輸出 10,右移 a1 %= 3; // 輸出 1,求餘數
// 關係運算符 ===================== 這是分割線 ========================== // == < > != >= <= ,操做結果返回boolean類型 int a5 = 10; int a6 = 12; boolean b1 = a5 > a6; // 輸出 false boolean b2 = a5 != a6; // 輸出 true
// 邏輯運算符 ===================== 這是分割線 ========================== // 與(&&)、非(!)、或(||),操做結果返回boolean類型 int a7 = 10; int a8 = 11; int a9 = 12; boolean b3 = (a7 < a8); // 輸出 true // !: 取反, true取反後爲false, false取反後爲true boolean b4 = !(a7 < a8); // 輸出 false boolean b5 = (a7 < a8) && (a9 > a8); // 輸出 true // &&: // 當兩邊都爲true,結果才爲true,不然爲false,它是短路的,若是第一個操做結果爲false,則立刻返回false,不會繼續判斷後面的操做結果 boolean b6 = (a7 > a8) && (a9 < a8); // 輸出 false // ||: // 當兩邊其中一邊爲true,則結果爲true,不然爲false,它是短路的,若是第一個操做結果爲true,則立刻返回true,不會繼續判斷後面的操做結果 boolean b7 = (a7 < a8) || (a9 > a8); // 輸出 true
// 位運算符 ===================== 這是分割線 ========================== // << 帶符號左移 >>帶符號右移 >>> 無符號右移 int a10 = 10 << 3; // 輸出 80 ,左移n位表示 乘以 2n次方 int a11 = 80 >> 3; // 輸出 10 ,右移n位表示 除以 2n次方
// 單目運算符 ===================== 這是分割線 ========================== // ~(按位取反)、! (取非)、-(負號運算符)、 ++(自增)、 - -(自減) int a12 = 10; // 後置自增, 相似 a12 = a12 + 1; a12++; // 直接System.out.println(a12++); 輸出10, 若是先a++;再System.out.println(a12);則輸出11
a12 = 10; // 後置自減, 相似 a12 = a12 - 1; a12--; // 直接System.out.println(a12--); 輸出10, 若是先a--;再System.out.println(a12);則輸出9
a12 = 10; // 前置自增 , 相似 a12 = a12 + 1; ++a12; // 直接System.out.println(++a12); 輸出11, 若是先++a;再System.out.println(a12);也是輸出11
a12 = 10; // 前置自減, 相似 a12 = a12 - 1; --a12; // 直接System.out.println(--a12); 輸出9, 若是先--a;再System.out.println(a12);也是輸出9
// 雙目運算符 ===================== 這是分割線 ========================== // &: 運算時均把運算數轉換爲二進制再作比較,規則:當相同的位上均爲1時結果爲1,不然結 果爲0 int a13 = 12 & 10; // 12 & 10,轉爲二進制:1100&1010,比較結果爲:1000轉爲十進制:8。因此輸出8; // |:運算時均把運算數轉換爲二進制再作比較,規則:當兩邊操做數的位有一邊爲1時,結果爲1,不然爲0 int a14 = 12 | 16; // 12 | 16轉爲二進制:1100|10000,比較結果爲:11100轉爲十進制:28,,因此輸出28 // ^: 運算時均把運算數轉換爲二進制再作比較,規則:兩邊的位不一樣時,結果爲1,不然爲0 int a15 = 12 ^ 2; // 12 ^ 2轉爲二進制:1100|10,比較結果爲:1110轉爲十進制:14,,因此輸出14
// 三目運算符 ===================== 這是分割線 ========================== int a16 = 1; int a17 = 2; // 三目運算符首先第一個是關係運算符,若是關係運算符返回true則返回冒號前的值,若是爲false則返回冒號後面的值。 boolean b8 = a16 < a17 ? true : false; // 輸出true
}
}
關於算數運算符有幾點須要注意:
a++和++a的區別:a++屬於後置自增,後置的意思是若是存在表達式的話會先計算表達式,再計算a+1, a--和--a也是相似的。下面看個代碼例子:
package com.soft.hello;
public class Operator2Example {
public static void main(String[] args) {
int a = 10;
// 先計算 a = a, 注意:基本類型是值類型而不是引用類型,因此a=a是將前面的變量a的值複製一份給新的a變量 // 也就是說這裏左邊的a變量和前面定義的a變量在棧幀的局部變量表中是兩個的變量 // 而後再計算前面老的a變量a = a+1; a = a++;
System.out.println(a); // 輸出 10
int b = 10;
// 先計算 b = b+1,再計算 b = b; b = ++b;
System.out.println(b); // 輸出 11 }
}
a+=10和a=a+10的區別:當全部操做數類型相同時它們沒什麼區別,但若是操做數不相同則a+=10的方式會進行隱士類型轉換而a=a+10的方式會報錯,a-=10和a=a-10也是相似的。下面看個代碼例子:
package com.soft.hello;
public class Operator3Example {
public static void main(String[] args) {
short s1 = 10; s1 += 10; System.out.println(s1); // 正常輸出20;
short s2 = 10; /** * 這裏由於s2是short類型,而數字10默認是int類型。在java中,在s2+4時,會進行 自動類型轉換 ,因此s2+4 會轉換成int類型。 * 而變量s2定義是short類型,將int 類型的s2+4賦值給short類型的s2 ,天然編譯器就報錯了。 * 要手動進行類型轉換才能避免編譯期間的報錯,例如改爲:s2 = (short) (s2 + 10);但這種狀況要人爲確保不能超出short類型長度 */ s2 = s2 + 10; // 這一行會報錯,
System.out.println(s2); }
}
基本類型轉換
在本章一開始就給出了Java內置的八大基本類型,這些基本類型能夠互相轉換,轉換的原則是:取值範圍向上轉換是自動且安全的,向下轉換須要強制且不安全。下面看幾個代碼例子:
package com.soft.hello;
public class TypeConvert {
public static void main(String[] args) {
// 原則:取值範圍向上轉換是自動且安全的,向下轉換須要強制且不安全
byte b = 100;
int a = b; // 這行代碼符合原則,能夠直接轉換
byte b2 = a; // 這行代碼不符合原則,int類型取值範圍比byte類型要大(int轉byte屬於向下轉換),編譯器會報錯,須要經過強制方式(byte b2 = (byte)a)進行轉換,但強制轉換須要注意溢出安全問題
long l = a; // 這行代碼符合原則,能夠轉換 int a2 = l; // 這行代碼不符合原則,long類型取值範圍比int類型要大,編譯器會報錯,須要經過強制方式(int a2 = (long)l進行轉換,但強制轉換須要注意溢出安全問題)
float f = 100; double d = f;// 這行代碼符合原則,能夠轉換 float f = d; // 這行代碼不符合原則,double類型取值範圍比float類型要大,編譯器會報錯,須要經過強制方式(float f = (float)d進行轉換,但強制轉換須要注意溢出安全問題)
}
}
命名規範
這裏主要介紹編寫代碼的命名規範,市面上主流的命名規範有兩種,分別是:駝峯式和下劃線式,它們的區別是多個單詞的鏈接方式,駝峯式採用是將須要鏈接的單詞首字母大寫拼接起來,而下劃線式採用下劃線鏈接不一樣單詞,所有單詞均小寫。在Java語言編程中,大部分程序員更喜歡使用駝峯式方式命名各類標識符(類、變量標識符、方法名等),對於Java來講駝峯式其實又被分爲首字母是否大寫,好比Java的class類命名官方強烈建議是採用首字母大寫的駝峯式,而方法和變量的命名通常建議是首字母小寫駝峯式(標準駝峯式)。下面看個代碼例子:
package com.soft.hello;
//NameExample是類名標識符,採用的是首字母大寫駝峯式public class NameExample {
// main是方法名,採用的是首字母小寫駝峯式 public static void main(String[] args) {
// 定義男生數量整型變量(駝峯式,將須要鏈接的單詞首字母大寫拼接起來) int boysNumber = 20;
// 定義女生數量整型變量(駝峯式,將須要鏈接的單詞首字母大寫拼接起來) int girlsNumber = 16;
// 定義男生數量整型變量(下劃線式,經過下劃線鏈接不一樣單詞,所有單詞小寫) int boys_number = 20;
// 定義女生數量整型變量(下劃線式,經過下劃線鏈接不一樣單詞,所有單詞小寫) int girls_number = 16;
}
}
小結
本章咱們主要學習Java語言開發規範基礎相關的知識,具體包括:
一、介紹Java內置八大類型
二、介紹Java兩種註釋方式以及註釋的做用
三、介紹Java塊的定義和做用
四、介紹Java關鍵字概念
五、介紹Java四種不一樣的權限修飾符
六、介紹Java標識符定義規則
七、介紹Java變量定義和使用
八、介紹Java各類運算符
九、介紹Java基本類型互相裝換規則
十、介紹Java命名規範
---------------------- 正文結束 ------------------------
長按掃碼關注微信公衆號
Java軟件編程之家
本文分享自微信公衆號 - Java軟件編程之家(gh_b3a87885f8f5)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。