java基本概念

java語言的優點

  • 純面嚮對象語言 。一切皆對象。
  • 平臺無關性。編譯器將java代碼編譯成中間代碼,然後在JVM上運行,因中間代碼與平臺無關,繼而做到跨平臺。
  • 豐富的內置類庫。如對多線程的支持、對網絡通信的支持,還有提供的垃圾回收器等。
  • 對web應用開發的支持。 例如,Applet、Servlet和JSP可以用來開發Web應用程序;Socket、RMI可以用來開發分佈式應用程序的類庫。
  • 安全性和健壯性。提供了防止惡意代碼攻擊的安全機制(數組邊界檢測和Bytecode校驗等),Java的強類型機制、垃圾回收器、異常處理和安全檢查機制使得用Java語言編寫的程序具有健壯性。
  • 嚴謹和簡潔。相比於C++,去除了難以理解、容易混淆的特性,如頭文件、指針、結構、單元、運算符重載、虛擬基礎類、多重繼承等。

java與c++的異同點

  1. Java爲解釋性語言,而c/c++爲編譯型語言
  2. java爲純面嚮對象語言,而c++兼具面向過程和麪向對象編程的特點
  3. Java沒有指針,防止了相關的隱患
  4. Java不支持多重繼承,但可以同時實現多個接口來達到c++語言中多重繼承類似的目的
  5. Java自動完成內存的分配和回收,而c++需要開發人員自己實現
  6. Java不支持運算符重載
  7. Java不支持預處理功能
  8. Java不支持默認函數參數
  9. java不支持goto語句
  10. Java不支持自動強制類型轉換
  11. Java具有平臺無關性,對每種數據類型都分配固定長度
  12. Java提供對註釋文檔的內建支持
  13. Java包含一些標準庫,而c++依靠一些非標準的、第三方提供的庫

public static void main(String[] args)方法

  • java 程序的入口方法,JVM在運行程序時,會首先查找main()方法。

  • main 是JVM識別的特殊方法名。

  • public、static 讓JVM可以從類外部直接訪問。

  • void 表明方法沒有返回值。

  • String[] args 爲開發人員在命令行狀態與程序交互提供了手段。

  • public、static、void、String[ ] 是main方法必須帶的。

    引申

    1. main()方法的其他可用格式
      static public void main(String[ ] args )
      public static final void main( String [ ] args)
      static public synchronized void main( String[ ] args )
      注:必須保證main()方法的返回值爲void,並有static與public關鍵字修飾。同時由於main() 方法爲程序入口方法,因此不能用abstract關鍵字修飾。

如何實現在main() 方法執行前輸出“Hello World”

由於類的靜態塊在類被加載時就會被調用,因此可以在靜態塊中輸出“hello world”

Java程序初始化的順序

在java語言中,當實例化對象時,對象所在類的所有成員變量首先要進行初始化,只有當所有類成員完成初始化後,纔會調用對象所在的構造函數創建對象。
優先級依次遞減:
1. 靜態的 > 非靜態的
2. 父類 > 子類
3. 變量 > 代碼塊
4. 成員變量的定義順序
總結後執行的順序如下:
父類靜態變量、父類靜態代碼塊、子類靜態變量、子類靜態代碼塊、父類非靜態變量、父類非靜態代碼塊、父類構造函數、子類非靜態變量、子類非靜態代碼塊、子類構造函數。

java中的作用域

變量的類型主要有3種:成員變量、靜態變量和局部變量

  • 成員變量
    作用範圍與類的實例化對象相同
  • 靜態變量或稱全局變量
    被static修飾的成員變量,被所有實例共享
  • 局部變量
    作用範圍與可見性爲它所在的花括號內

四種作用域:

  • public
    當前類、同包名、子類、其他包
  • protected
    當前類、同包名、子類
  • default
    當前類、同包名
  • private
    當前類

一個Java文件是否可以定義多個類

一個Java文件可以有多個類;
但是最多只能有一個類被public修飾,並且這個類的類名與文件名必須相同;
在生成字節碼( .class )文件時,會爲每一個類生成對應的 .class文件。

什麼是構造函數

構造函數是一種特殊的函數,用來在對象實例化時初始化對象的成員變量。
構造函數具有一下特點:

  • 與類的名字必須相同,並且不能有返回值(不能爲void)
  • 可以有多個構造函數,可以有默認構造函數
  • 有0個或0個以上的構造函數
  • 由系統調用,總伴隨着new操作一起調用
  • 主要作用是完成對象的初始化工作
  • 不能被繼承
  • 子類可通過super關鍵字來顯示調用父類的構造函數,當父類沒有無參構造函數時,子類必須顯示調用父類構造函數

java中的clone方法

對象的拷貝分爲淺拷貝和深拷貝;
java中的所有類默認都繼承自Object類,而Object類中提供了一個clone()方法,這個clone方法的作用是返回一個Object對象的複製;
使用clone方法的步驟:

  1. 實現Cloneable接口,這是一個標識接口
  2. 重寫clone方法
  3. 調用 super.clone() ,如果是深拷貝,需要考慮到對象中引用變量的拷貝
  4. 在clone方法中返回新對象的引用

什麼是反射機制

允許程序在運行時進行自我檢查,同時也允許對其內部的成員進行操作。
反射機制的功能主要有:

  • 得到一個對象所屬的類
  • 獲取一個類的所有成員變量和方法
  • 在運行時創建對象,並調用對象的方法
    Class類時反射機制中一個重要的類,獲取的方法:
  • Class.forName(“類的路徑”)
  • 類名.Class
  • 實例對象.getClass()

回調函數

一般用於截獲消息、獲取系統消息或處理異步事件,一般可以用接口來實現。
具體而言,先定義一個接口,然後再接口中聲明要調用的方法,接着實現這個接口,最後把這個實現類的一個對象作爲參數傳遞給調用程序,調用程序通過這個參數來調用指定的函數,從而實現回調函數的功能。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章