java數據類型和運算符的深入講解
一.整型變量
1.基本格式
int 變量名 = 初始值;
代碼示例:
public class CSDN { public static void main(String[] args) { int a=10; System.out.println(a); } }
2.java中的int是4個字節。
3.java中int的最大值和最小值
如果數大於0,則最高位為0,如果數小於0,則最高位為1。在判斷數值范圍時,不用考慮負數采用補碼形式存儲,因為補碼和原碼是一一對應的。當最高位是1,即為負數,後面最多還有31個1,而這31個1的加值之和為2的31次方-1,而負數最高位也為1,該位在再次進位時仍滿足負數的條件,即可將最高位看成數值位,故最小值為-2的31次方,最大值整數最高位必須一值為1,且原碼等於補碼,這就限制瞭整數的最大值31位的1相加,之和為2^31-1。
public class CSDN{ public static void main(String[] args) { int a = 10; System.out.println(Integer.MAX.VALUE); System.out.println(Integer.MIN.VALUE); } }
4.如果一個局部變量,沒有進行初始化則不能使用他。
標識符可以包含:數字 字母 下劃線 符 , 但 開 頭 不 能 用 數 字 , 不 建 議 用 下 劃 線 和 符,但開頭不能用數字,不建議用下劃線和 符,但開頭不能用數字,不建議用下劃線和.
二. 長整型變量
定義一個長整型,數字後面必須加L
public static void main(String[] args) { Long a = 10L; System.out.println(a); }
java與c語言不同,沒有所謂的無符號,Long有8個字節,64個比特位,首位是符號位。
如果想打印漢字的話用加號拼接。
public static void main(String[] args) { Long a = 10L; System.out.println(a); System.out.println("a的值是:"+a);//打印漢字用引號括起來然後用加號拼接
任何類型的數據和字符串進行拼接,結果就是字符串。
三.雙精度浮點類型
public static void main(String[] args) { //雙精度浮點型 double d = 12.5; System.out.println(d); }
小數默認為雙精度類型。
public static void main(String[] args) { int a = 1; int b = 2; System.out.println(a / b); } //輸出結果是0
因為a和b都是整型,所以打印的也是整型,不能保存小數。
public static void main(String[] args) {, double num = 1.1; System.out.println(num * num) // 執行結果=1.2100000000000002 }
任何的小數都是有精度的,沒有精確值,隻有一個范圍,要研究這個問題需要瞭解浮點數在內存中的存儲。
一般情況下,遇到小數,建議使用double
四.單精度的浮點類型
float是4個字節,不能把double類型放在float類型裡,會編譯錯誤,需要在小數後面加個f,體現瞭Java的安全。
public static void main(String[] args) { float f = 12.3; System.out.println(f); }
五.字符數據類型
在java中char占兩個字節,在c語言中是占一個字節的。
public static void main(String[] args) { char ch = 'a'; System.out.println(ch); char ch2 = 97; System.out.println(ch2); }
在java中遵循unicode字符集類似於c語言中的asii值,但unicode表示字符的范圍更廣瞭。
六.字節類型
註意事項:
- 字節類型表示的也是整數. 隻占一個字節, 表示范圍較小 ( -128 -> +127 )
- 字節類型和字符類型互不相幹。
public static void main(String[] args) { byte b = 12; byte c = 21; System.out.println(b+" "+c); }
每一種數據類型在賦值的時候不能超過其范圍,否則會報錯。
七.短整型
short是兩個字節,取值范圍是-32768到32767.
這個表示范圍較小,一般不建議使用。
public static void main(String[] args) { short sh = 12; System.out.println(sh); }
八.佈爾類型
佈爾類型:
1.在java中,佈爾類型沒有明確的大小。
2.在java中,佈爾類型隻有兩個取值,true和false。
3.在java中,沒有所謂的0是假,非0是真。
public static void main(String[] args) { boolean flag = true; System.out.println(flg); }
總結:
java中8種基本的數據類型分別是一下的:
1 2 2 4 8 4 8
byte char short int long float double boolean
Byte Character Short Integer Long Float Double Boolean
字符串類型變量
字符串類型用String進行定義
註意事項:
- Java 使用 雙引號 + 若幹字符 的方式表示字符串字面值.
- 和上面的類型不同, String 不是基本類型, 而是引用類型(後面重點解釋).
- 字符串中的一些特定的不太方便直接表示的字符需要進行轉義.
字符串的 + 操作, 表示字符串拼接:
String a = "hello"; String b = "world"; String c = a + b; System.out.println(c);
以上代碼說明, 當一個 + 表達式中存在字符串的時候, 都是執行字符串拼接行為.
因此我們可以很方便的使用 System.out.println 同時打印多個字符串或數字。
理解數值提升
int 和 long 混合運算
int a = 10; long b = 20; int c = a + b; // 編譯出錯, 提示將 long 轉成 int 會丟失精度 long d = a + b; // 編譯通過
結論: 當 int 和 long 混合運算的時候, int 會提升成 long, 得到的結果仍然是 long 類型, 需要使用 long 類型的變量來
接收結果. 如果非要用 int 來接收結果, 就需要使用強制類型轉換.
byte 和 byte 的運算
byte a = 10; byte b = 20; byte c = a + b; System.out.println(c); // 編譯報錯 Test.java:5: 錯誤: 不兼容的類型: 從int轉換到byte可能會有損失 byte c = a + b;
結論: byte 和 byte 都是相同類型, 但是出現編譯報錯. 原因是, 雖然 a 和 b 都是 byte, 但是計算 a + b 會先將 a 和 b 都提升成 int, 再進行計算, 得到的結果也是 int, 這是賦給 c, 就會出現上述錯誤。
由於計算機的 CPU 通常是按照 4 個字節為單位從內存中讀寫數據. 為瞭硬件上實現方便, 諸如 byte 和 short 這種低於4 個字節的類型, 會先提升成 int, 再參與計算。
類型提升小結:
- 不同類型的數據混合運算, 范圍小的會提升成范圍大的.
- 對於 short, byte 這種比 4 個字節小的類型, 會先提升成 4 個字節的 int , 再運算.
int 和 String 之間的相互轉換
int 轉成 String
int num = 10; // 方法1 String str1 = num + ""; // 方法2 String str2 = String.valueOf(num);
String 轉成 int
String str = "100"; int num = Integer.parseInt(str);
運算符
1.基本四則運算符 + – * / %
規則比較簡單,值得註意的是除法
a) int / int 結果還是 int, 需要使用 double 來計算
b) 0 不能作為除數
2.關系運算符返回類型都是boolean類型。
3.移位運算符
左移 <<: 最左側位不要瞭, 最右側補 0。
右移 >>: 最右側位不要瞭, 最左側補符號位(正數補0, 負數補1)
註意:
- 左移 1 位, 相當於原數字 * 2. 左移 N 位, 相當於原數字 * 2 的N次方.
- 右移 1 位, 相當於原數字 / 2. 右移 N 位, 相當於原數字 / 2 的N次方.
- 由於計算機計算移位效率高於計算乘除, 當某個代碼正好乘除 2 的N次方的時候可以用移位運算代替.
- 移動負數位或者移位位數過大都沒有意義。
總結
到此這篇關於java數據類型和運算符的文章就介紹到這瞭,更多相關java數據類型和運算符內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!