第2章 數據類型
Java中的數據類型劃分簡單數據類型和複合數據類型。
2.1 基本數據類型
八種基本類型:分爲4組
1. 整型:短整型(short)、整型(int)、長整型(long)、字節型(byte)。這些都是有符號的整數值。
2. 浮點型:單精度浮點型(float)、雙精度浮點型(double)。
3. 布爾型(boolean):有兩種值 “真”、“假”。
4. 字符型(char):代表數字或字母等字符集的符號。
2.1.1 整型
整型的長度和取值範圍
整數類型 |
位數 |
值的範圍(符號位佔1位) |
byte |
8位(1個字節) |
-128到127 (-2 -- 2 -1) |
short |
16(2個字節) |
-32768到32767 (-2 -- 2 -1) |
int |
32(4個字節) |
-2 -- 2 -1 |
long |
64(8個字節) |
|
1. Java語言的整型都是有符號的。
2. Java語言的整型變量默認爲int型。
3. long型常量一般以“l”或“L”結尾。例如:long a= -100L;
4. 只要整數表達式中包含byte/short/int和字面量(如2),都被升級爲int類型。例如:
byte a= 2; //這句沒錯
a=a+2; //這種寫法錯誤,應改成:a=(byte)(a+2);進行強制類型轉換。同理short;
5. 八進制整數:以0(零)開頭,如012表示十進制數10。
6. 十六進制整數:以0x(零x)或0X開頭,如0x123表示十進制數291。
7. 整數類型不依賴於操作系統,在任何平臺都有相同的長度和屬性。
2.1.2浮點型
浮點型的長度和取值範圍
浮點類型 |
位數 |
值的範圍 |
float |
32(4個字節) |
|
double |
64(8個字節) |
|
1. 在數字後面帶有F或f(float)、D或d(double),或者一個數字包括小數點或指數部分,則該數字爲浮點類型。
2. 十進制數形式:由數字和小數點組成,如0.123, 1.23, 123.0
3. 科學計數法形式:如:123e3或123E3,其中e或E之前必須有數字,且e或E後面的指數必須爲整數。
4. float型的值,必須在數字後加“f”或“F”,如1.23f。例如:float a=1.2;這種寫法是錯誤的,應該寫成 float a=1.2f;或float a=1.2F;
5. 當聲明浮點型的變量時,默認爲double型。所以變量都用double型。
6. 當精度比較高,數值比較大時用double,而且double在CPU上處理速度更快,所以Sin()等函數返回的都是double型。
7. 浮點型也是平臺無關性的。在任何操作系統上都有相同的長度和取值範圍。
float f=900.09f;//正確
float f=900.09;//錯誤,字面量自動擴展爲double
float f1=5;//正確,爲什麼?(5字面量是int型的,int型可以自動轉換爲float型的)。
【練習題】Whichthree are valid declaraction of a float?
A.float foo=-1; B. float foo=1.0; C. float foo=42e1;
D.float foo=2.02f; E. floatfoo=3.03d; F. float foo=0x0123;
【Answer】:A,D,F 【分析】:B錯誤,因爲1.0在Java中是double類型的,C,E錯誤同樣道理,都是double類型的。
2.1.3 字符型
1. Java語言裏char的表示範圍爲0到65536,包含了ASCII碼(表示範圍爲0到127)。
2. 字符常量是用單引號括起來的一個字符,如'a','A';
3. 字符型變量: 類型爲char,它在機器中佔16位 ,其範圍爲0~65535。
字符型變量的定義如:char c='a'; /*指定變量c爲char型,且賦初值爲'a'*/
2.1.4 布爾型
1. 在Java中,布爾型數據只有兩個值true和false,且它們不對應於任何整數值(不對應0或1!)
2. 布爾型變量的定義如:boolean bl1=true; boolean bl2=false;
3. boolean值只能做布爾運算
4. Java中整型的1和0不能作爲布爾值,而有些語言如C,C++,JavaScript是可以的。
===========================================================================
下面是總結變量聲明的方式:
public class DataType {
public static void main(String[]args){
int x,y; // 定義x,y兩個整型變量
x = 12;
y = 300;
float z = 1.234f; // 指定變量z爲float型,且賦初值爲1.234
double w = 1.234;
boolean state = true;
char c ;
c = 'A';
String str;
str = "byte";
String str1 ="HI";
}
}
Java中,單個字符用單引號,字符串用雙引號。
2.1.5簡單數據類型中各類型數據間的優先關係和相互轉換
1.不同類型數據間的優先關係如下:
低------------------------------------------->高
byte,short,char->int -> long -> float -> double
2.自動類型轉換規則
整型、實型、字符型數據可以混合運算。運算中,不同類型的數據先轉化爲同一類型,然後進行運算,轉換從低級到高級;
3. 強制類型轉換
高級數據要轉換成低級數據,需用到強制類型轉換。 如:
int i;
byte b=(byte)i; /* 把int型變量i強制轉換爲byte型 */
【習題】
l 一個函數定義的返回值是float,它不能在return語句中返回的值的類型是( )
A.char B.float C.long D.double
答案:D
2.1.6 常量和變量
常量:用關鍵字final來實現。如:final int NUM=100; 注意:常量名全部大寫!
變量的初始化
每個變量都必須有初始值;
變量的初始化分顯式和隱式
顯式是指由用戶初始化或表達式賦值的初始化。如:局部變量
隱式是指系統自動賦給缺省值。如:類變量、實例變量(類屬性)、數組成員
例:指出程序中的錯誤,並說明原因。然後修改程序。思考該題說明了什麼問題。
class AA {
int num;
void test() {
int j;
j = j + num;
}
}
局部變量j未初始化;int j=0;
每個變量都必須有初始值,局部變量必須顯示初始化,即由用戶初始化或表達式賦值初始化。 類變量的初始化可以是隱式的,即系統自動賦給默認值。其中num是類變量,j是局部變量。
關於變量作用域的說明:
注意:在一個確定的域中,變量名應該是唯一。
類變量:類變量在類中聲明,而不是在類的某個方法中聲明,它的作用域是整個類。
方法參數:方法參數傳遞給方法,它的作用域就是這個方法。
異常(Exception)處理參數:異常處理參數傳遞給異常處理代碼,它的作用域就是異常處理部分。
2.2 複合數據類型
Java中的複合數據類型包括class、interface、數組(Array)。