日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java知识整理——基础知识

發布時間:2024/2/28 java 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java知识整理——基础知识 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • 什么是JVM? 為什么稱Java為跨平臺的編程語言?
    Java虛擬機(Java Virtual Machine)是可以執行Java字節碼的虛擬機,每個Java源文件將被編譯成字節碼文件,然后在JVM中執行。Java之所以被設計成可以在任意的平臺運行,而不需要重寫或者在不同的平臺下重新編譯,這些都要歸功于Java虛擬機(JVM),因為JVM非常了解特定的指令的長度以及底層硬件平臺的特殊性。
  • JDK和JRE之間的差異是什么?
    Java運行環境(Java Runtime Enviroment) 是運行Java程序的基本的Java虛擬機,包括執行applet的瀏覽器插件。JDK (Java Development Kit) 是為了開發,編譯和執行Java應用程序,針對Java的全功能的軟件開發包,包含了JRE,編譯器和工具(比如說 JavaDoc 和Java Debugger)。
  • “static” 關鍵字是什么意思?在Java里可以 override private 或 static 的方法嗎?
    static 關鍵字表示,訪問這個成員變量或方法時,不必獲取它屬于的類的實例。
    Java 里的 static 方法不能被 override,因為 override 的機制是運行時(runtime)的動態綁定,而 static 方法是在編譯時靜態綁定的。static 方法并不與任何類的具體實例有關,因此無法應用繼承的概念。
  • 在靜態方法里可以訪問非靜態變量嗎?
    Java 中的 static 變量歸相應的類所有,它的值對于類的所有實例都是相同的。static 變量是在 JVM 加載類的時候初始化的。如果代碼試圖訪問非靜態的變量,而且不是通過類的實例去訪問,編譯器會報錯,因為這些非靜態變量還沒有被創建呢,并且它們沒有與實例相關聯。
  • Java 支持哪些數據類型?什么是 Autoboxing 和 Unboxing?
    Java語言支持的8個基本數據類型如下:
    byte short int long float double boolean char
    Autoboxing 是指在基本數據類型和對應的包裝(wrapper)類之間Java 編譯器所做的自動轉換。例如,編譯器將 int 轉換為 Integer,將 double 轉換為 Double ,等等。逆向的轉換稱為 unboxing。
  • 在Java中什么是方法的 Override(覆蓋) 和 Overload(重載)?
    Java中方法的 overload 發生的條件是,同一個類里,有兩個或以上的方法名稱完全相同,但參數列表不同。另一方面,方法的 override 是指,子類重定義了父類里的同一個方法。Override 的方法必須方法名、參數列表和返回類型都完全相同。Override 的方法不會限制原方法的訪問權限。
  • Java中構造函數、構造函數重載的概念和拷貝構造函數
    當類的對象被創建的時候,調用它的構造函數。每個類都有一個構造函數。如果程序員沒有為類編寫構造函數,Java編譯器自動為類創建一個缺省的構造函數。
    構造函數重載和Java中函數重載類似,可以為同一個類創建不同的構造函數,每個構造函數必須擁有唯一的參數列表。
    Java與C++不同,它不支持拷貝構造函數,但是區別僅僅是,如果你沒有編寫類的拷貝構造函數,Java不會自動創建它。
  • Java支持多繼承嗎?
    Java不支持多繼承,每個類只允許繼承一個類,但是可以實現多個接口。
  • 接口和抽象類有什么不同?
    Java同時提供和支持抽象類和接口,它們的實現有一些共同的特點,也有如下不同:
    接口中所有的方法默認都是抽象的,而抽象類可以同時包含抽象和非抽象的方法。
    一個類可以實現多個接口,但它只能繼承一個抽象類。
    一個類要實現某個接口,必須實現這個接口聲明的所有方法。而一個類不需要實現抽象父類中聲明的所有方法,不過,這時候這個類也必須聲明為抽象類。
    抽象類可以實現接口,而且不需要實現接口中的方法。
    接口中聲明的變量默認是final的,而抽象類可以包含非final的變量。
    接口中的成員默認是public的,而抽象類的成員可以是private,protected,或public的。
    接口是絕對抽象的,不可實例化,抽象類也不可以實例化,但可以在main方法中觸發實例化(注:通過匿名類實現)。
  • 傳引用和傳值
    當對象通過傳值調用時,傳遞的是這個對象的一個拷貝。因此,即使函數修改這個對象,也不會影響原對象的值。
    當對象通過傳引用調用時,對象本身沒有被傳遞,而傳遞的是對象的一個引用。因此,外部函數對這個對象的修改,也會反映到任何出現這個對象的地方。
  • 淺談equals和hashcode
    先談equals。equals是Object類提供的方法之一,只有當一個實例等于它本身的時候,equals()才會返回true值。
    要想正確改寫equals()方法,你必須要遵守它的通用約定。下面是約定的內容,來自java.lang.Object的規范,equals方法實現了等價關系,以下是要求遵循的5點:
  • 自反性:對于任意的引用值x,x.equals(x)一定為true。
  • 對稱性:對于任意的引用值x 和 y,當x.equals(y)返回true時,y.equals(x)也一定返回true。
  • 傳遞性:對于任意的引用值x、y和z,如果x.equals(y)返回true,并且y.equals(z)也返回true,那么x.equals(z)也一定返回true。
  • 一致性:對于任意的引用值x 和 y,如果用于equals比較的對象信息沒有被修改,多次調用x.equals(y)要么一致地返回true,要么一致地返回false。
  • 非空性:對于任意的非空引用值x,x.equals(null)一定返回false。
    了解了equals重寫,我們再看hashCode()這個方法,hashcode()這個方法也是從object類中繼承過來的,在object類中定義如下:
    public native int hashCode();
    說明是一個本地方法,它的實現是根據本地機器相關的。再看它比較“官方”的詳細說明:hashCode()返回該對象的哈希碼值,該值通常是一個由該對象的內部地址轉換而來的整數,它的實現主要是為了提高哈希表(例如java.util.Hashtable提供的哈希表)的性能。
    你可以對它的這樣“官方式”的定義漠視,但以下這一點你必須銘記:在每個重寫了equals方法的類中,你必須也要重寫hashCode方法。如果不這樣做的話,就會違反Object.hashCode的通用約定,從而導致該類無法與所有基于散列值(hash)的集合類結合在一起正常運行。
    hashCode()的返回值和equals()的關系如下:
    如果x.equals(y)返回“true”,那么x和y的hashCode()必須相等。
    如果x.equals(y)返回“false”,那么x和y的hashCode()有可能相等,也有可能不等。
  • 什么是面向對象編程
    Java是支持并發,基于類的以及面向對象的一種計算機編程語言. 以下列舉了面向對象編程的優勢:
    1)模塊化編程,使維護和修改更加容易
    2)代碼重用
    3)提高代碼的可靠性以及靈活性
    4)提高代碼可讀性
    面向對象編程有其非常明顯的特性,比如說封裝,繼承,多態和抽象. 下面我們來分析一下每種特性.
    封裝(Encapsulation)
    封裝,提供的對象隱藏內部特性和行為的一種能力,每個對象提供了一些方法,其他的對象可以訪問并改變其內部數據。在Java中,提供了三種訪問修飾符: 公有的,私有的以及保護的。每個修飾符都設定了不同的訪問權限,這個權限設置不會因為包的不同而有差異。
    下面是使用封裝的一些優點:
    1)通過隱藏屬性來保護對象的內部信息
    2)因為可以獨立的修改或者擴展對象的行為,從而提高代碼的可用性以及維護性
    3)隔離,通過阻止對象使用不希望的互動方式來交互,以此來提高模塊化程度。
    你可以通過鏈接訪問我們的教程查看關于封裝更多的細節和實例.
    多態(Polymorphism)
    多態就是針對不同的基礎數據類型呈現相同接口的一種能力,多態類型就是其操作可以適用于不同類型值的一種類型。
    繼承(Inheritance)
    繼承提供了一個對象從基類獲取字段和方法的一種能力.繼承提供了代碼的重用性,并且在不更改現有類的情況下,對現有類增加額外的功能。
    抽象(Abstraction)
    抽象是從具體的實例中分離想法的過程,根據他們各自的功能而非具體的實現來開發類. Java中支持創建和存在暴露接口的抽象類, 而沒有包括方法的具體實現。抽象方法的宗旨就是將類的行為和具體實現分離開。
    抽象和封裝的異同
    抽象和封裝是個互補的概念。一方面,抽象專注在對象的行為上,而另外一方面,封裝專注于對象的行為的具體實現。封裝是通過隱藏對象的內部信息來實現的,因此也可以被看做是抽象的一種策略。
  • 總結

    以上是生活随笔為你收集整理的Java知识整理——基础知识的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。