1,初始化
類變量自動初始化為0或者null,局部變量使用前一定要初始化
2,主類型過載
類型匹配順序:按照byte->short->char->int->long->float->double 順序匹配。
一種主類型只能匹配參數范圍不小于其本身和其本身范圍最接近的函數
即有int i;1.f(short s);2.f(long l);i只能適用于第2個f函數
如果是常數,則編譯器作為int處理
3,主類型計算結果的類型 和最大范圍計算子的類型一致,但是最小也要是int,即byte+byte結果為int型。
4,short型和char型不能互相賦值(因為short有符號,char無符號)
5,package一定要放在java文件第一行(除注釋空行外)
6,import只能放在第一行或者package下面
7,多個import的package里面如果有同名class,使用時必須指定package
8,interface中只能有方法宣言和定數
9,class實現interface必須實現全部方法
10,同一java文件中class和interface只能有一個public
11,為了宣言定數,在變量前加final修飾子,變量不可改變,但是object的屬性可以改變(有點忘記了,請確認,:))
12,配列不能在宣言的時候用char arr[12];形式指定,必須要用new指定大小。指定完畢后自動初期化;也可以new的時候用{0,0,0}形式指定
13,如果一個object為null,使用其屬性或者方法,產生NullPointerException
14,如果使用一個越界index訪問配列,產生ArrayOfBoundsException
15,配列長用配列名.length
16,constructor如果有返回值,編譯器作為一般方法看待
17,constructor里面如果要用super(..)和this(..),必須放在第一行,而且只能用一次
18,如果沒有顯式調用super和this,編譯器自動在第一行插入super();要求超類必須存在無參數的constructor
19,如果沒有顯式聲明constructor,編譯器自動生成默認無參數constructor。一旦聲明,則無默認constructor
20,修飾子(訪問范圍大小順序)
public 完全公開
protected 同一package或者子類中無同一package
private 本class
21,override的方法不能使訪問范圍縮小即父類中public方法不能被protected override
22,static方法不能被override?確認
23,constructor不能被繼承
24,抽象class不能同時被static修飾子修飾
25,native:方法被java以外其它語言實現
26,interface里面:
方法默認為public abstract修飾
變量默認為public static final修飾
27,abstract和final,abstract和static,abstract和private不能同時指定
28,&&,||為短路條件運算符
&,|為不短路條件運算符
29,switch()只能判斷byte,short,int,char(long,float,double不行)
30,Exception包括可check Exception和Runtime Exception可check Exception可以被編譯器檢查,Runtime Exception不被編譯器檢查,但是可以被catch捕捉
31,try{}catch{}catch{}多個catch語句按照聲明順序檢查,一旦被捕捉,以后catch就直接跳過,超類Exception可以捕捉子類Exception
32,try中即使有return,finally段也會被執行
33,method聲明用throws,拋出Exception用throw
34,強制垃圾回收,system.gc();促使垃圾回收,但不是馬上回收
35,finalize();在垃圾回收的時候自動調用;建議顯式調用super.finalize();
36,main方法的args[0]是第一個參數,例如:java Test a b c,args[0]是"a"
37,類中static段中不能throw異常,constructor里面不能throw異常
38,對于除零:整數運算拋出ArithmeticException實數運算不拋出異常;返回Infinity或者-Infinity
39,instanceof運算子,is的意思,例如:betty instanceof girl,返回true,:)
40,override和overload的區別
很簡單,不多寫了
41,inner class(內部類:重點注意)
nest class:class內部定義的class包括
(member class:作為class的member定義的class
local class:作為method局部變量定義的class
anonymous class:用new生成的沒有名字的class)
42,inner class:除了static member class以外的所有nest class總稱
inner class中不能定義static段
inner class里面不能定義沒有final修飾子修飾的static變量
inner class不能定義interface?(記不清了,自己確認一下)
43,member class的使用方法:TopClass.memberClass
44,static宣言的member class的生成方法:
TopClass的instance.new memberClass()或者new TopClass.memberClass();
45,local class不能顯式被修飾子修飾
46,local class只能存取被final修飾子修飾的上級變量(注意)
47,anonymous class instance生成方法:
new SuperClass名(){.......}或者
new Interface名(){......}
48,anonymous class
不能定義sub class(因為自己沒有名字)
不能定義為abstract class
不能定義constructor(注意)
49,Thread生成方法
繼承java.lang.Thread
實現java.lang.Runnable interface,然后用new Thread(實現Runnable接口的class)來生成Thread instance
50,Thread的join方法,等待Thread結束
51,Object的wait()方法和notify(),notifyAll()方法(線程同期化,自己好好看看)
52,同期化保留字:synchronized(有可能要求拼寫)
53,如果用synchronized修飾static方法,static寫在前頭
54,String和StringBuffer區別:String初始化后不可改變,StringBuffer可以改變
String s1="hello";
String s2="hello";
if (s1==s2){System.out.println("OK");}
執行結果是打印出OK
55, >>>運算符高位填0,是為邏輯移位
局部類和嵌套類
局部類
在一個函數體內定義的類稱為局部類。局部類中只能使用它的外圍作用域中的對象和函數進行聯系,因為外圍作用域中的變量與該局部類的對象無關。在定義局部類時需要注意:局部類中不能說明靜態成員函數,并且所有成員函數都必須定義在類體內。在實踐中,局部類是很少使用的。下面是一個局部類的例子。
int a;
void fun()
{
static int s;
class A
{
public:
void init(int i) { s = i; }
};
A m;
m.init(10);
}
嵌套類
在一個類中定義的類稱為嵌套類,定義嵌套類的類稱為外圍類。
定義嵌套類的目的在于隱藏類名,減少全局的標識符,從而限制用戶能否使用該類建立對象。這樣可以提高類的抽象能力,并且強調了兩個類(外圍類和嵌套類)之間的主從關系。下面是一個嵌套類的例子:
class A
{
public:
class B
{
public:
…
private:
…
};
void f();
private:
int a;
}
其中,類B是一個嵌套類,類A是外圍類,類B定義在類A的類體內。
對嵌套類的若干說明:
1、從作用域的角度看,嵌套類被隱藏在外圍類之中,該類名只能在外圍類中使用。如果在外圍類的作用域內使用該類名時,需要加名字限定。
2、從訪問權限的角度來看,嵌套類名與它的外圍類的對象成員名具有相同的訪問權限規則。不能訪問嵌套類的對象中的私有成員函數,也不能對外圍類的私有部分中的嵌套類建立對象。
3、嵌套類中的成員函數可以在它的類體外定義。
4、嵌套類中說明的成員不是外圍類中對象的成員,反之亦然。嵌套類的成員函數對外圍類的成員沒有訪問權,反之亦然。國此,在分析嵌套類與外圍類的成員訪問關系時,往往把嵌套類看作非嵌套類來處理。這樣,上述的嵌套類可寫成如下格式:
class A
{
public:
void f();
private:
int a;
};
class B
{
public:
…
private:
…
};
由引可見,嵌套類僅僅是語法上的嵌入。
5、在嵌套類中說明的友元對外圍類的成員沒有訪問權。
6、如果嵌套類比較復雜,可以只在外圍類中對嵌套類進行說明,關于嵌套的詳細的內容可在外圍類體外的文件域中進行定義。
1.J2EE是什么?
2.介紹JAVA中的Collection FrameWork(包括如何寫自己的數據結構)?
如COLLECTION中遺留類(HASHTABLE、VECTOR)和現有類的區別?(同步)
3.Java中異常處理機制,事件機制?
4.EJB與JAVA BEAN的區別?
EJB與JAVA BEAN是SUN的不同組件規范,EJB是在容器中運行的,分步式的,而JAVA BEAN主要是一種可利用的組件,主要在客戶端UI表現上。
5.JAVA中的多形與繼承?
可出編程,選擇題。
6.抽象類與接口?
接口的好處是將實現與表現分離。
抽象類與接口都用于抽象,但是抽象類(JAVA中)可以有自己的部分實現,而接口則完全是一個標識(同時有多重繼承的功能)。
7.Java 的通信編程,編程題(或問答),用JAVA SOCKET編程,讀服務器幾個字符,再寫入本地顯示?
8.JAVA SERVLET API中forward() 與redirect()的區別?
forward()方法可以使用原來的對象,而且速度較快。
9.JAVA解析XML的方式?
SAX、DOM
10.用JAVA實現數據庫查詢,這是一道編程題。
基本操作,不用講了。
11.用JAVA實現一種排序 ,比較,JAVA類實現序列化的方法(二種)?
如在COLLECTION框架中,實現比較要實現什么樣的接口。
12.JSP中動態INCLUDE與靜態INCLUDE的區別?
老一套,動態可以帶參數,靜態相當于一段靜態HTML文件。
13.應用服務器與WEB SERVER的區別?
14.設計模式與UML方面。
如工廠模式,解決多數據庫支持問題。
15。 編程:編寫一個截取字符串的函數,輸入為一個字符串和字節數,輸出為按字節截取的字符串。
但是要保證漢字不被截半個,如“我ABC”4,應該截為“我AB”,輸入“我ABC漢DEF”,6,應該輸出為“我ABC”而不是“我ABC+漢的半個”。
16。在ORACLE大數據量下的分頁解決方法。 一般用截取ID方法,還有是三層嵌套方法。
17。WEB SERVICE名詞解釋。JSWDL開發包的介紹。JAXP、JAXM的解釋。SOAP、UDDI解釋。
18。BS與CS的聯系與區別。
19。LINUX下線程,GDI類的解釋。
20。JAVA多線程編程。
用JAVA寫一個多線程程序,如寫四個線程,二個加1,二個對一個變量減一,輸出。
21。JAVA的基本功: STRING與STRINGBUFFER的區別。
22。STRUTS的應用(如STRUTS架構)
為 XML 文檔的已解析版本定義了一組接口。解析器讀入整個文檔,然后構建一個駐留內存的樹結構,然后代碼就可以使用 DOM 接口來操作這個樹結構。
優點:整個文檔樹在內存中,便于操作;支持刪除、修改、重新排列等多種功能;
缺點:將整個文檔調入內存(包括無用的節點),浪費時間和空間;
使用場合:一旦解析了文檔還需多次訪問這些數據;
硬件資源充足(內存、CPU)
二、SAX
為解決DOM的問題,出現了SAX。
SAX ,事件驅動。當解析器發現元素開始、元素結束、文本、文檔的開始或結束等時,發送事件,程序員編寫響應這些事件的代碼,保存數據。
優點:不用事先調入整個文檔,占用資源少;
SAX解析器代碼比DOM解析器代碼小,適于Applet,下載
缺點:不是持久的;事件過后,若沒保存數據,那么數據就丟了;
無狀態性;從事件中只能得到文本,但不知該文本屬于哪個元素;
使用場合:Applet;
只需XML文檔的少量內容,很少回頭訪問;
機器內存少;
三、JDOM
為減少DOM、SAX的編碼量,出現了JDOM;
優點:20-80原則,極大減少了代碼量
使用場合:要實現的功能簡單,如解析、創建等
Java程序
但在底層,JDOM還是使用SAX(最常用)、DOM、Xanan
四、JAPX
為多個XML解析器提供了統一編程接口
更換解析器,不用更改代碼
使用場合:若不用Jdom,一般建議使用JAPX,將代碼與各種解析器的實現細節隔離。
select * from ( select row_.*, rownum rownum_ from (sql) row_ where rownum <= ?) where rownum_ > ?