Java理論易錯知識

以下內容根據網上的題庫總結,細心網友發現錯誤的可以在評論中隨意指出,共同討論。

  1. 一個Java源文件裏只能有一個main方法,而且只能有一個public類
  2. 一個類中可以沒有main()方法
  3. this和super的區別
    this是自身的一個對象,代表對象本身,可以理解爲:指向對象本身的一個指針。
    super可以理解爲是指向自己超(父)類對象的一個指針,而這個超類指的是離自己最近的一個父類。
  4. this和super不能用在main中的原因
    main方法是靜態方法,是隨着類加載而加載,而this與super是表示本類對象和父類對象,是隨着對象加載而加載,因此this和super不是靜態的,所以不能用在main方法中。
  5. 靜態方法只能訪問靜態成員。(非靜態既可以訪問靜態,也可以訪問非靜態)
  6. 成員變量和靜態變量的區別
    ①生命週期不同
    -成員變量隨着對象的創建而存在,隨着對象的回收而釋放
    -靜態變量隨着類的加載而存在,隨着類的消失而消失
    ②調用方式不同
    -成員變量只能被對象調用
    -靜態變量可以被對象調用,還可以被類名調用
    ③數據存儲位置不同
    -成員變量數據存儲在堆內存的對象中,所以也叫對象特有數據
    -靜態變量數據:存儲在方法區(的靜態區),所以也叫對象的共享數據
  7. 抽象類不能實例化,即不能創建對象
  8. 線程對象的生命週期包含5個生命狀態:新建、就緒、運行、阻塞、死亡
  9. abstract
    ①抽象類:抽象類除了不能實例化對象之外,類的其它功能依然存在,成員變量、成員方法和構造方法的訪問方式和普通類一樣。由於抽象類不能實例化對象,所以抽象類必須被繼承,才能被使用,相當於半成品。一個類只能繼承一個抽象類,而一個類卻可以實現多個接口。
    ②抽象方法:只有聲明,而沒有實現,需要子類重寫
    聯繫:有抽象方法的類一定是抽象類。但是抽象類中不一定都是抽象方法,也可以全是具體方法。抽象類只能被繼承、抽象方法只能被覆蓋。
  10. Java中的swing五種常見佈局:FlowLayout(流式)、BorderLayout(邊框)、GridLayout(網格)、BoxLayout(盒布)、CradLayout(卡片)。容器javax.swing.JPanel,它的默認佈局是FlowLayout.
  11. Java線程的優先級在1 至10之間,越大優先級越高,默認優先級爲5
  12. C語言和Java的區別(經典面試題)
    總體:C更接近底層,生成機器代碼效率高。Java更簡潔,功能更加強大,編程效率高。
    ①C語言的指針採用了類似彙編的尋址方式。C的位操作可以減少除法和取模的運算。宏函數僅僅作爲預先寫好的代碼嵌入到當前程序,不會產生函數調用,所以僅僅是佔用了空間,而使程序可以高效運行。
    ②Java的通用性好,可以跨平臺直接移植,只要有安裝Java虛擬機(JVM)就可以了。Java沒有C中冗餘以及容易引起異常的功能成分,並且增加了多線程、異常處理、網絡編程等方面的支持功能,開發的效率高。Java語言不使用指針,並提供了自動的廢料收集,使得程序員不必爲內存管理而擔憂。
  13. 抽象類與接口有何不同?
    ①抽象類中可以存在非抽象的方法, 接口中的方法被默認的變成抽象方法;
    ②方法是抽象的,必須重寫實現。抽象類中可以有非抽象的方法,子類可以選擇繼承;接口中的方法默認都是抽象方法,必須實現接口中的所有方法;
    ③抽象類可以有私有的成員變量和成員方法,接口中的方法全都被默認的修飾爲: public abstract 類型的方法;
    ④一個類只能繼承一個抽象類,一個類可以實現多個接口,接口可以實現多繼承;
    ⑤抽象類中的非抽象的方法可以選擇繼承,接口中的方法必須全部被重寫 ,並且全部是公有的public 方法.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章