1 說說&和&&的區別
相同:&和&&都可以作邏輯與的運算符,表示and,
不同:&&具有短路功能,&還可以作爲位運算符(舉例子)
2 switch語句能否作用在byte上,long呢?string呢?
只要是int就可以,byte可以,long和string不能隱式轉換爲char不能
3 char變量能不能存儲一箇中文漢字?
unicode編碼字符集中包含了漢字
4
使用final關鍵字修飾一個變量時,是引用不能變,還是引用的對象不能變?
使用final關鍵字修飾一個變量時,是指引用變量不能變,引用變量所指的對象中的內容還是可以變的
如:final StringBuffer sb = new StringBuffer("hello");
a = new StringBuffer(“hi”);//編譯錯誤
a.append(“world”)//ok!
5靜態變量和實例變量的區別?
在語法的定義區別:靜態變量前面加static關鍵字,而實例變量前不加
在程序運行時區別:實例變量屬於某個對象的屬性,必須創建實例對象,其中的實例變量纔會被分配空間,才能使用這個實例變量。靜態變量不屬於某個實例對象,而屬於類,所以也爲類變量,只要程序加載了類的字節碼,不用創建任何實例對象,靜態變量就會被分配空間,靜態變量就可以使用了,總之,實例變量必須創建對象後通過對象來使用,靜態變量可以直接使用。
6 Integer與int的區別
int是java的原始數據類型之一,java爲每個原始數據都提供了封裝類,int默認值0,而Integer的默認值是null。
在JSP開發,el表達式在文本框中顯示時,值爲空白字符串,int不適合作爲web層表單數據的類型
在Hibernate中,將OID定義爲Integer類型,那麼就可以根據null判斷對象是否爲臨時的,若爲int則還需要配置文件中設置unsaved-value的值爲0;
另外,Integer提供了多個與整數相關的操作方法,例如將一個字符串轉換爲整數,還有表示整數最大最小的常量。
7 Overload和Override的區別。Overloaded的方法是否可以改變返回值的類型?
重載和重寫區別
重載是方法名相同,參數的類型和個數不同(參數列表不同),重寫則是子類中的方法和父類的某個方法名稱和參數完全相同 ,通過子類調用將調用子類的這個方法,將父類的方法給覆蓋了。這也是面向對象多態的一種體現。
子類的訪問權限,不能比父類更小,如果父類方法是private,子類不存在覆蓋的限制。
8
構造器Constructor是否可被override?
構造器不能重寫,但是可以重載。
9寫clone()方法時,通常都有一行代碼,是什麼?
clone有缺省行爲,super.clone先複製父類成員,然後才複製自己的成員。
10 面向對象的特徵有哪些方面?(用友2014.9.24筆試出現)
1)封裝
封裝是保證軟件不見具有優良的模塊性的基礎,目標是實現軟件不見的“高內聚,低耦合”,
防止程序相互依賴性而帶來的變動影響。在面向對象的編程語言中,對象是封裝的基本單位,面向對象的封裝比傳統語言清晰,有力,把握一個原則:把對同一個事物進行操作的方法和相關方法放入同一個類中
把方法和操作的數據放在同一個類中。
2)抽象
就是找出一些事物的相似和共性之處,然後歸爲一個類,這個類只考慮共性,
3)繼承
在定義和實現一個類的時候,可以在一個已經存在的類的基礎上進行,把這個已經存在的類所定義的內容作爲自己的內容,還可以加入新的內容,或者修改原來的方法使之更適合特殊的需要,這就是繼承,繼承是子類自動共享父類數據和方法的機制,這是類之間的一種關係,提高了軟件的可重用性和可擴展性。
4)多態
指程序中定義的引用變量所指向具體類型和通過引用變量發出的方法調用在編程彙總不確定,而是需要運行期間才能確定,即一個引用變量到底會指向那個累的實例對象,需由程序運行期間才能決定。讓程序可以選擇多個運行態,這就是多態性。增加類軟件的靈活性和擴展性。
11 java中實現多態的機制是什麼?
靠的是父類或者接口定義的引用變量可以指向子類或者具體實現類的實例對象