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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

Java基础总结(一)

發(fā)布時間:2023/12/10 java 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java基础总结(一) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1. 面向?qū)ο蟮奶卣?br />面向?qū)ο蟮奶卣靼ǔ橄?、封裝、繼承和多態(tài)。

抽象就是忽略一個主題中與當(dāng)前目標(biāo)無關(guān)的某些方面,以便更加充分的注意到與當(dāng)前目標(biāo)有關(guān)的方面。抽象并不打算了解全部的問題,而只是其中的一部分,暫時不用考慮細(xì)節(jié)。抽象包括兩個方面,第一是過程抽象,第二是數(shù)據(jù)抽象。

封裝是指隱藏對象的屬性和實(shí)現(xiàn)細(xì)節(jié),僅對外提供公共訪問方式。

  封裝了好處在于將變化進(jìn)行了隔離,便于使用,提高了服用性,同時由于可以避免外部對于屬性的直接訪問,提高了安全性。

  封裝的原則:將不需要對外提供的內(nèi)容都隱藏起來;把屬性都隱藏,提供公共的方法對其訪問。

  private是一個權(quán)限修飾符,被private修飾的成員只在本類中有效。私有是封裝的一種體現(xiàn),但封裝不僅僅是私有。


繼承,繼承是一種連接類的層次模型,并且允許和鼓勵類的重用,它提供了一種明確表述性的方法,一個類可以從一個現(xiàn)有的類派生,新類繼承了原始類的特性,新類稱為子類或者派生類,原始類稱為父類也叫基類。派生類可以從它的基類繼承方法和實(shí)例變量,并且類可以增加或者修改新的方法,使其更適合特殊的需要。

多態(tài),多態(tài)性是指允許不同類的對象對同一個消息做出響應(yīng),多態(tài)性包括參數(shù)化多態(tài)性和包含多態(tài)性,多態(tài)性語言具有靈活、抽象、行為共享和代碼共享的優(yōu)勢,很好的解決了應(yīng)用程序中函數(shù)同名的問題。


2. Overload和Override有什么區(qū)別
 方法的重寫overriding和重載Overloading是java多態(tài)性的不同表現(xiàn)。重寫Overriding是父類和子類之間多態(tài)性的一種表現(xiàn),重載Overloading是一個類中多態(tài)性的一種表現(xiàn)。如果在子類中定義某方法與其父類有相同的名稱和參數(shù),我們說該方法被重寫(Overriding)。子類的對象使用這個方法時,將調(diào)用子類中的定義,對他而言,父類中的定義如同被“屏蔽”了。如果在一個類中定義了多個同名的方法,它們或有不同的參數(shù)個數(shù)或有不同的參數(shù)類型,則稱為方法的重載(Overloading).

3. abstract class 和 interface有什么區(qū)別?
 抽象類用于創(chuàng)建一個體現(xiàn)某些基本行為的類,并為該類聲明方法,但不能在該類中實(shí)現(xiàn)該類的情況。接口是抽象類的變體。在接口中,所有方法都是抽象的。抽象類的子類為他們的父類中的所有抽象方法提供實(shí)現(xiàn),否則他們也是抽象類。接口只可以定義static final成員變量。接口的實(shí)現(xiàn)與子類相似,除了該實(shí)現(xiàn)類不能從接口定義中繼承行為。

4. 當(dāng)一個對象實(shí)例作為一個參數(shù)被傳遞到方法中時,參數(shù)的值就是該對象的引用,對象的內(nèi)容可以在被調(diào)用的方法中改變,但對象的引用是永遠(yuǎn)不會變的。

5. abstract的method是否可以同時是static,是否可以同時是native,是否可以是synchronized?
  都不能。
  ??abstract用來聲明抽象的方法,抽象方法并沒有方法類,不能被直接調(diào)用,必須在子類overriding后才能使用,所以訪問被abstract修飾的方法依賴于具體的對象實(shí)例,而被static修飾的方法是被直接訪問的,這就引發(fā)了邏輯中的沖突,同時還要注意,父類中是靜態(tài)方法,子類中不能覆蓋為非靜態(tài)方法。
  native修飾的方法是本地方法,該方法的實(shí)現(xiàn)由非java語言實(shí)現(xiàn),比如c語言,一般用于java與外界語言交互或者與操作系統(tǒng)交互,native可以和除abstract之外的所有java標(biāo)識符連用,因?yàn)閚ative方法是有實(shí)現(xiàn)體的,只不過這些實(shí)現(xiàn)體是由非java語言實(shí)現(xiàn)的,但是abstract卻是顯明的指定這個方法是沒有實(shí)現(xiàn)體的。
  synchronized,用于防止多個線程同時調(diào)用一個對象的該方法,使用它的前提是該方法可以被對象直接調(diào)用的,顯然和abstract不能同時連用。

6. 接口是否可以繼承接口?抽象類是否可以實(shí)現(xiàn)接口?抽象類是否可繼承實(shí)體類?
 接口可以繼承接口。抽象類可以實(shí)現(xiàn)接口,抽象類可以繼承實(shí)體類,但前提是實(shí)體類必須有明確的構(gòu)造函數(shù)。

7. Java關(guān)鍵字注意點(diǎn)
  所有的java關(guān)鍵字都是小寫的
  goto和const是保留關(guān)鍵字,在java中沒有使用
  true,false,null不是嚴(yán)格意義上的關(guān)鍵字,而是文字常量
8. 數(shù)組
  數(shù)組的兩種初始化方式:靜態(tài)初始化和動態(tài)初始化
  動態(tài)初始化數(shù)組必須給出長度,否則將報(bào)"缺少數(shù)組維數(shù)"的錯誤
  動態(tài)初始化二維數(shù)組時,可以只指定第一維德長度而不指定第二維的
  當(dāng)數(shù)組包含的元素是引用數(shù)據(jù)類型的時候,必須為每個元素實(shí)例化,否則在使用的時候會出現(xiàn)空指針異常。

9. float和double都不能進(jìn)行精確運(yùn)算。
  例如2.0-1.1并不等于0.9,因?yàn)橛?jì)算機(jī)使用的二進(jìn)制并不能準(zhǔn)備的表示浮點(diǎn)數(shù)
  不能簡單的使用四舍五入的方法解決上述問題
  可以使用BigDecimal類來解決這個問題。
  BigDecimal a1 = new BigDecimal(Double.toString(2.0));
  BigDecimal a2 = new BigDecimal(Double.toString(1.1));
  System.out.println(a1.subtract(a2).doubleValue());

10. 自增自減運(yùn)算符陷阱

  main(String[] args){
    int j = 0;
    for(int i = 0; i < 100; i++){
      j = j ++;
    }
    System.out.println(j);//打印出來的結(jié)果是0,因?yàn)閖 = j++,jvm工作時,先運(yùn)算j++然后將j自增之前的值賦給左側(cè)的j
  }

11. 字符與字符串陷阱
  System.out.println("a" + "b");// ab, 字符串的拼接
  System.out.println('a' + 'b');// 195, 字符a的ascii碼加上b的ascii碼
  System.out.println("a" + 'b');// ab,字符b被轉(zhuǎn)化成了字符串b

12. java中的異常處理機(jī)制的簡單原理和應(yīng)用
  java程序違反了java的語義規(guī)則時,java虛擬機(jī)就會將發(fā)生的錯誤表示為一個異常。違反語義規(guī)則包括兩種情況。一種是java類庫內(nèi)置的語義檢查。例如數(shù)組下標(biāo)越界,會引發(fā)IndexOutOfBoundsException;訪問null的對象時會引發(fā)NullPointerException.另外一種情況就是java允許程序員擴(kuò)展這種語義檢查,程序員可以創(chuàng)建自己的異常,并自由選擇在何時使用throw關(guān)鍵字引發(fā)異常。所有的異常都是java.lang.Throwable的子類.

13. finalize方法是在垃圾回收器刪除對象之前對這個對象調(diào)用的一個方法.

14. 什么時候使用assert?
  通常在開發(fā)和測試時使用,在軟件發(fā)布后關(guān)閉。

15. 構(gòu)造函數(shù)

構(gòu)造函數(shù):構(gòu)建創(chuàng)造對象時調(diào)用的函數(shù),創(chuàng)建對象都必須要通過構(gòu)造函數(shù)初始化。

作用:可以給對象進(jìn)行初始化。

一個類中如果沒有定義過構(gòu)造函數(shù),那么該類中會有一個默認(rèn)的空參數(shù)構(gòu)造函數(shù),如果在類中定義了指定的構(gòu)造函數(shù),那么類中的默認(rèn)構(gòu)造函數(shù)就沒有了。

一般函數(shù)和構(gòu)造函數(shù)什么區(qū)別呢?

a. 構(gòu)造函數(shù):對象創(chuàng)建時,就會調(diào)用與之對應(yīng)的構(gòu)造函數(shù),對對象進(jìn)行初始化。
? ? 一般函數(shù):對象創(chuàng)建后,需要函數(shù)功能時才調(diào)用。

b. 構(gòu)造函數(shù):對象創(chuàng)建時,會調(diào)用只調(diào)用一次。
? ? 一般函數(shù):對象創(chuàng)建后,可以被調(diào)用多次。


什么時候定義構(gòu)造函數(shù)呢?

在描述事物時,該事物一存在就具備的一些內(nèi)容,這些內(nèi)容都定義在構(gòu)造函數(shù)中。

構(gòu)造函數(shù)可以有多個,用于對不同的對象進(jìn)行針對性的初始化.
多個構(gòu)造函數(shù)在類中是以重載的形式來體現(xiàn)的。

細(xì)節(jié):
1,構(gòu)造函數(shù)如果完成了set功能。set方法是否需要。
2,一般函數(shù)不能直接調(diào)用構(gòu)造函數(shù)。
3,構(gòu)造函數(shù)如果前面加了void就變成了一般函數(shù)。
4,構(gòu)造函數(shù)中是有return語句的,ps,可以利用這個特點(diǎn)來控制構(gòu)造函數(shù)的初始化,比如if(age>10){return;}用來實(shí)現(xiàn)如果age>10那么就拒絕初始化.

16. this引用

當(dāng)成員變量和局部變量重名,可以用關(guān)鍵字this來區(qū)分。如?  

Person(String name) {this.name = name; }

  this : 代表對象。代表哪個對象呢?當(dāng)前對象。

this就是所在函數(shù)所屬對象的引用。
簡單說:哪個對象調(diào)用了this所在的函數(shù),this就代表哪個對象。

this也可以用于在構(gòu)造函數(shù)中調(diào)用其他構(gòu)造函數(shù)。
注意:只能定義在構(gòu)造函數(shù)的第一行。因?yàn)槌跏蓟瘎幼饕葓?zhí)行。

17. 字符串的拼接:

  為連接n個字符串而重復(fù)的使用字符串連接操作符(+),需要n的平方級的時間。例如: s4 = s1 + s2 + s3;

  不過如果被拼接的字符串都是字面量的話,java編譯器在編譯器就會將其優(yōu)化。如: S4= "a" + "b" + "c";變異完成的時候S4的值就是"abc".

  

轉(zhuǎn)載于:https://www.cnblogs.com/byron0918/p/4663211.html

總結(jié)

以上是生活随笔為你收集整理的Java基础总结(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。