JAVA的學習日記3
阿新 • • 發佈:2020-09-07
Java基礎型別拓展
public class Demo03 { public static void main(String[] args) { //基礎資料型別拓展 //整型 二進位制ob 十進位制 八進位制0 十六進位制0x int i = 10; int i1 = 010; //八進位制 int i2 = 0x10; //十六機制 System.out.println(i); //10 System.out.println(i1); //8 System.out.println(i2); //16 System.out.println("======================"); //浮點數拓展 float f = 0.1f; //0.1 double d = 1.0/10; //0.1 System.out.println(f == d); //false System.out.println(f); //0.1 System.out.println(d); //0.1 float f1 = 21231212121212f; float f2 = f1 + 1; System.out.println(f1 == f2); //true /*所以說浮點數是存在缺陷的,浮點數是:有限的、離散的、是有舍入誤差的,表示的是一個大約數,接近但不等於*/ /*所以最好完全避免使用浮點數進行比較*/ /*所以最好完全避免使用浮點數進行比較*/ /*所以最好完全避免使用浮點數進行比較*/ //所以後面比較的時候會用到BigDecimal 是一個數學工具類 //字元拓展 char c1 = 'a'; char c2 = '中'; System.out.println(c1); System.out.println((int)c1); //強制轉換 97 System.out.println(c2); System.out.println((int)c2); //強制轉換 20013 //所有的字元本質還是數字 //編碼 Unicode--->表:(A=65 a=97) 佔據2個位元組 最多可以表示65536個字元 //表示範圍U0000-UFFFF char c3 = '\u0061'; System.out.println(c3); //a //轉義字元 //\t 製表符 \n換行 System.out.println("Hello\tWorld"); //Hello World System.out.println("Hello\nWorld"); /*Hello World*/ String s1 = new String("Hello World"); String s2 = new String("Hello World"); System.out.println(s1 == s2); //false String s3 = "Hello World"; String s4 = "Hello World"; System.out.println(s3 == s4); //true //物件 從記憶體上分析 //布林值拓展 boolean flag = true; if(flag){} //上下兩行的表示意思相同,後面的大多時候都會使用上面的方法 if(flag==true){} } }
轉義字元表
Java型別轉換
-
由於Java是強型別語言,所以要進行有些運算的時候,需要用到型別轉換
-
運算中,不同型別的資料先轉化為同一型別,然後在進行運算
-
強制型別轉換
-
自動型別轉換
public class Demo04 { public static void main(String[] args) { int i = 128; byte b = (byte)i; System.out.println(i); //128 System.out.println(b); //-128 /*很明顯第二個結果輸出的不符合預期,這是因為byte型別的資料範圍是-128~127, 因為型別強制轉換,導致了記憶體溢位所以在操作的時候要儘量避免*/ // 強制轉換格式: (型別)變數名 低---高 // 自動轉換: 不需要任何操作 高---低 /* * 注意點: * 1.不能對布林值進行轉換 * 2.不能把物件型別轉換為不相干的型別 * 3.在把高容量轉換到低容量打的時候,強制轉換 * 4.轉換的時候可能存在記憶體溢位或者精度問題【浮點數】! * */ System.out.println((int)23.7); //23 System.out.println((int)-12.5f); //-12 char c = 'a'; int d = c + 1; System.out.println(d); //98 System.out.println((char)d); //b } }
大數操作的時候應該注意的問題
public class Demo05 { public static void main(String[] args) { //操作比較大的數的時候,注意溢位問題 //JDK7新特性,數字之間可以使用下劃線分割,並且輸出的時候不會輸出下劃線 int money = 10_0000_0000; int years = 20; int total = money * years; //-1474836480 說明計算的時候溢位了 long total2 = money * years; //-1474836480 表示預設是Int,轉換之前就已經存在問題了 long total3 = money * (long)years; //20000000000 先把一個數轉換為long,就能符合強型別轉換了 System.out.println(total3); } }