更新時(shí)間:2022-05-09 11:20:46 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1647次
Java 編程語(yǔ)言有以下特點(diǎn)。
簡(jiǎn)單: Java 很容易學(xué)習(xí)。Java 的語(yǔ)法基于 C++,這使得在其中編寫(xiě)程序更容易。
面向?qū)ο螅?Java 遵循面向?qū)ο蟮姆妒剑试S我們將代碼維護(hù)為包含數(shù)據(jù)和行為的不同類(lèi)型對(duì)象的組合。
可移植性: Java 支持隨處讀取一次寫(xiě)入的方法。我們可以在每臺(tái)機(jī)器上執(zhí)行 Java 程序。Java 程序 (.java) 被轉(zhuǎn)換為可以在每臺(tái)機(jī)器上輕松運(yùn)行的字節(jié)碼 (.class)。
平臺(tái)無(wú)關(guān): Java 是一種平臺(tái)無(wú)關(guān)的編程語(yǔ)言。它不同于需要平臺(tái)執(zhí)行的其他編程語(yǔ)言,如 C 和 C++。Java 帶有執(zhí)行其代碼的平臺(tái)。Java 不依賴(lài)于要執(zhí)行的操作系統(tǒng)。
安全: Java 是安全的,因?yàn)樗皇褂蔑@式指針。Java 還提供了字節(jié)碼和異常處理的概念,使其更加安全。
健壯: Java 是一種強(qiáng)大的編程語(yǔ)言,因?yàn)樗褂脧?qiáng)大的內(nèi)存管理。自動(dòng)垃圾收集、異常處理等概念使其更加健壯。
架構(gòu)中立: Java 是架構(gòu)中立的,因?yàn)樗灰蕾?lài)于架構(gòu)。在 C 中,數(shù)據(jù)類(lèi)型的大小可能會(huì)根據(jù) Java 中不存在的體系結(jié)構(gòu)(32 位或 64 位)而有所不同。
解釋?zhuān)?Java 使用即時(shí) (JIT) 解釋器和編譯器來(lái)執(zhí)行程序。
高性能: Java 比其他傳統(tǒng)的解釋型編程語(yǔ)言更快,因?yàn)?Java 字節(jié)碼“接近”本機(jī)代碼。它仍然比編譯語(yǔ)言(例如,C++)慢一點(diǎn)。
多線程:我們可以通過(guò)定義多個(gè)線程來(lái)編寫(xiě)一次處理多個(gè)任務(wù)的 Java 程序。多線程的主要優(yōu)點(diǎn)是它不會(huì)為每個(gè)線程占用內(nèi)存。它共享一個(gè)公共內(nèi)存區(qū)域。線程對(duì)于多媒體、Web 應(yīng)用程序等很重要。
分布式: Java是分布式的,因?yàn)樗奖阌脩?hù)用Java創(chuàng)建分布式應(yīng)用程序。RMI 和 EJB 用于創(chuàng)建分布式應(yīng)用程序。Java 的這一特性使我們能夠通過(guò)從 Internet 上的任何機(jī)器調(diào)用方法來(lái)訪問(wèn)文件。
動(dòng)態(tài): Java 是一種動(dòng)態(tài)語(yǔ)言。它支持類(lèi)的動(dòng)態(tài)加載。這意味著類(lèi)是按需加載的。它還支持來(lái)自其本地語(yǔ)言(即 C 和 C++)的函數(shù)。
Java 虛擬機(jī)是使計(jì)算機(jī)能夠運(yùn)行Java程序的虛擬機(jī)。JVM 就像一個(gè)運(yùn)行時(shí)引擎,它調(diào)用 Java 代碼中的 main 方法。JVM是必須在計(jì)算機(jī)系統(tǒng)中實(shí)現(xiàn)的規(guī)范。Java 代碼由 JVM 編譯為與機(jī)器無(wú)關(guān)且接近本機(jī)代碼的字節(jié)碼。
多種類(lèi)型:
類(lèi)(方法)區(qū):類(lèi)區(qū)存儲(chǔ)每個(gè)類(lèi)的結(jié)構(gòu),例如運(yùn)行時(shí)常量池、字段、方法數(shù)據(jù)和方法代碼。
堆:它是運(yùn)行時(shí)數(shù)據(jù)區(qū),內(nèi)存被分配給對(duì)象
Stack: Java Stack 存儲(chǔ)幀。它保存局部變量和部分結(jié)果,并在方法調(diào)用和返回中發(fā)揮作用。每個(gè)線程都有一個(gè)私有 JVM 堆棧,與線程同時(shí)創(chuàng)建。每次調(diào)用方法時(shí)都會(huì)創(chuàng)建一個(gè)新框架。框架在其方法調(diào)用完成時(shí)被銷(xiāo)毀。
程序計(jì)數(shù)器寄存器: PC(程序計(jì)數(shù)器)寄存器包含當(dāng)前正在執(zhí)行的Java虛擬機(jī)指令的地址。
本機(jī)方法堆棧:它包含應(yīng)用程序中使用的所有本機(jī)方法。
Java平臺(tái)與其他平臺(tái)有以下區(qū)別。
Java 是基于軟件的平臺(tái),而其他平臺(tái)可能是硬件平臺(tái)或基于軟件的平臺(tái)。
Java 在其他硬件平臺(tái)之上執(zhí)行,而其他平臺(tái)只能有硬件組件。
Classloader 是 JVM 的一個(gè)子系統(tǒng),用于加載類(lèi)文件。每當(dāng)我們運(yùn)行 java 程序時(shí),它首先由類(lèi)加載器加載。Java中有三個(gè)內(nèi)置的類(lèi)加載器。
Bootstrap ClassLoader:這是第一個(gè)類(lèi)加載器,它是 Extension 類(lèi)加載器的超類(lèi)。它加載包含Java標(biāo)準(zhǔn)版所有類(lèi)文件的rt.jar文件,如java.lang包類(lèi)、java.net包類(lèi)、java.util包類(lèi)、java.io包類(lèi)、java.sql包類(lèi)等。
Extension ClassLoader:這是 Bootstrap 的子類(lèi)加載器和 System 類(lèi)加載器的父類(lèi)加載器。它加載位于$JAVA_HOME/jre/lib/ext目錄中的 jar 文件。
System/Application ClassLoader:這是擴(kuò)展類(lèi)加載器的子類(lèi)加載器。它從類(lèi)路徑加載類(lèi)文件。默認(rèn)情況下,類(lèi)路徑設(shè)置為當(dāng)前目錄。您可以使用“-cp”或“-classpath”開(kāi)關(guān)更改類(lèi)路徑。它也被稱(chēng)為應(yīng)用程序類(lèi)加載器。
在 Java 中,訪問(wèn)說(shuō)明符是用于定義方法、類(lèi)或變量的訪問(wèn)范圍的關(guān)鍵字。在 Java 中,下面給出了四個(gè)訪問(wèn)說(shuō)明符。
公共定義為公共的類(lèi)、方法或變量可以被任何類(lèi)或方法訪問(wèn)。
Protected Protected 可以被同一個(gè)包的類(lèi)訪問(wèn),也可以被這個(gè)類(lèi)的子類(lèi)訪問(wèn),也可以在同一個(gè)類(lèi)內(nèi)訪問(wèn)。
Default Default 只能在包中訪問(wèn)。默認(rèn)情況下,所有類(lèi)、方法和變量都具有默認(rèn)范圍。
Private定義為私有的私有類(lèi)、方法或變量只能在該類(lèi)中訪問(wèn)。
定義為靜態(tài)的方法或變量在類(lèi)的所有對(duì)象之間共享。靜態(tài)是類(lèi)的一部分,而不是對(duì)象的一部分。靜態(tài)變量存儲(chǔ)在類(lèi)區(qū)域中,我們不需要?jiǎng)?chuàng)建對(duì)象來(lái)訪問(wèn)這些變量。因此,在需要定義類(lèi)的所有對(duì)象共有的變量或方法的情況下使用靜態(tài)。
例如,在模擬學(xué)院學(xué)生集合的類(lèi)中,學(xué)院名稱(chēng)是所有學(xué)生的共同屬性。因此,學(xué)院名稱(chēng)將被定義為static。
在 Java 中定義包有很多優(yōu)點(diǎn)。
包避免了名稱(chēng)沖突。
包提供更容易的訪問(wèn)控制。
我們還可以擁有在外部不可見(jiàn)并由包使用的隱藏類(lèi)。
更容易找到相關(guān)的類(lèi)。
它是一種基于對(duì)象的編程范式,對(duì)象具有在其所屬的類(lèi)中定義的數(shù)據(jù)和方法。面向?qū)ο蠓妒街荚诮Y(jié)合模塊化和可重用性的優(yōu)點(diǎn)。對(duì)象是類(lèi)的實(shí)例,它們相互交互以設(shè)計(jì)應(yīng)用程序和程序。面向?qū)ο蠓妒接幸韵绿攸c(diǎn)。
在程序設(shè)計(jì)中遵循自下而上的方法。
使用對(duì)對(duì)象數(shù)據(jù)進(jìn)行操作的方法來(lái)關(guān)注數(shù)據(jù)
包括像封裝和抽象這樣的概念,它向用戶(hù)隱藏復(fù)雜性并僅顯示功能。
實(shí)現(xiàn)實(shí)時(shí)方法,如繼承、抽象等。
面向?qū)ο蠓妒降氖纠?C++、Simula、Smalltalk、Python、C# 等。
對(duì)象是具有某種狀態(tài)和行為的實(shí)時(shí)實(shí)體。在 Java 中,Object 是類(lèi)的實(shí)例,實(shí)例變量作為對(duì)象的狀態(tài),方法作為對(duì)象的行為。可以使用new關(guān)鍵字創(chuàng)建類(lèi)的對(duì)象。
構(gòu)造函數(shù)可以定義為用于初始化對(duì)象狀態(tài)的特殊類(lèi)型的方法。當(dāng)類(lèi)被實(shí)例化時(shí)調(diào)用它,并為對(duì)象分配內(nèi)存。每次使用new關(guān)鍵字創(chuàng)建對(duì)象時(shí),都會(huì)調(diào)用該類(lèi)的默認(rèn)構(gòu)造函數(shù)。構(gòu)造函數(shù)的名稱(chēng)必須與類(lèi)名相似。構(gòu)造函數(shù)不能有明確的返回類(lèi)型。
靜態(tài)方法屬于類(lèi)而不是對(duì)象。
無(wú)需創(chuàng)建對(duì)象即可調(diào)用靜態(tài)方法。
靜態(tài)方法可以訪問(wèn)和更改靜態(tài)變量的值。
靜態(tài)方法有兩個(gè)主要限制。
靜態(tài)方法不能使用非靜態(tài)數(shù)據(jù)成員或直接調(diào)用非靜態(tài)方法。
this 和 super 不能在靜態(tài)上下文中使用,因?yàn)樗鼈兪欠庆o態(tài)的。
因?yàn)閷?duì)象不需要調(diào)用靜態(tài)方法。如果我們將 main 方法設(shè)為非靜態(tài),JVM 將不得不先創(chuàng)建它的對(duì)象,然后調(diào)用 main() 方法,這將導(dǎo)致額外的內(nèi)存分配。
正如我們所知,靜態(tài)上下文(方法、塊或變量)屬于類(lèi),而不是對(duì)象。由于僅在創(chuàng)建對(duì)象時(shí)才調(diào)用構(gòu)造函數(shù),因此將構(gòu)造函數(shù)設(shè)為靜態(tài)是沒(méi)有意義的。但是,如果您嘗試這樣做,編譯器將顯示編譯器錯(cuò)誤。
在Java中,如果我們將抽象方法設(shè)為靜態(tài),它將成為類(lèi)的一部分,我們可以直接調(diào)用它,這是不必要的。調(diào)用未定義的方法是完全沒(méi)有用的,因此是不允許的。
此關(guān)鍵字有以下用途。
this可用于引用當(dāng)前類(lèi)實(shí)例變量。
this可用于調(diào)用當(dāng)前類(lèi)方法(隱式)
this()可用于調(diào)用當(dāng)前類(lèi)的構(gòu)造函數(shù)。
這可以作為方法調(diào)用中的參數(shù)傳遞。
this可以在構(gòu)造函數(shù)調(diào)用中作為參數(shù)傳遞。
this可用于從方法返回當(dāng)前類(lèi)實(shí)例。
下面給出了在 Java 中使用繼承的各種優(yōu)點(diǎn)。
繼承提供代碼可重用性。派生類(lèi)不需要重新定義基類(lèi)的方法,除非它需要提供方法的具體實(shí)現(xiàn)。
不使用繼承就無(wú)法實(shí)現(xiàn)運(yùn)行時(shí)多態(tài)性。
我們可以使用實(shí)時(shí)對(duì)象模擬類(lèi)的繼承,這使得 OOP 更加真實(shí)。
繼承提供數(shù)據(jù)隱藏。基類(lèi)可以通過(guò)將其設(shè)為私有來(lái)隱藏派生類(lèi)的一些數(shù)據(jù)。
沒(méi)有繼承就無(wú)法實(shí)現(xiàn)方法覆蓋。通過(guò)方法覆蓋,我們可以給出基類(lèi)包含的一些基本方法的具體實(shí)現(xiàn)。
super關(guān)鍵字有以下用途。
super 可用于引用直接父類(lèi)實(shí)例變量。
super 可用于調(diào)用直接父類(lèi)方法。
super() 可用于調(diào)用直接父類(lèi)構(gòu)造函數(shù)。
this 和 super 關(guān)鍵字有以下區(qū)別。
super 關(guān)鍵字始終指向父類(lèi)上下文,而 this 關(guān)鍵字始終指向當(dāng)前類(lèi)上下文。
super 關(guān)鍵字主要用于在派生類(lèi)構(gòu)造函數(shù)中初始化基類(lèi)變量,而 this 關(guān)鍵字主要用于在傳入類(lèi)構(gòu)造函數(shù)時(shí)區(qū)分局部變量和實(shí)例變量。
super 和 this 必須是構(gòu)造函數(shù)中的第一條語(yǔ)句,否則編譯器會(huì)拋出錯(cuò)誤。
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743