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