1.structs是基於MVC的
2.abstract
用abstract修飾的類表示抽象類,抽象類位於繼承樹的抽象層,抽象類不能被實例化。
用abstract修飾的方法表示抽象方法,抽象方法沒有方法體。抽象方法用來描述系統具有什麼功能,但不提供具體的實現。
Abstract是Java中的一個重要關鍵字,可以用來修飾一個類或者一個方法。 修飾一個方法時,表示該方法只有特徵簽名(signature),沒有具體實現,而是把具體實現留給繼承該類的子類。一個類中只要有一個abstract 方法,那麼這個類就要被聲明爲abstract,但是其中可以有非abstract方法。 abstract類可以使得類的設計者能夠創建方法的原型,而真正的實現留給使用這個類的人
3.在static方法不能使用this
4.URL u =new URL("http://www.123.com");。如果www.123.com不存在,則返回__http://www.123.com____。
打印URL的類的時候,調用URL類的toString()方法,不管URL中的網址是不是存在的,都可以將其打印出來
5.i=j++的問題
i=j++的執行步驟:
tmp=j;
j++;
i=tmp;
6.集合與map各自的繼承關係
.
7.一道繞彎子的題目
public class Test {
public static void main(String [] args){
System.out.println(new B().getValue());
}
static class A{
protected int value;
public A(int v) {
setValue(v);
}
public void setValue(int value){
this.value = value;
}
public int getValue(){
try{
value++;
return value;
} catch(Exception e){
System.out.println(e.toString());
} finally {
this.setValue(value);
System.out.println(value);
}
return value;
}
}
static class B extends A{
public B() {
super(5);
setValue(getValue() - 3);
}
public void setValue(int value){
super.setValue(2 * value);
}
}
}
怎麼理解?
首先要理解當A繼承B的時候,會繼承B的變量和方法,關鍵點就是A如果調用方法時優先自己的重寫方法,當調用父類的方法時,this的意義仍是A類(因爲是在A類中執行的)
8.異常
try捕獲(不可以拋出異常)catch用throw一個對象拋出異常
在方法體上也可以用throws進行異常的拋出
finally時不管是否有異常拋出都執行的代碼段
9.集合的線程安全問題
1. HashMap,TreeMap 未進行同步考慮,是線程不安全的。
2. HashTable 和 ConcurrentHashMap 都是線程安全的。區別在於他們對加鎖的範圍不同,HashTable 對整張Hash表進行加鎖,而ConcurrentHashMap將Hash表分爲16桶(segment),每次只對需要的桶進行加鎖。
3. Collections 類提供了synchronizedXxx()方法,可以將指定的集合包裝成線程同步的集合。比如,
List list = Collections.synchronizedList(new ArrayList());
Set set = Collections.synchronizedSet(new HashSet());
10.二元操作
兩個數值進行二元操作時,會有如下的轉換操作:
如果兩個操作數其中有一個是double類型,另一個操作就會轉換爲double類型。
否則,如果其中一個操作數是float類型,另一個將會轉換爲float類型。
否則,如果其中一個操作數是long類型,另一個會轉換爲long類型。
否則,兩個操作數都轉換爲int類型。
故,x==f1[0]中,x將會轉換爲float類型。
11.類之間存在以下幾種常見的關係:
use-a 是依賴關係
has-a 一般是組合關係
is-a 一般是繼承關係