編碼 ASCII:用八位二進位的低七位,一共規定了128個字元的編碼,一個位元組表示一個字元, 擴展ASCII:第八位為1,規定了以1開頭的128個字元 Unicode:固定大小的編碼,通常兩個位元組表示一個字元,字母和漢字統一用兩個位元組,浪費空間 UTF-8:是一種變長的編碼方式。字母用一個位元組,漢字 ...
編碼
ASCII:用八位二進位的低七位,一共規定了128個字元的編碼,一個位元組表示一個字元,
擴展ASCII:第八位為1,規定了以1開頭的128個字元
Unicode:固定大小的編碼,通常兩個位元組表示一個字元,字母和漢字統一用兩個位元組,浪費空間
UTF-8:是一種變長的編碼方式。字母用一個位元組,漢字用三個位元組,是在互聯網上使用最廣的一中Unicode的實現方式
gbk:可以表示漢字,範圍廣,字母用一個位元組,漢字用兩個位元組 ANSI編碼 -- 不同地區採用的編碼的統稱
UTF-8編碼規則:
1)對於單位元組的符號,位元組的第一位設為0,後面7位為這個符號的 Unicode 碼。因此對於英語字母,UTF-8 編碼和 ASCII 碼是相同的。
2)對於n位元組的符號(n>1),第一個位元組的前n位都設為1,第n+1位設為0,後面位元組的前兩位一律設為10。剩下的沒有提及的二進位位,全部為這個符號的 Unicode 碼。
編碼 | 大小 | 支持語言 |
---|---|---|
ASCII | 1個位元組 | 英文 |
Unicode | 2個位元組(生僻字4個) | 所有語言 |
UTF-8 | 1-6個位元組,英文字母1個位元組,漢字3個位元組,生僻字4-6個位元組 | 所有語言 |
基本語法
編寫 Java 程式時,應註意以下幾點:
- 大小寫敏感:Java 是大小寫敏感的,這就意味著標識符 Hello 與 hello 是不同的。
- 類名:對於所有的類來說,類名的首字母應該大寫。如果類名由若幹單片語成,那麼每個單詞的首字母應該大寫,例如 MyFirstJavaClass 。
- 方法名:所有的方法名都應該以小寫字母開頭。如果方法名含有若幹單詞,則後面的每個單詞首字母大寫。
- 源文件名:源文件名必須和類名相同。當保存文件的時候,你應該使用類名作為文件名保存(切記 Java 是大小寫敏感的),文件名的尾碼為 .java。(如果文件名和類名不相同則會導致編譯錯誤)。
- 主方法入口:所有的 Java 程式由 public static void main(String[] args) 方法開始執行。
標識符
Java 所有的組成部分都需要名字。類名、變數名以及方法名都被稱為標識符。
關於 Java 標識符,有以下幾點需要註意:
- 所有的標識符都應該以字母(A-Z 或者 a-z),美元符($)、或者下劃線(_)開始
- 首字元之後可以是字母(A-Z 或者 a-z),美元符($)、下劃線(_)或數字的任何字元組合
- 關鍵字和保留字不能用作標識符
- 標識符是大小寫敏感的
- 標識符不能包含空格
- 合法標識符舉例:age、$salary、_value、__1_value
- 非法標識符舉例:123abc、-salary
內置數據類型
Java語言提供了八種基本類型。六種數字類型(四個整數型,兩個浮點型),一種字元類型,還有一種布爾型。
byte:
- byte 數據類型是8位、有符號的,以二進位補碼表示的整數;
- 最小值是 -128(-2^7);
- 最大值是 127(2^7-1);
- 預設值是 0;
- byte 類型用在大型數組中節約空間,主要代替整數,因為 byte 變數占用的空間只有 int 類型的四分之一;
- 例子:byte a = 100,byte b = -50。
short:
- short 數據類型是 16 位、有符號的以二進位補碼表示的整數
- 最小值是 -32768(-2^15);
- 最大值是 32767(2^15 - 1);
- Short 數據類型也可以像 byte 那樣節省空間。一個short變數是int型變數所占空間的二分之一;
- 預設值是 0;
- 例子:short s = 1000,short r = -20000。
int:
- int 數據類型是32位、有符號的以二進位補碼表示的整數;
- 最小值是 -2,147,483,648(-2^31);
- 最大值是 2,147,483,647(2^31 - 1);
- 一般地整型變數預設為 int 類型;
- 預設值是 0 ;
- 例子:int a = 100000, int b = -200000。
long:
-
long 數據類型是 64 位、有符號的以二進位補碼表示的整數;
-
最小值是 -9,223,372,036,854,775,808(-2^63);
-
最大值是 9,223,372,036,854,775,807(2^63 -1);
-
這種類型主要使用在需要比較大整數的系統上;
-
預設值是 0L;
-
例子: long a = 100000L,Long b = -200000L。
"L"理論上不分大小寫,但是若寫成"l"容易與數字"1"混淆,不容易分辯。所以最好大寫。//註意:java對於整型的預設類型為int,數的末尾要加上L long n1 = 100L;
float:
-
float 數據類型是單精度、32位、符合IEEE 754標準的浮點數;
-
float 在儲存大型浮點數組的時候可節省記憶體空間;
-
預設值是 0.0f;
-
浮點數不能用來表示精確的值,如貨幣;
-
例子:float f1 = 234.5f。
//Java對於浮點數的預設類型為double float f1 = 1.1f; //末尾的f不可省,否則相當於八個位元組的數據放到四個位元組,編譯會報錯
double:
-
double 數據類型是雙精度、64 位、符合IEEE 754標準的浮點數;
-
浮點數的預設類型為double類型;
-
double類型同樣不能表示精確的值,如貨幣;
-
預設值是 0.0d;
-
例子:double d1 = 123.4。
System.out.println(8.1/3); //結果為2.6999999999999997 //儘量不要直接判斷兩個浮點數是否相等,應該以兩個數的差值的絕對值是否在某個精度範圍內來判斷兩個浮點數是否相等 System.out.println(5.2e1); //結果為52.0 註意末尾的0不可以省略
boolean:
-
boolean數據類型表示一位的信息;
-
只有兩個取值:true 和 false;
-
這種類型只作為一種標誌來記錄 true/false 情況;
-
預設值是 false;
-
例子:boolean one = true。
不可以用0/1代替false/true,只有兩個值
char:
- char類型是一個單一的 16 位 Unicode 字元 兩個位元組;
- 最小值是 \u0000(即為0);
- 最大值是 \uffff(即為65,535);
- char 數據類型可以儲存任何字元;
- 例子:char letter = 'A';。
註:字元型的本質,其實是字元對應的ASCII編碼
自動類型轉換
-
有多種類型的數據混合運算時,系統首先自動將所有數據轉換成容量最大的那種數據類型,然後再進行計算
int n1 = 10; float t1 = n1 + 1.1; //錯誤,系統會將n1 + 1.1的結果轉為預設的double類型,將8位元組的double賦給4位元組的float會報錯 float t2 = n1 + 1.1F; //正確
-
當把精度大的數據類型賦給精度小的數據類型時,就會報錯,反之就會進行自動類型轉換
-
(byte , short ) 和 char 之間不會相互自動類型轉換
byte b1 = 10; //當把數賦給byte時,先判斷該數是否在byte範圍內[-128,127],在就沒問題 int n2 = 1; byte b2 = n2; //錯誤,只有賦的是具體的數時,才會先判斷該數是否在byte範圍內 char c1 = b1; //char與byte之間不能相互自動類型轉換 short s1 = b1; //short與byte之間同樣也不能相互自動類型轉換
-
byte , short , char 他們三者之間可以計算,在計算時首先轉換為int類型
byte b1 = 1; byte b2 = 2; short s1 = b1 + b2; //錯誤,計算後的結果為int char c1 = b1 + b2; //錯誤,原因同上 int s2 = b1 + b2; //correct
-
Boolean類型不參與自動類型轉換
-
自動提升原則,表達式結果的類型自動提升為操作數中精度最高的類型
強制類型轉換
當進行數據精度大小 由大到小的轉換時,就需要用到強制類型轉換
int n1 = (int)1.9;
System.out.println("n1="+n1); //n1=1
int n2 = 2000;
byte b1 = (byte)n2;
System.out.println("b1="+b1); //b1=-48 發生溢出
強制類型強轉只針對最近的操作數有效,往往會用小括弧提高優先順序
int x = (int)10*3.5+2.4; //錯誤,不能將double轉換為int
int x = (int)(10*3.5+2.4); //正確 37.4->37
char類型可以保存int的常量值,但不能保存int的變數值,需要強轉
byte ,short 和 char 類型在進行運算時,當做int類型處理