1、 >>>最高位用0填充,>>最高位用符號位填充 ,沒有<<。
2、 強制轉換是直接截斷,要四捨五入的話需要用Math.round();
3、 boolean不要於任何數值類型進行轉換。除非b?1:0
4、Java沒有內置字符串類型。
5、String類沒有提供用於修改字符串的方法,方便字符串共享。
6、C++重載了==,可以用它來檢測字符串的相等性。Java沒有重載。C也不用==對字符串進行比較,而使用strcmp函數。Java的compareTo()方法與strcmp類似。
- greeting.compareTo("Hello")==0
7、length()返回代碼單元數量;
codePointCount()返回代碼點數量。
charAt(n)將返回位置n的代碼單元,n介於0-s.length()-1。
得到第i個代碼點,
- greeting.offsetByCodePoints(0,i);
- greeting.codePointAt(i);
- StringBuilder builder = new
- StringBuilder();builder.append(ch/str);
- or String completeString = builder.toString();
返回一個與構建器或緩沖器相同的字符串。
8、輸入: Scanner類位於 Java.util.*
Console類可以實現控制台讀取密碼:
- Console cons = System.console();
- String username = cons.readLine("User name:");
- char[] passwd = cons.readPassWord("PassWord:");
9、被格式化的參數索引:
- System.out.printf("%1$s %2$tB %2$te %2$ty", "Due date:" , new Date());
10、文件的輸入與輸出:
- Scanner in = new Scanner(new File("myfile.txt")); //如果文件名包含反斜槓 ,要轉義,加一個反斜槓。
- PrintWriter out = new PrintWriter("myfile.txt");
如果用一個不存在的文件構造一個Scanner,或者用一個不能被創建的文件名構造一個PrintWriter,那麼就會發異常。
11、如果整數,浮點不能滿足精度要求,可以使用Java.math包中的兩個類:BigInteger 和 BigDecimal
- BigInteger a = BigInteger.valueOf(100);
不能使用+ *來處理大數值,而是add 和multiply方法。
12、
- for(variable : collection) statement;
打印數組更見的方法: Arrays.toString(a); //返回一個包含數組元素的字符串。
數組的初始化:
- 1) int[] smallPrimes = {2,3,4,5,6,7}; //不需要使用new。
- 2) new int[] {2,3,4,5,6,7} //匿名初始化,將創建一個新的數組 並利用括號中提供的值進行初始化,數組的大小就是初始值的個數。
Java允許數組長度為0。
允許數組拷貝,這是兩個變量引用同一個數組。如果要拷貝到一個新的數組 需要使用Arrays.copyOf(number , length),通常用這個方法來增加數組的大小,剩余的數值賦0,布爾型賦false。
Java數組與C++數組在堆棧上有很大不同,但基本上與分配在heap上的數組指針一樣。
- int[] a = new int[100]; //Java []被預定義為檢查數組邊界,而沒有指針運算,即不能通過a+1得到數組下一個元素。
不同於
- int a[100] //c++
而等同於
- int *a = new int[100]; //c++
數組排序: sort
快速打印一個二維數組的數據元素列表:Arrays.deepToString(a);
Java實際上只有一維數組。
13、命令行參數
Java Message -g cruel world args[0]: "-g" args[1]:"cruel" args[2]: world