更新時間:2022-03-30 10:06:01 來源:動力節點 瀏覽1606次
Java 中的 main() 是任何 Java 程序的入口點。它總是寫成public static void main(String[] args)。
public:public 是一個訪問修飾符,用于指定誰可以訪問這個方法。Public 意味著任何類都可以訪問此方法。
static:它是 java 中的一個關鍵字,用于標識它是基于類的。main() 在 Java 中是靜態的,因此可以在不創建類實例的情況下訪問它。如果 main 不是靜態的,那么編譯器將拋出一個錯誤,因為在生成任何對象之前,JVM 調用了main (),并且只能通過類直接調用靜態方法。
void:它是方法的返回類型。void 定義不會返回任何值的方法。
main:它是 JVM 搜索的方法的名稱,作為僅具有特定簽名的應用程序的起點。它是主要執行發生的方法。
String args[] : 傳遞給main方法的參數。
Java 被稱為平臺無關,因為它的字節碼可以在任何系統上運行,而不管其底層操作系統如何。
Java 不是 100% 面向對象的,因為它使用了八種原始數據類型,例如 boolean、byte、char、int、float、double、long、short,它們不是對象。
包裝類將 Java 原語轉換為引用類型(對象)。每個原始數據類型都有一個專用于它的類。這些被稱為包裝類,因為它們將原始數據類型“包裝”到該類的對象中。請參閱下圖,它顯示了不同的原始類型、包裝類和構造函數參數。
Equals() 方法定義在 Java 的 Object 類中,用于檢查業務邏輯定義的兩個對象的相等性。
Java中的“==”或相等運算符是Java編程語言提供的二元運算符,用于比較原語和對象。public boolean equals(Object o)是 Object 類提供的方法。默認實現使用 == 運算符來比較兩個對象。例如:方法可以像 String 類一樣被覆蓋。equals() 方法用于比較兩個對象的值。
Reflection 是一個運行時 API,用于檢查和更改方法、類和接口的行為。Java 反射是一個非常有用的強大工具。Java 反射允許您在運行時分析類、接口、字段和方法,而無需知道它們在編譯時被調用什么。反射也可用于創建新對象、調用方法和獲取/設置字段值。可以通過創建具有完全限定名稱的可擴展性對象的實例來使用外部的、用戶定義的類。調試器還可以使用反射來檢查類的私有成員。
NonSerialized 屬性可用于防止成員變量被序列化。
如果可能,您還應該使可能包含安全敏感數據的對象不可序列化。如果必須序列化對象,則將 NonSerialized 屬性應用于存儲敏感數據的某些字段。如果您不從序列化中排除這些字段,則它們存儲的數據將對任何具有序列化權限的程序可見。
雙大括號初始化是一個 Java 術語,指的是兩個獨立進程的組合。這里使用了兩個大括號。第一個大括號創建一個匿名內部類。第二個大括號是一個初始化塊。當這兩者一起使用時,它被稱為雙括號初始化。內部類具有對封閉外部類的引用,通常使用“this”指針。它用于在單個語句中進行創建和初始化。它通常用于初始化集合。它減少了代碼并使其更具可讀性。
String 類的 length() 方法不會返回準確的結果,因為
它只是考慮了 String 中的字符數。換言之,BMP(Basic Multilingual Plane)之外的碼點,即U+10000或以上的碼點將被忽略。
其原因是歷史性的。Java 最初的目標之一是將所有文本視為 Unicode。然而,Unicode 當時并沒有在 BMP 之外定義代碼點。在 Unicode 指定此類代碼點時修改 char 為時已晚。
Java 不使用指針,因為它們不安全并增加了程序的復雜性。由于 Java 以其代碼簡單而著稱,因此添加指針的概念將是矛盾的。此外,由于JVM負責隱式內存分配,因此為了避免用戶直接訪問內存,Java中不鼓勵使用指針。
JIT 代表 Java 中的即時編譯器。它是一個幫助將 Java 字節碼轉換為直接發送到處理器的指令的程序。默認情況下,JIT 編譯器在 Java 中啟用,并在調用 Java 方法時激活。然后,JIT 編譯器將被調用方法的字節碼編譯為本機機器碼,“及時”編譯以執行。編譯方法后,JVM 直接調用該方法的編譯代碼,而不是解釋它。這就是為什么它經常負責 Java 應用程序在運行時的性能優化。
雙大括號初始化是一個 Java 術語,指的是兩個獨立進程的組合。這里使用了兩個大括號。第一個大括號創建一個匿名內部類。第二個大括號是一個初始化塊。當這兩者一起使用時,它被稱為雙括號初始化。內部類具有對封閉外部類的引用,通常使用“this”指針。它用于在單個語句中進行創建和初始化。它通常用于初始化集合。它減少了代碼并使其更具可讀性。
在 Java 中,構造函數鏈接是相對于當前對象從另一個構造函數調用的過程。只有通過子類構造函數首先負責調用超類的構造函數的遺留系統才能實現構造函數鏈接。構造函數鏈中可以有任意數量的類。構造函數鏈可以通過兩種方式實現:
在同一個類中使用 this()
從使用 super() 的基類
在 Java 中,字符串對象本質上是不可變的,這意味著一旦創建了字符串對象,它的狀態就不能被修改。每當您嘗試更新該對象的值而不是更新該特定對象的值時,Java 都會創建一個新的字符串對象。Java String 對象是不可變的,因為 String 對象通常緩存在 String 池中。由于字符串文字通常在多個客戶端之間共享,因此來自一個客戶端的操作可能會影響其余客戶端。它增強了應用程序的安全性、緩存、同步和性能。
在 Java 中,運行時多態性或動態方法分派是在運行時而不是在編譯時解決對覆蓋方法的調用的過程。在這個過程中,通過超類的引用變量調用被覆蓋的方法。讓我們看一下下面的示例以更好地理解它。
class Car {
void run()
{
System.out.println(“car is running”);
}
}
class Audi extends Car {
void run()
{
System.out.prinltn(“Audi is running safely with 100km”);
}
public static void main(String args[])
{
Car b= new Audi(); //upcasting
b.run();
}
}
封裝是一種將數據(變量)和代碼(方法)作為一個單元綁定在一起的機制。在這里,數據對外界是隱藏的,只能通過當前的類方法訪問。這有助于保護數據免受任何不必要的修改。我們可以通過以下方式在 Java 中實現封裝:
將類的變量聲明為私有的。
提供公共的 setter 和 getter 方法來修改和查看變量的值。
組合再次是聚合的一種特殊形式,我們可以將其稱為“死亡”關系。它是一種強大的聚合類型。子對象沒有生命周期,如果父對象刪除,所有子對象也將被刪除。讓我們再舉一個 House 和 room 之間關系的例子。房子可以包含多個房間,房間沒有獨立的生命,任何房間不能屬于兩個不同的房子,如果我們刪除房子房間會自動刪除。
Java 中的對象克隆是創建對象的精確副本的過程。它基本上意味著能夠創建與原始對象具有相似狀態的對象。為了實現這一點,Java 提供了一個方法clone () 來利用這個功能。此方法創建當前對象的類的新實例,然后使用與相應字段完全相同的內容初始化其所有字段。要對象 clone(),必須實現標記接口java.lang.Cloneable以避免任何運行時異常。您必須注意的一件事是 Object clone() 是一種受保護的方法,因此您需要覆蓋它。
復制構造函數是一個成員函數,用于使用同一類的另一個對象初始化一個對象。盡管在 Java 中不需要復制構造函數,因為所有對象都是通過引用傳遞的。此外,Java 甚至不支持自動按值傳遞。
Cookie 是服務器發送給客戶端的文本數據,并保存在客戶端本地計算機上。
Servlet API 通過實現 Serializable 和 Cloneable 接口的 javax.servlet.http.Cookie 類提供 cookie 支持。
提供了 HttpServletRequest getCookies() 方法來從請求中獲取 Cookies 數組,由于沒有向請求添加 Cookie 的意義,因此沒有設置或向請求添加 cookie 的方法。
類似地,提供了 HttpServletResponse addCookie(Cookie c) 方法來在響應頭中附加 cookie,cookie 沒有 getter 方法。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習