Java入門part2–變量和類型
關鍵字:基本數據類型和字符串類型,類型轉換,變量命名規則,列出了和C語言種不同的點方便區分理解
數據類型
- 所有的java編程語言中的整數類型都是帶符號的數字
- Java中定義變量一定要初始化,否則會報錯
- Java中沒有全局變量這一說(C語言中局部變量不初始化是隨機值,全局變量是0)
- 跟C語言不同的是,給某類型數據賦大於其能表示範圍的數據時,編譯不通過,而C語言就可以執行出來=》Java很安全
整型變量
byte 字節類型
- 用byte定義一個字節,佔1個字節 ,表示範圍-128-127
- Java中的字節類型對標的是C語言中的char
- 也是屬於數值類型的一種
short 短整型
- 佔2字節 短整型
- 表示範圍太小,一般不推薦用
int 整型
- Java中int型佔4個字節,跟系統沒有關係 因爲Java具有跨平臺性,一次編譯到處運行
- Integer.MAX_VALUE 獲得int的最大值
- Integer.MIN_VALUE 獲得int的最小值
其中Integer是Java中自己的一個類,是int對應的包裝類
int short 之類的都是Java的內置類型
溢出
long 長整型
- 長整型long佔8個字節,與平臺無關
- 注意賦初值的時候
long a=10L;
也可以寫成long a=10;
(默認把整型賦值給long)或long a=10l;
但不推薦
浮點型變量
double 雙精度浮點型
- double 雙精度浮點類型,8個字節
double num = 1.1;
System.out.println(num * num)
// 執行結果
1.2100000000000002
注意:Java 中的 double 雖然也是 8 個字節, 但是浮點數的內存佈局和整數差別很大, 不能單純的用 2 ^ n 的形式表示數據範圍.
float 單精度浮點型
- 單精度浮點類型 4字節
flout a=12.5f;
強類型語言:越需要進行強轉的就是強類型語言,不強轉編譯不通過
若flout a=12.5
會報錯,默認12.5爲double類型,flout a=12.5d
就可以,所以遇到小數一般定義爲double類型
字符類型
char
- 字符類型 2字節
- 注意和C語言中的char區分開 在C語言中表示1個字節迷你整型,分爲有符號,有符號表示範圍在(-128~ 127)和無符號(表示範圍在0~ 255)
- Java中char無符號 表示範圍0~ 2^16-1(65535)即’\u0000’–’\uffff’
- 編碼和解碼 C語言中ASC碼 java中Unicode碼 可以表示65526個字符,可以表示的範圍更大 中文拉丁文等都可以表示(相當於ASC碼的擴充)
布爾類型
boolean 只能給其賦值true或者false 標準並未規定布爾類型字節大小
字符串類型 重要
- C語言沒有字符串類型
- Java中定義字符串類型用String String str=“hello”;
並未有\0結尾 - 注意 String不是基本類型,屬於引用類型
- int short long double float char byte boolean 是Java中的八種內置類型(即簡單類型)
- Java中的字符串拼接直接用
+
就可以,C語言中要調用庫函數strcat()
變量
- 變量的命名:
- 名字只能由字母數字下劃線組成
- 數字不能開頭
- 變量名大小寫敏感num和Num是兩個不同的變量
- 變量名小駝峯形式(多個單詞組成時第一個單詞小寫後面單詞首字母大寫)
常量
- C語言中用
const
定義常量 必須在定義的同時初始化 - Java中用
final
修飾的變量是常量final int a=10;
可以不在定義的同時進行初始化,但是一旦被初始化就不能再更改 - 常量:運行期間不可以改變 變量:運行期間可以改變
final還可以修飾函數 類 接口
類型轉化
int 和long進行數據轉化
int a=1;
long b=2;
a=b;//不可以 long8字節,int 4字節 大類型賦值給小類型,會報錯 如果需要這樣轉則需要強制類型轉換 a=(int)b;
b=a;//可以 小類型給大類型 默認發生隱式類型轉換
注
-
int和boolean 轉換不了 因爲類型不兼容 不可以進行相互的賦值 強轉也不可以
-
short和char都是2個字節 但是直接互相賦值編譯不通過,因爲一個是字符類型 一個是數值類型 非要這麼寫可以強轉
-
當兩個類型進行運算時 運算過程中小類型會先提升爲大類型再運算,所以運行結果是大類型
+CPU通常是以4個字節爲單位往內存中讀數據,所以計算時像short byte這種不夠四個字節的都會提升爲四個字節再運算,所以運算出來是int型,byte c=(a+b);
會報錯,結果要賦給byte類型的話要強轉
byte a=10;
byte b=20;
byte c=(byte)(a+b); /CPU通常是以4個字節爲單位往內存中讀數據,所以計算時像short byte這種不夠四個字節的都會提升爲四個字節再運算,所以運算出來是int型,結果要賦給byte類型的話要強轉