4.if (a="a") 編譯錯, if(a=false)編譯ok,原因是a=false的a代表了個boolean值
6.這種寫法Outer.Inner i = new Outer().new Inner(); OK!
7.文件裏, 8 默認是int, 8.0默認是double
8.八進制是 0開頭,不是O(英文o)
9.byte -128~127 ,-128是二進制的多少?????????????
11. -1>>32還是-1, -1>>>32爲什麼還是-1???????????????????
12. char c='c'; String s ="s"; s+=c;結果是 sc!!!
13. boolean b1=true; boolean b2=true; System.out.println(b1|b2); 結果是true.編譯沒錯!
?????java的默認import包有哪些???????
AWT
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. 所有組件flowLayout會被壓縮爲它們的最小尺寸
2. BorderLayout的North,South,West,East,Center就是這個樣子,四個單詞大小寫區分,必須這麼寫,否則錯?????????
2.1如果只是add,而不寫東南西北中,默認是中
2.2如果不加component到中,那中就空着
2.3如果某個方位有個component,如果你還往上面加component,後來的會覆蓋原來的
3. applet,panel默認佈局是flowlayout
4. frame,dialog默認佈局是borderlayout
5. 各種awe類的繼承關係,frame,window,component,...??????????
6. window,frame,dialog不能被嵌入到容器裏.注意:window!
7. action event作用於button和textfeild的回車時刻
8. item event作用於list,choice,checkbox的選擇改變時刻
9. 如果容器不可見,新layout管理器後前的component將跟隨這個新的layout變化,如果容器可見,這些component將不受後來的layout影響
10.gridLayout裏的component尺寸一樣
11.gridBagLayout裏,component可以佔用多個grid
12.System.exit();在Applet裏面不允許調用.
AWT事件
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1.事件類有
(symantic)語義事件:ActionEvent,AdjustEvent,ItemEvent,TextEvent
低級事件:ComponentEvent,ContainerEvent,FocusEvent,InputEvent,KeyEvent,MouseEvent,PaintEvent,WindowEvent
2.監聽器:
ActionListener,AdjustListener,CompentListener,ContainerListener,FocusListener,ItemListener,
KeyListener,MouseListener,MouseMotionListener,TextListener,WindwosListener, 共11個Listener,
七個adpter,少的4個是ActionLisenter,AdjustListener,ItemListener,TextListener,它們只有一個方法.
3,鼠標MouseListener有5個方法:clicked,pressed,released,entered,exited
4.鼠標MouseMotionListener有2個方法:mouseDragged,mouseMoved
類和對象(Class and Object)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
0.最外層的類可以聲明成final: "$file a":< final class a{}> ok!,但是不能是private和static的.
1.overload是同類裏同樣的方法名,override是父子的繼承
2.override的返回結果必須一樣,否則編譯錯哦
The return type of an overriding method is identical to the return type of the method it overrides.
2.1 override的modifier可以擴大,但是不能縮小.比如父類private void test(){} 子類:public void test(){} ,沒問題;如果反了,就死翹翹了!
3.super.super(),靠,錯的,沒這麼寫的
4.static和非static之間永遠無法override!
5. 看程序
public class A{
void test1() throws BaseEx{hi();}
void hi(){System.out.println("say hi,a");}
}
class AA extends A{
void hi(){System.out.println("say hi,aa");}
}
class test{
static void main(String b[]) throws Exception{
A a = new AA();
a.test1();
}
}
結果是,"say hi,aa",這說明什麼?說明,方法永遠跟着類的原來面目走;而,變量恰恰相反!
6.一個非抽象方法死活也別想override成一個抽象方法
7.override的子類的方法拋出的的異常只能是父類方法拋出異常的子異常類,或者無!
8.構造器不能是native,final,static,synchronized的,可以是public,private,什麼都沒有的,呵呵
9.構造器函數裏還可以寫return呢,但後面什麼都不許有,甚至null(這不是廢話嗎,哈哈)
10.構造器不能返回值.這大家都知道,但如果有個"構造器"反值了,別緊張,它就不是構造器嘍,只是個普通函數
11.super();this();這兩個函數只能在構造函數裏調用.
12,成員變量聲明時候賦值,比構造函數還早.int i=1; ealier than Test(){}
13.方法的參數變量可以是final.
14. hashCode返回一個int
15. void wait() throws InterruptException wait扔InterruptException異常
16. java.lang.Void 是void的包裝類
17. Byte,Interger,Double...所有的跟數有關的包裝類都是繼承於Number
接口Interface)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1.接口的所有方法默認都是public,abstract和non-static的
2.接口的所有變量默認都是public,static,final的.所以,接口的變量不能改值,在它的實現類裏.
3.接口的實現類實現的方法必須和接口的方法拋出同樣的異常,不許是子類,這和override不一樣!同樣,如果接口方法沒有拋,實現方法也不能拋.
4.實現類實現的方法必須顯式的聲明成public,什麼都不寫都不行,啊!!!
5.接口不能聲明成final,要不它怎麼被實現呢(這好像又是廢話啊
6.一個類實現兩個接口,如果兩個接口有相同的方法,實現類就實現這個方法,沒問題的.
內嵌類Inner Class)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1.內嵌類可以訪問outer類的任何變量,包括私有的.
2.靜態inner類,只能訪問outer類的任何static變量
2.1內嵌類可以是final,abstract的
3.我靠,方法內的內嵌類不能爲static: void test(){ static class A{}} XXXXX!!!!
4.我靠,方法內的內嵌類也不能帶任何modifier,void test(){ public class A{}} XXXXX!!!!
5.我靠,方法內的內嵌類只能訪問方法內的final變量,但是,可以訪問outer類的任何變量.
6.匿名類不能有構造器,但聲明時候帶參數,相當於構造器的參數傳遞.
class ABC{}
class ABCD{private ABCD(int i){}}
ABC test3(){return new ABC(){};}
ABCD test4(){return new ABCD(3){};}
interface iii{}
iii test5(){return new iii(){};}
//class BCD extends ABCD{} compile error,因爲,
看上面就知道,new iii(){};實際上匿名類實現了iii接口;new ABC(){};實際上是匿名類繼承了ABC.
8.???
class A {private A(){System.out.println("a!");}}
class B extends A{}
我靠,沒錯!B實例的時候會主動調用父類A的構造,即使是private的,看來也沒問題!!!
9.內部類可以有synchronized方法,那麼鎖是這個內部類,跟外部類沒一點關係,內外分別的,在鎖的問題上.
10.外部類不能通過this被訪問,this這時候應該指的是內部類,享用外部類的成員就直接用,不用加任何限定詞
11.如何用this呢?請看:
class Outer{ int i;
class Inner{
class InnerInner{
void Test(){
Outer.this.i=1;
}
}
}
}
看見了吧,類名.this.變量名,可以引用到i,第一次看到吧,嘿嘿,孤陋寡聞.
12.注意這兩種寫法都可以
Class Outer.Inner i = new Outer().new Inner();
或者, Class o= new Outer(); Class Outer.Inner i=o.new Inner();
線程Thread)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
?????去看Thread的API!!!!
1.線程啓動必須通過start函數.
2.run函數不許也只能是public的.
3.線程有優先級從1到10,通過Thread.setPriority(int);來改變,不能超過10,否則會出現運行異常
4.線程優先級默認是5,即NORM_PRIORITY.????????NORM_PRIORITY是Thread的靜態變量嗎?
5.????Thread.yeild();是靜態方法,所以,使用格式是Thread.yield();她強迫當前的進程放棄CUP.
6.sleep(1000),是說線程睡覺1秒,然後,進入Ready狀態,注意,不是運行狀態,它還要等OS來調度來獲得CUP.
java.lang.*;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1.數組的科隆: int ia[][]={{1,2},null}; int ib[][]=(int[][])ia.clone();
2.什麼是NaN?????然後看ceil(NaN),floor(NaN),...
3.Math.floor(-1.1f);//-2.0
Math.ceil(-1.1f);//-1.0
Math.round(-1.6d)//-2
4.0= 5.Math,Interger,Boolean...等類型包裝類都是final的,不可繼承
6.int round(float); long round(double);唉,round永遠返回不了小數點
7.static double ceil(double)
8.static double floor(double)注意,ceil,floor的只有這個double版本,什麼都轉成double!
9.static double sin(double 弧度); 還有cos,tan
10. new String; ?可以是byte[];char[];String;StringBuffer
11. String的一些函數: int length(); char charAt(int); St