java点_java常见基础点
1. 重載與重寫
重載:發(fā)生在同一個類中,方法名必須相同,參數(shù)類型不同、個數(shù)不同、順序不同,方法返回值和訪問修飾符可不同。
重寫:子類對父類允許訪問的方法重新編寫,方法名參數(shù)列表必須相同,返回值范圍小于等于父類,拋出的異常范圍小于等于父類,修飾符范圍大于等于父類,若父類方法為private,子類不能重寫。
注:構(gòu)造器不能被重寫,重寫意味著發(fā)生了繼承,子類重寫父類的方法,然而構(gòu)造器的方法名必須與類名相同,顯而易見的是,子類和父類的類名一定不相同,所以構(gòu)造器不可被重寫。
2. final
修飾的類,為最終類,不能被繼承。如String 類,類中所有成員方法被隱式指定為final方法
修飾的方法可以被繼承和重載,但不能被重寫
修飾的變量如果是基本類型,則是個常量,不能被修改,若是引用類型,初始化后不能引用其他對象,但被引用對象本身是可以修改的。
final A y = new A();
y.a = 1;
3. OOP特點:
這是一種“萬物皆對象”的編程思想。在現(xiàn)實生活中的任何物體都可以歸為一類事物,而每一個個體都是一類事物的實例。
三大特性:封裝、繼承、多態(tài)
封裝:將一個對象的屬性私有化,同時提供一些可以被外界訪問問的屬性的方法
繼承:使用已存在的類的定義作為基礎(chǔ)建立新類,新類可增加新的數(shù)據(jù)和功能,可以用父類的功能,但不能選擇性的繼承父類。
多態(tài):同一個行為有多種表現(xiàn)形式,程序中定義的引用變量所指向的具體類型在編譯時不確定,而是在運行期間,該引用變量到底指向哪個類的實例變量。
4. “面向過程”和“面向?qū)ο蟆钡膮^(qū)別
面向過程就是分析出解決問題所需要的步驟,然后用函數(shù)把這些步驟一步一步實現(xiàn);面向?qū)ο笫前褑栴}分解成各個對象,去描敘某個對象在整個過程中的行為。
舉例說明:五子棋
面向過程:
1、開始游戲,2、黑子先走,3、繪制畫面,4、判斷輸贏,5、輪到白子,6、繪制畫面,7、判斷輸贏,8、返回步驟 2,9、輸出最后結(jié)果。每個步驟用不同的方法來實現(xiàn)。
面向?qū)ο?#xff1a;
整個五子棋可以分為 1、黑白雙方,這兩方的行為是一模一樣的,2、棋盤系統(tǒng),負(fù)責(zé)繪制畫面,3、規(guī)則系統(tǒng),負(fù)責(zé)判定諸如犯規(guī)、輸贏等。第一類對 象(玩家對象)負(fù)責(zé)接受用戶輸入,并告知第二類對象(棋盤對象)棋子布局的變化,之后在屏幕上面顯示出這種變化,同時利用 第三類對象(規(guī)則系統(tǒng))來對棋局進(jìn)行判定。
5. 抽象和接口:均不可被實例化
a) 接口中所有方法隱含都是抽象的。而抽象類則可以同時包含抽象和非抽象的方法。
b) 類可以實現(xiàn)很多個接口,但是只能繼承一個抽象類
c) Java接口中的成員變量默認(rèn)都是final static 。
d) Java接口中的方法默認(rèn)是public的。所有方法在接口中不能有實現(xiàn)(JDK8之后可默認(rèn)實現(xiàn))
e) JDK8之后,接口可定義默認(rèn)方法,JDK9之后,接口可定義私有方法。
6. 動態(tài)綁定和靜態(tài)綁定
綁定指的是一個方法的調(diào)用與方法所在的類(方法主體)關(guān)聯(lián)起來。
靜態(tài)綁定:
在編譯過程中就已經(jīng)知道這個方法到底是哪個類中的方法,java當(dāng)中的方法只有final,static,private和構(gòu)造方法是前期綁定。
動態(tài)綁定:
在運行時根據(jù)具體對象的類型進(jìn)行綁定,只適用于方法,若要訪問子類中與父類相同的屬性值,可在子類中添加一個get方法。
7. 深拷貝與淺拷貝
淺拷貝:對基本數(shù)據(jù)類型進(jìn)行值傳遞,對引用數(shù)據(jù)類型進(jìn)行引用傳遞般的拷貝。
深拷貝:對基本數(shù)據(jù)類型進(jìn)行值傳遞,對引用數(shù)據(jù)類型,創(chuàng)建一個新的對象,并復(fù)制其內(nèi)容。
8. JDK、JRE、JVM的區(qū)別與聯(lián)系
JDK :(Java Development Kit),Java 開發(fā)工具包。jdk 是整個 Java 開發(fā)的核心,擁有 JRE 所擁有的一切,還有編譯器(javac)和工具(如 javadoc 和 jdb)。能夠創(chuàng)建和編譯程序。
JRE :(Java Runtime Environment)Java 運行時環(huán)境。它主要包含兩個部分,jvm 和 Java 的一些基本類庫。用來運行已編譯 Java 程序所需內(nèi)容的集合。
JVM :只認(rèn)識 xxx.class 類型的文件,能夠?qū)?class 文件中的字節(jié)碼指令進(jìn)行識別并調(diào)用操作系統(tǒng)的 API 完成動作,是 Java 能夠跨平臺的核心。
9.Java 為什么能跨平臺,實現(xiàn)一次編寫,多處運行?
java文件編譯成二進(jìn)制字節(jié)碼的class文件,jvm解釋執(zhí)行class文件。不同的系統(tǒng)上安裝有不同的Java虛擬機(JVM),由JVM來把字節(jié)碼再“翻譯”成所對應(yīng)系統(tǒng)能夠執(zhí)行的代碼。因此不需要考慮硬件平臺是什么。java是運行在jvm上的,所以它的代碼就能不經(jīng)修改,就能在不同平臺的jvm上運行。
9 . == 與 equals
hashCode()與equals()的相關(guān)規(guī)定:
如果兩個對象相等,則hashcode一定也是相同的
兩個對象相等,對兩個equals方法返回true
兩個對象有相同的hashcode值,它們也不一定是相等的
綜上,equals方法被覆蓋過,則hashCode方法也必須被覆蓋
hashCode()的默認(rèn)行為是對堆上的對象產(chǎn)生獨特值。如果沒有重寫hashCode(),則該class的兩個對象無論如何都不會相等(即使這兩個對象指向相同的數(shù)據(jù))。
==與equals的區(qū)別
==是判斷兩個變量或?qū)嵗遣皇侵赶蛲粋€內(nèi)存空間 equals是判斷兩個變量或?qū)嵗赶虻膬?nèi)存空間的值是不是相同
==是指對內(nèi)存地址進(jìn)行比較 equals()是對字符串的內(nèi)容進(jìn)行比較
10. Java中的裝箱和拆箱:Integer 等包裝類不能被繼承
裝箱:自動將基本數(shù)據(jù)類型轉(zhuǎn)換為包裝器類型,是通過調(diào)用包裝器的valueOf方法實現(xiàn)的,
拆箱:自動將包裝器類型轉(zhuǎn)換為基本數(shù)據(jù)類型,是通過調(diào)用包裝器的 xxxValue方法實現(xiàn)的。(xxx代表對應(yīng)的基本數(shù)據(jù)類型)。
例如:
Integer i = new Integer(xxx) 和 Integer i =xxx;這兩種方式的區(qū)別。
i)第一種方式不會觸發(fā)自動裝箱的過程;而第二種方式會觸發(fā);
ii)第二種方式等同于Integer.valueOf(123) ,會使用緩存池中的對象,多次調(diào)用會取得同一個對象的引用。
11. JAVA只有值傳遞
按值調(diào)用表示方法接收的是調(diào)用者提供的值。
public static void main(String[] args) {
int num1 = 10;
int num2 = 20;
swap(num1, num2);
System.out.println("num1 = " + num1);
System.out.println("num2 = " + num2);
}
結(jié)果:
a = 20、b = 10
num1 = 10、num2 = 20
12. 靜態(tài)內(nèi)部類與普通內(nèi)部類的區(qū)別
是否含有靜態(tài)屬性
普通內(nèi)部類只能通過外部類的對象來訪問,所以不能定義各種靜態(tài)成員。
訪問外部成員
靜態(tài)內(nèi)部類只能直接訪問外部類的靜態(tài)成員, 若要訪問非靜態(tài)屬性,必須通過外部類的對象訪問
非靜態(tài)內(nèi)部類可直接訪問外部類的所有成員。
外部類訪問內(nèi)部類
假設(shè)類A有靜態(tài)內(nèi)部類B和非靜態(tài)內(nèi)部類C,創(chuàng)建B和C的區(qū)別為:
A.B b =newA.B(); A.C c =newA().newC();
13. C++與java
java程編寫一次代碼,到處運行,都是生成字節(jié)碼,在JVM里面運行得到結(jié)果,可移植性強。
java沒有指針,編寫效率高
java可自動回收
C++通常適合那些需要“硬件級”操作的軟件。二者之間的最大區(qū)別在于,C++更接近機器語言,因此其軟件運行速度更快且能夠直接與計算機內(nèi)存、磁盤、CPU或者其它設(shè)備進(jìn)行協(xié)作。
總結(jié)
以上是生活随笔為你收集整理的java点_java常见基础点的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Win10 C盘空间越来越小怎么办
- 下一篇: dw中html颜色的设置颜色代码,Dre