當前位置:
首頁 > 最新 > Java基礎集錦:Java的類一些常識

Java基礎集錦:Java的類一些常識

1、請解釋Java語言的跨平台特性。

解析:雖然不知道什麼是跨平台也可以使用Java語言進行編程,但是對於一個Java編程員來說,理解跨平台特性能夠更深入掌握Java語言,所以企業中往往要求應聘者至少理解這個特性。

參考答案:Java的跨平台特性也被稱為可移植性、平台無關性,或者一次編寫處處運行。他的意思就是如果用Java語言編寫一個應用,那麼就可以在不同平台上運行,而不需要為不同平台單獨運行開發。之所以能實現跨平台的特性。主要得益於Java虛擬機(JVM),JVM解釋器在運行Java應用時根據當前平台進行解釋,解釋成符合當前平台規範的機器碼,所以可以實現同樣的應用在不同平台上都能運行。

2、請列舉JAVA語言的主要特點

解析:了解一門語言,往往從熟悉該語言的主要特點開始入手,所以企業也常常通過應聘者對JAVA語言特點的掌握程度而判斷其語言基礎是否紮實。

參考答案:JAVA語言有很多特點,主要包括:

跨平台性:一個應用可以不經過修改直接運行到不同的平台上。

面向對象:JAVA語言是一門面向對面的語言,可以使用對象的屬性和行為,可以使用面向對象的思想進行分析設計,並實現整個應用。

解釋執行JAVA應用時,JVM中的解釋器將解釋類文件,生成符合當前平台的位元組碼。

自動回收:JAVA應用中的垃圾回收是自動進行的,JVM中的後台線程將監視內存中數據的使用,當內存中的數據不再被引用時,將被作為垃圾回收,而不需要程序員動手回收。

3、請說明一個JAVA類中主要包含哪幾個元素?並說明每種元素的作用。

解析:無論簡單還是複雜的JAVA應用,都是由若干個類組成,所以類是JAVA應用的組成單位。了解一個類中包含的主要元素能夠對類有一個清晰的認識。一個類中往往會有五種元素,即屬性、方法、構造方法、塊以及內部類、其實塊和內部類比較少見。

參考答案:JAVA類中主要包含屬性、方法、構造方法、塊以及內部類。

屬性用來定義對象的數據;

方法用來定義對象的行為;

構造方法可以用來創建對象;

塊能夠用來在類載入時執行操作或者在每次實例化前執行通用操作;

內部類作為類的一個成員存在,能夠訪問外部類的屬性和方法。

4、請說明構造方法的作用和特徵

解析:類是對象的模板,使用類往往都需要首先對類進行實例化,即創建對象。要創建對象必須使用new關鍵字調用構造方法(constructor)才能完成,構造方法中往往對屬性進行實例化,也可以實現其他必要的功能,如讀取屬性文件等。

構造方法有獨特的特徵:名字必須與類名相同且大小寫敏感,而且構造方法不能聲明返回值,這兩個特徵缺一不可。使用Eclipse工具時,可以使用菜單Generate Constructor自動生成不同的構造方法。

參考答案:構造方法的作用是用來創建對象,使用new關鍵字調用。構造方法的名字必須與類的名字相同,並且大小寫敏感,同時構造方法不能聲明返回值類型,可以使用任意一種訪問修飾符,但是不能使用其他修飾符進行修飾,如static、final、abstract等修飾符都可以修飾構造方法。

5、什麼是方法重載(overload)?

解析:如果一個類的某個行為,會有不同的演算法和邏輯,例如,Math類的計算絕對值的方法,既可以計算int類型數值的絕對值,也可以計算double類型數值的絕對值。這種情況下,每種類型都定義一個不同的方法名,如abInt、absDouble,那麼類的可讀性就較差,使用時,必須熟悉處理每種類型參數所對應的方法名。然而,如果使用同一個方法名,而使用不同的形式參數來區別這些方法,那麼就具有很好的可讀性,如abs(int i)、abs(double d)等。可讀性強的代碼是企業對開發人員的基本要求,方法重載能夠使得代碼有很好的可讀性。

參考答案:方法重載指的是在一個類中可以聲明多個相同名字的方法,而方法的形式參數有區別。調用這些同名的方法時,JVM會根據實際參數的不同綁定到不同的方法。

6、請列舉Java語言中的許可權訪問修飾符,並說明每種許可權的含義。

解析:正確使用許可權訪問修飾符,能夠有效控制類以及類成員的安全性,Java語言中有四種訪問修飾符,包括public、同包、protected以及private,一般情況下,應用中的類多是public許可權,屬性多是private許可權,方法多是public許可權。

參考答案:Java語言中有四種許可權訪問修飾符,即public、protected、同包以及private,public表示公共許可權,即任何包中都可以訪問:protected表示受保護許可權,即同包中可以訪問,同包中的子類可以訪問:同包許可權是默認許可權,即不顯示指明許可權修飾符的時候就是同包許可權,表示只有同包中可以訪問:private是私有許可權,表示只能在本類中訪問。

7、請列舉Java語言中的八種基本數據類型,並說明每種數據類型的含義及長度。

解析:數據類型在任何一門編程語言中都是很重要的知識點,屬性、方法參數、方法返回值要指定各自的數據類型。Java語言雖然是一門面向對象的語言。但是也定義了基本數據類型,基本數據類型可以直接賦值,不需要使用new關鍵字創建,可以直接使用運算符進行運算,編程中經常被使用,而且Java語言中的基本數據類型的長度固定,不會隨著平台的不同而不同。

參考答案:Java語言的八種基本數據類型有:byte位元組型,8位長度:short短整型,16位長度,int整型,32位長度:long長整型,64位長度:float單精度浮點型。32位長度:double雙精度浮點型,64位長度:char字元型,16位長度:boolean型,表示邏輯值,有true和false兩個值,分別表示真和假

8、什麼叫引用類型,引用類型和基本數據類型有什麼區別?

解析:很多初級程序員都能夠理解int i=20;中的int是一種類型,稱為整型。而對於類似Employee e=new Employee();這樣表達式中的Employee卻感覺無所適從。其實,任何一個類都是一種類型,如Employee就是一種類型,可以說變數e的類型就是Employee。Java語言中將類的類型稱為引用類型,即reference type。

可以說,除了八種基本數據類型之外的類型都是引用類型,包括API中所有的類、自定義的所有類,也包括數組。引用類型和基本數據類型的直觀區別就是引用類型的變數需要使用new調用構造方法來賦值,而基本數據類型可以直接使用「=」號賦值。但是,引用類型中的String比較特殊,既可以使用new關鍵字賦值,也可以直接使用「=」賦值,一般情況下都使用「=」直接賦值。

參考答案:Java語言中除了基本數據類型之外的類型,都稱為引用類型。引用類型就是類的類型,所有的對象都是引用類型,包括數組對象。引用類型必須使用new調用構造方法進行賦值,引用類型的變數擁有自己的屬性和方法,可以使用圓點調用自己的屬性和方法。基本數據類型直接使用=號進行賦值,且沒有自己的屬性和方法,往往都在聲明屬性或方法時使用。

9、對於String對象,可以使用「=」賦值,也可以使用new關鍵字賦值,兩種方式有什麼區別?

解析:String類型是實際工作中經常使用到的類型,從數據類型上劃分,String是一個引用類型,是API中定義的一個類。所以String類型的對象可以使用new創建,例如String name=new String(「ETC」);為變數name進行賦值,值為「ETC」。然而,String類比起其他類

有些特殊,可以使用「=」直接賦值,如String name=「ETC」,也是為變數name進行賦值,值為「ETC」。

這兩種賦值方式是有差別的,使用new賦值,永遠都是創建一個新對象,在新的內存空間初始化了字元串的值;而使用「=」賦值,不會每次都初始化新的字元串,而是從一個「字元串實例池」中去查找有沒有要賦值的字元串,如有則直接引用;如不存在,則初始化一個字元串,並放入「字元串實例池」。在實際編程中,往往使用「=」好對String類型變數進行賦值。

參考答案:使用「=」賦值不一定每次都創建一個新的字元串,而是從「字元串實例池」中查找字元串。使用new進行賦值,則每次都創建一個新的字元串。

10、String類是一個「不可變類」,請解釋「不可變類」的含義。

解析:String類是一個不可變類,即immutable類。所謂不可變,意思是當一個字元串被初始化後,它的值就不會被改變。例如,String s=new String(「hello」)為將初始化一個值為hello的字元串,如果調用 s.toUpperCase()看起來是把hello變為大寫的HELLO,然而事實上並不會把已有的hello變為HELLO,而是在新的空間初始化一個HELLO字元串。也正因為有這種不可變性,所以才能支持「字元串實例池」的使用。

參考答案:所謂的不可變類,就是當字元串初始化後,就不能夠被改變。

11、String類和StringBuffer類有什麼區別?

解析:String類是不可變類,字元串一旦初始化後,就不能被改變。而StringBuffer類是可變類,字元串值可以唄改變。常常在實際應用中看到累死這樣的代碼:String s=new(「hello」);s+=」world」,這兩句代碼首先創建一個字元hello,然後將world追加到hello結尾並重新賦值給變數s。然後,這個過程實際上是這樣的:首先創建一個StringBuffer對象,然後用StringBuffer類的append方法追加字元串,最後對StringBuffer對象調用toString方法合成字元串返回。可見,使用+號連接字元串時,本質上是使用了可變的StringBuffer類,經變動肯定性能效率受到影響,所以建議需要追加字元串時,可以考慮直接使用StringBuffer類。

參考答案:String類是不可變類,即字元串值一旦初始化後就不可能改變。StringBuffer是可變字元串類,類似String的緩衝區,可以修改字元串的值。

12、StringBuffer和StringBuilder類有什麼區別?

解析:StringBuffer是JDK5中增加的一個新類,在以前版本中不存在這個類。StringBuilder中的方法和StringBuffer中的方法基本相同,但是StringBuffer是線程安全的,而StringBuilder不是線程安全的,因此在不考慮同步的情況下,StringBuilder有更好的性能。

參考答案:StringBuffer是線程安全的字元串緩衝,而StringBuilder不是線程安全的。

13、包裝器類型包括哪些類,有什麼作用?

解析:初級程序員常常對float和Float或者double和Double感到混淆。在Java語言中,有八中基本數據類型,即byte、int、long、float、double、char、boolean。對應這八種基本數據類型,API中定義了八個類,能把這些基本類型轉換成引用類型,分別是Byte、Short、Int、Long、Double、Character、Boolean。這八個類被統稱為包裝器類。

JDK5之後,包裝器類和基本數據類型之間可以直接轉換,稱為自動的裝箱拆箱(boxing/unboxing)。例如integer it=3;it++;雖然寫法上可以像使用基本數據類型一樣使用包裝器類型,但是本質上依**行了類似 it= new Integer(3)的轉換,因此,不要輕易使用包裝器類的自動裝箱拆箱,以優化的性能。能夠使用基本類型就使用基本類型。

參考答案:包裝類器包括Byte、Short、Integer、Long、Float、Double、Character、Boolean等類,主要用來對byte、short、integer、long、float、double、character、boolean這八種基本數據類型進行包裝,使其稱為引用類型。

14、請說明Java語言中的值傳遞規則。

解析:值傳遞時編寫應用時不可避免的操作。例如某方法聲明形式是public void f(int x){},寫方法是,必須為其傳遞一個int類型的實際參數,如f(10)。又如public void g(Employee)。那麼使用該方法時,必須為其傳遞一個Employee類型的實際參數,例如g(new Employee())。

所以,對於初級程序員來說,了解Java語言的值傳遞規則非常重要。Java語言是本類型傳遞的值,例如f(10),僅僅把10複製給形式參數x,是值的拷貝。而引用類的傳遞時引用,即虛地址,例如g(new Employee())是把實際參數的虛地址傳遞給形式參數e,也就是說實際參數和形式參數的虛地址相同,物理上是同一個對象。

參考答案:基本數據類型傳遞的是值,引用類型傳遞的是引用,即虛地址。

15、使用static修飾屬性或方法後,屬性和方法有什麼特徵?

解析:static修飾符是一個非常常見並重要的修飾符,稱為靜態。靜態不是指值不能改變,很多初級程序員容易容易望文生義的地方。Static常常用來修飾類的屬性或者方法。當一個屬性或者方法和對象沒有關係,或者說是任何對象共享的時候,那麼就應該用static進行修飾。列如某類中的計數器,用來計算實例的個數。那麼這個計數器屬性就是所有對象共享的屬性,就應該用static修飾。

又例如Math類中的abs(int)方法,用來返回參數的絕對值,這個方法和Math類的對象沒有關係,Math類對象可以共享這個方法,那麼這個方法就可以用static修飾。程序員必須深入理解static修飾符的使用。

參考答案:static修飾屬性或方法後,屬性和方法不在屬於某個特定的對象,而是所有共享,也可以說是static成員不依賴某個對象,在類載入時就被初始化。Static修飾的屬性或方法,可以直接使用類名調用,而不用先實例化對象再調用。

16、使用final修飾屬性後,屬性有什麼特徵?

解析:屬性可以是變數也可以是常量,如果是常量,就需要使用final修飾。如果使用final修飾了某個屬性,那麼該屬性值一旦被賦值,就不能被修改,實際中常常有這個樣的碼:private static final int ERROR=0;也就是說,常常會生命靜態的常量。

靜態常量的命名規範非常特殊,往往都是用大寫字母,如果包含多個單詞,每個單詞之間使用下劃線連接。靜態常量的意思是,該類所有的對象都擁有一個不變的常量ERROR,作為0.API中很多類都定義了很多的靜態常量,使用時直接使用類名調用即可。

參考答案:fianl修飾屬性後,屬性就成為一個常量。常量只要被賦值,就不能被改變。

17、請說明操作符==的作用。

解析:實際編程中,==是非常常用的操作符。很多初級程序員會使用這樣的代碼if(s==」save」0{},結果會發現,即使當字元串s的值為save時,if條件依然不能被執行。是==在比較引用類型時,比較的是兩個對象的虛地址,而不是內容。

要比較兩個對象的內容是否相同,往往需要使用equal方法,例如if(s.equals(「save」)){}。==比較基本類型時,將比值的二進位是否相等,例如(x==0.5){}。值得注意的是,與空指針null值進行比較,往往用==進行,例如if(s==null||s.equals(「」)),表示如果字元串是空指針或者空串。

參考答案:==可以用來比較基本類型或者引用類型。比較基本類型時,==用來比較二進位的值,比較引用類型時,用來比較對象的虛地址。

18、請說明&&與&的區別和聯繫

解析:實際編程中,常常需要使用「與」或者「或」的邏輯。其中&&和&存在一定區別&&可能發生各路問題,例如if(s!=null&&s.length()==6)中,如果要的值為null,那麼第一表達式的值為false,返回值肯定是false,不會計算第二個表達式的值,這就是短路。然而使用&,例如if(s!=null&s.length()==6),假設s的值為,null,返回值肯定是false,但是會判斷第二個表達式的值,將發生空指針異常。實際工作中,經常使用&&操作符。

參考答案:&&會發生短路問題,當第一個表達式的值為false時,將直接返回結果為false而不會判斷第二個表達式的值。而&不會發生短路問題,即使第一個表達式的值是false,會判斷第二個表達式的值。

19、 break語句能在什麼場景使用。

解析:break語句表示中斷,不能夠隨便使用,只能在循環語句中或者switch語句中使用。初級工程師往往容易將break和return混淆。Return是可以再方法體中任意位置使用,可以帶值返回頁可以不帶值返回,執行return語句後,該方法將返回,也就是方法執行結束。而break只能在循環體中或者switch的case語句中使用,不能隨意使用。

參考答案:break語句可以再循環體中使用,也可以在switch的case語句中使用。

20、for循環中的break語句和continue語句的使用。

解析:很多時候,循環是為了查找某些符合條件的數據,只要找到就沒有必要繼續下去,稱為中斷循環,break語句就可以用來中斷循環。而continue語句恰恰相反,是用來繼續下一次循環。值得注意的是,java語言中可以再循環前面加標號,即label,然後可以使用break或continue中斷或繼續標號的循環。

參考答案:break可以用來中斷循環,continue可以用來繼續下一次循環。

21、請說明一個JAVA類中主要包含哪幾個元素並說明每種元素的作用。

解析:無論簡單還是複雜的JAVA應用,都是由若干個類組成,所以類是JAVA應用的組成單位。了解一個類中包含的主要元素能夠對類有一個清晰的認識。一個類中往往會有五種元素,即屬性、方法、構造方法、塊以及內部類、其實塊和內部類比較少見。

參考答案:JAVA類中主要包含屬性、方法、構造方法、塊以及內部類。屬性用來定義對象的數據方法用來定義對象的行為構造方法可以用來創建對象塊能夠用來在類載入時執行操作或者在每次實例化前執行通用操作內部類作為類的一個成員存在,能夠訪問外部類的屬性和方法


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 java學習吧 的精彩文章:

java入門難,難在你真正了解這些知識點了嗎
Java的一些基本知識點 歸納及總結了解
JAVA常用英語單詞 列表

TAG:java學習吧 |

您可能感興趣

Android中menu的使用集錦
Louis Vuitton櫥窗陳列集錦
圖片集錦-Poulsbo
三星Galaxy Watch智能手錶傳言集錦:或與Note 9手機同步發布
FAIR最新視覺論文集錦:FPN,RetinaNet,Mask和Mask-X RCNN
cosplay集錦,你喜歡哪一個?
FAIR最新視覺論文集錦:FPN,RetinaNet,Mask 和 Mask-X RCNN(含代碼實現)
2017慈緣雅集之問禪集錦Some questions about Zen of CiYuan 2017
Sheriff SWAT圖片集錦1
大數據分析工程師面試集錦 3-SQL/SparkSql/HiveQL
Mac OS 蘋果電腦 蘋果筆記本 MacBook Pro 使用技巧集錦
三星Galaxy Note 9傳言集錦:屏下指紋還是個謎
收藏|韓國個性女模chomegyu造型集錦
群星聯賽S7總決賽高光集錦 NiP vs Spirit
Python小貼士集錦
cosplay美圖集錦,最喜歡第四張
用機器學習搞藝術,谷歌 Megenta 項目集錦
C94上cosplay集錦第三彈
佛系小Blue 仙氣Lady Gaga 第60屆格萊美歡樂瞬間集錦
視頻/motpgp精彩集錦,一起來欣賞吧!