BigDecimal:支持任意精度的定點數,適用於精確的貨幣計算(必須String作爲構造器參數,否則依舊會出現精度損失的情況)(double和float由於會出現精度丟失的問題,適用於科學計算)。
JAVA數組:確保初始化,犧牲少量內存的代價進行運行時的範圍檢查(下標檢查)。
無需銷燬JAVA對象:Java對象無法在作用域之外被引用,但會一直存在於堆中,它不需要像C++那樣指定其存在的時間;由於java存在垃圾回收機制,也不要擔心堆中滯留的對象會導致內存溢出。(回收長時間、、、未被引用的對象)
方法參數列表:方法的參數都是對象(言外之意就是基本類型最好使用包裝器類型進行傳遞麼?不過實際場景中由於自動包裝和自動拆包的特性應該也沒必要這麼做)
static的用法:1、爲特定域分配單一的存儲空間(static域,靜態變量)。2、定義靜態方法,不與類的對象關聯(靜態方法)。由於static方法不需要由特定對象進行訪問,所以導致static方法也不能訪問非static的域(變量)[也可以簡單的粗暴的認爲:static類型的方法不是初始過後的對象進行調用的,所以對於需要初始化的非static變量,它不能夠訪問;嗯,沒有完成義務,同樣不能享受福利?]另外static方法可以通過初始化的具體對象進行引用(莫名有種重複定義的感覺,可能是某些特定的情境下需要吧)
public class TestStatic {
private static int a = 3;
private int b = 4;
public int getA(){
return a;
}
public static int getNum(){
return a;
}
public static void main(String[] args){
TestStatic ts = new TestStatic();
System.out.println(TestStatic.getNum()); //類名訪問靜態方法
System.out.println(ts.getNum()); //具體的對象訪問靜態方法
System.out.println(ts.a); //具體的對象訪問靜態域
System.out.println(TestStatic.a); //類名訪問靜態域
System.out.println(ts.getA()); //通過非靜態方法獲取靜態域
//可以粗略的當作靜態成員擁有天然的初始化屬性,可以較爲自由的訪問
//而非靜態成員在未經具體對象初始化就去訪問是會報錯的
}
}
args: 存儲命令行參數;
關於等於符號 "=" 當使用 "=" 給基本類型賦值時,是將右值複製給左值,右值和左值分別指向不同的物理地址,兩者各自的運算不影響對方的值;當使用 "=" 給對象類型賦值時,此時是將同一個對象的引用分享給了另一個對象,也就是俗稱的淺拷貝,不論左值還是右值試圖修改對象的屬性,都會導致對方發生改變。將對象作爲參數傳遞到方法中,對象在方法中被修改某些域,方法外的對象也被改變。(JDK5)