1。abstract 類中可以有非abstract方法,在abstract的子類中必須實現父類的所有abstract方法,至少要有一個空的方法體。
2。介面是一種特殊的abstract類,在介面中的方法不能含有方法體,預設的修飾是public abstract,不能人為的設定方法是private等修飾符
,但可以指定方法為abstract方法。當類implements介面,類中實現介面中的方法必須加上public修飾。
3。介面中定義的欄位會自動具有static和final屬性。它們不能是“空白final”,但可初始化成非常數運算式,介面中的欄位可以在其他類中
通過介面調用(如: 在主類中:System.out.println(jiekao.value))。
當然,欄位並不是介面的一部分,而是儲存於那個介面的static儲存地區中。
4.初始化順序:
class A
class B extends A
Class C extends B
(1)載入類到記憶體:一般在第一次使用的時候載入類(static)
(2)所有的對象和類變數設定預設,即對象為null,變數預設為0;
(3)初始化static方法和變數
(4)建構函式:從父類開始.在同一個類中,在調用建構函式之前是先類變數的初始化.
思考下面程式的輸出:
class A{
private a=11;
public A(){
show();
System.out.println("this is A struction");
}
public void show(){System.out.println("the a is value ="+a+" in class A");}
static{System.out.println("this is a static in class A");}
{System.out.println("this is a clock in class A");}
}
public class B extends A{
private a=22;
public static void main(String arg[]){
//new A();
//A test1=new B();
B test2=new B();
}
public B(){
show();
System.out.println("the B struction");
}
public void show()
{System.out.println("the a is value ="+a+" in class B");}
static{System.out.println("the static in class B");}
{System.out.println("the clock in class B");}
}
5.Math.random() 的範圍是:[0,1)
6.將一個float或double值造型成整數值後,總是將小數部分“砍掉”,不作任何進位處理。例如:char a=(char)(1.4+'a')的值為'b';
7.十六進位(Base 16)——0x;八進位(Base 8)----0;
按位元運算符~對於+數符號位先取反然後加1.如: ~3=-4;對於-數符號位取反然後減1.如 ~-2=1
8.移位元運算符
移位元運算符面向的運算對象也是二進位的“位”。可單獨用它們處理整數類型 (主類型的一種)。左移位元運算符(<<)能將運算子左邊的運
算對象向左移動運 算符右側指定的位元(在低位補0)。“有符號”右移位元運算符(>>)則將運算 符左邊的運算對象向右移動運算子右側指
定的位元。“有符號”右移位元運算符 使用了“符號擴充”:若值為正,則在高位插入0;若值為負,則在高位插入1 。Java也添加了一種“
無符號”右移位元運算符(>>>),它使用了“零擴充”: 無論正負,都在高位插入0。這一運算子是C或C++沒有的。
9.記憶體回收機制的設計方案:
reference counting 方案,自適應(adaptive)記憶體回收方案--stop-and-copy(停止-拷貝模式) 和 mark-and-sweep(標誌-清掃模式)
10.java有4中存取控制符:public,package(預設),protected,private;類只有兩種存取控制許可權:public,package(預設),類不能是private或
protected
11.singleton設計模式:
public class A
{
private A(){}
private static A a=new A();
public A getA()
{
return a;
}
}
12.類的裝載通常發生在這個類的對象第一次被建立的時候,但是在訪問static資料或static方法的時候也被調用.
13.方法重載的方式:
參數的類型不同 or 個數不同 or 順序不同.
注:僅通過傳回值來確定方法的重載,編譯不通過.
14.abstract 與 interface:
interface只提供形式,不談實現:
interface中的資料成員天生就是public static和final的,方法預設是public的,當然在一個類中定義介面或類可以用private等修飾符.
interface允許多重繼承(interface A extends B,C{} B,C是介面);
15.普通內部類中不允許有static方法,static屬性或static內部類(即嵌套類).
16.java中編譯後的.class名字:
如:class A{
class B{
class C{}
}
public void f()
{
class D{}
}
public E getE()
{
return new E(){
};
}
}
interface E{}
編譯後得到的.class檔案有:A.class,E.class,A$B.class,A$B$C.class,A$1.class,A$1D.class