隨着計算機革命的發展,不安全的編程方式逐漸成爲編程代價昂貴的因素。
通過提供構造器,可以保證每個對象都得到初始化。
在static方法內部是沒法調用非靜態方法的,但是非靜態方法是可以調用static方法的。static像全局方法一樣,不被對象調用,被類調用。
關於靜態,靜態的內容有靜態變量,靜態方法,靜態類。實際上討論到靜態方法即夠了。
關於靜態方法與實例方法,調用時,靜態方法只能調用靜態成員變量和靜態方法,實例方法美歐限制。
靜態方法意味着我在調用前不需要進行對其所屬的類進行new操作,我主要會在工具類裏面用到靜態方法。
靜態就是類的,實例就是對象的。
最大的區別在於內存。靜態方法在程序開始時生成內存,實例方法在程序運行中生成內存,
所以靜態方法可以直接調用,實例方法要先成生實例,通過實例調用方法,靜態速度很快,但是多了會佔內存。
一些情況下使用靜態方法是有好處的,因爲對於靜態方法無論你有多少個實例,
內存中要維護的一份拷貝。同時,某些方法,確實使用靜態是比較恰當的..
簡單點說,靜態方法用來執行無狀態的一個完整操作,實例方法則相反,它通常是一個完整邏輯的一部分,並且需要維護一定的狀態值。
數組是相同類型的用一個標識符名稱封裝在一起的對象序列或基本類型數據序列。
public class ArrayTest {
public static void main(String args[]){
//Here some ways of using array
//1
int[] a1={1,2,3,4,5};
int[] a2;
a2=a1;
for (int a:a2) {
System.out.println(a+1);
}
System.out.println("///////////");
//2,3
Integer[] a=new Integer[]{new Integer(3),new Integer(4),1,};
Integer[] b={new Integer(3),new Integer(4),1,};
System.out.println(Arrays.toString(a));
System.out.println(Arrays.toString(b));
}
}
/*
3
3
aaa
*/
可變數組:
public class VariableArrayTest {
//可變數組
public static void main(String args[]){
printArray(new Integer(3),3,"aaa");
}
static void printArray(Object...args){
for (Object o:args
) {
System.out.println(o);
}
}
}
/*
3
3
aaa
*/
public class EnumTest {
public static void main(String args[]){
Size a=Size.BIG;
//枚舉方法自動寫了toString方法
System.out.println(a);
//編譯器還創建了ordinal方法,用來表示某個特定enum常量的生命順序
//static value方法,用來按照enum常量的聲明順序,產生由這些常量值構成的數組
for(Size s:Size.values()){
System.out.println(s+" "+s.ordinal());
}
test(a);
}
//enum與switch是絕佳的組合
static void test(Size a){
switch (a){
case SMALL:
System.out.println("small");
break;
case MIDDLE:
System.out.println("middle");
break;
case BIG:
System.out.println("big");
break;
default:
System.out.println("error!");
}
}
}
/*
BIG
BIG 0
MIDDLE 1
SMALL 2
big
*/