java筆記(2)

1.JAVA中四種修飾符的限制範圍
  private:修飾的成員只能在同類中別訪問,而在同包、子類和其餘包中都不能被訪問
  public:修飾的成員在同類、同包、子類(繼承自本類)、其餘包均可以訪問
  protected:修飾的成員在同類、同包、子類中能夠訪問,其餘包中不能被訪問
  default:修飾的成員在同類、同包中能夠訪問,但其餘包中不論是不是子類都不能被訪問html


2.Java中,什麼是構造方法?什麼是構造方法重載?什麼是複製構造方法?
  構造方法是一種特殊的方法,它是一個與類同名且返回值類型爲同名類類型的方法。對象的建立就是經過構造方法來完成,其功能主要是完成對象的初始化。當類實例化一個對象時會自動調用構造方法。構造方法和其餘方法同樣也能夠重載。當新對象被建立的時候,構造方法會被調用。每個類都有構造方法。在程序員沒有給類提供構造方法的狀況下,Java編譯器會爲這個類建立一個默認的構造方法。Java中構造方法重載和方法重載很類似。能夠爲一個類建立多個構造方法。每個構造方法必須有它本身惟一的參數列表。但不能重寫。Java不支持像C++中那樣的複製構造方法,這個不一樣點是由於若是你不本身寫構造方法的狀況下,Java不會建立默認的複製構造方法。構造方法不能顯示調用。java


3.接口和抽象類的區別
  從設計層面來講,抽象是對類的抽象,是一種模板設計,接口是行爲的抽象,是一種行爲的規範。Java提供和支持建立抽象類和接口。它們的實現有共同點,不一樣點在於:程序員

  • 接口中全部的方法隱含的都是抽象的。而抽象類則能夠同時包含抽象和非抽象的方法。
  • 類能夠實現不少個接口,可是隻能繼承一個抽象類類能夠不實現抽象類和接口聲明的全部方法,固然,在這種狀況下,類也必須得聲明成是抽象的。
  • 抽象類能夠在不提供接口方法實現的狀況下實現接口。
  • Java接口中聲明的變量默認都是final的。抽象類能夠包含非final的變量。
  • Java接口中的成員函數默認是public的。抽象類的成員函數能夠是private,protected或者是public。
  • 接口是絕對抽象的,不能夠被實例化。抽象類也不能夠被實例化,可是,若是它包含main方法的話是能夠被調用的。
  • 抽象類有構造方法,接口沒有構造方法   抽象類只能單繼承,接口能夠多繼承
  • 抽象類能夠聲明和使用字段,接口則不能,但能夠建立靜態的final常量;接口被聲明爲public,省略後,包外的類不能訪問接口。

4.super和this的異同函數

  • super(參數):調用基類中的某一個構造函數(應該爲構造函數中的第一條語句)   this(參數):調用本類中另外一種造成的構造函數(應該爲構造函數中的第一條語      句)
  • super: 它引用當前對象的直接父類中的成員(用來訪問直接父類中被隱藏的父類中成員數據或函數,基類與派生類中有相同成員定義時如:super.變量名    super.成員  函數據名(實參)
  • this:它表明當前對象名(在程序中易產生二義性之處,應使用this來指明當前對象;若是函數的形參與類中的成員數據同名,這時需用this來指明成員變量名)
  • 調用super()必須寫在子類構造方法的第一行,不然編譯不經過。每一個子類構造方法的第一條語句,都是隱含地調用super(),若是父類沒有這種形式的構造函數,那麼在   編譯的時候就會報錯。
  • super()和this()相似,區別是,super()從子類中調用父類的構造方法,this()在同一類內調用其它方法。
  • super()和this()均需放在構造方法內第一行。儘管能夠用this調用一個構造器,但卻不能調用兩個。
  • this和super不能同時出如今一個構造函數裏面,由於this必然會調用其它的構造函數,其它的構造函數必然也會有super語句的存在,因此在同一個構造函數裏面有相同的  語句,就失去了語句的意義,編譯器也不會經過。
  • this()和super()都指的是對象,因此,均不能夠在static環境中使用。包括:static變量,static方法,static語句塊。
  • 從本質上講,this是一個指向本對象的指針, 然而super是一個Java關鍵字。

5.什麼是隱式轉換和顯式轉換
  顯示轉換就是類型強轉,把一個大類型的數據強制賦值給小類型的數據;隱式轉換就是大範圍的變量可以接受小範圍的數據;
  隱式轉換和顯式轉換其實就是自動類型轉換和強制類型轉換。優化


6.char類型能不能轉成int類型?能不能轉化成string或double類型?
  char在java中也是比較特殊的類型,它的int值從1開始,一共有2的16次方個數據;char<int<long<float<double;char類型能夠隱式轉成int,double類型,可是不能隱式轉換成string;若是char類型轉成byte,short類型的時候,須要強轉。this


7.Java中各類數據默認值設計

  1. Byte,short,int,long默認是都是0
  2. Boolean默認值是false
  3. Char類型的默認值是"    "
  4. Float與double類型的默認是0.0
  5. 對象類型的默認值是null

8.int和Integer的區別
  原始類型-包裝類:,boolean-Boolean,char-Character,byte-Byte,short-Short,int-Integer,long-Long,float-Float,double-Double
  一、Integer是int的包裝類,int則是java的一種基本數據類型
  二、Integer變量必須實例化後才能使用,而int變量不須要
  三、Integer實際是對象的引用,當new一個Integer時,其實是生成一個指針指向此對象;而int則是直接存儲數據值
  四、Integer的默認值是null,int的默認值是0

9.針對浮點型數據運算出現的偏差的問題,怎麼解決
  使用Bigdecimal類進行浮點型數據的加減乘除運算和比較大小(具體方法百度)
8.
一個java類中包含哪些內容?
  JAVA類中主要包含屬性、方法、構造方法、塊以及內部類。
  屬性用來定義對象的數據;
  方法用來定義對象的行爲;
  構造方法能夠用來建立對象;
  塊可以用來在類加載時執行操做或者在每次實例化前執行通用操做;
  內部類做爲類的一個成員存在,可以訪問外部類的屬性和方法。指針

9.內部類與靜態內部類的區別
  靜態內部類相對與外部類是獨立存在的,在靜態內部類中沒法直接訪問外部類中變量、方法。若是要訪問的話,必需要new一個外部類的對象,使用new出來的對象來訪問。可是能夠直接訪問靜態的變量、調用靜態的方法;
  普通內部類做爲外部類一個成員而存在,在普通內部類中能夠直接訪問外部類屬性,調用外部類的方法;
  若是外部類要訪問內部類的屬性或者調用內部類的方法,必需要建立一個內部類的對象,使用該對象訪問屬性或者調用方法;
  若是其餘的類要訪問普通內部類的屬性或者調用普通內部類的方法,必需要在外部類中建立一個普通內部類的對象做爲一個屬性,外同類能夠經過該屬性調用普通內部類的方法或者訪問普通內部類的屬性;
  若是其餘的類要訪問靜態內部類的屬性或者調用靜態內部類的方法,直接建立一個靜態內部類對象便可。htm

11static關鍵字的做用
  static關鍵字特色:
  1.static是一個修飾符,用於修飾成員。(成員變量,成員函數)static修飾的成員變量 稱之爲靜態變量或類變量
  2.static修飾的成員被全部的對象共享
  3.static優先於對象存在,由於static的成員隨着類的加載就已經存在
  4.static修飾的成員多了一種調用方式,能夠直接被類名所調用,(類名.靜態成員)
  5.static修飾的數據是共享數據,對象中的存儲的是特有的數據對象


  Static能夠修飾內部類、方法、變量、代碼塊
  Static修飾的類是靜態內部類
  Static修飾的方法是靜態方法,表示該方法屬於當前類的,而不屬於某個對象的,靜態方法也不能被重寫,能夠直接使用類名來調用。在static方法中不能使用this或者super關鍵字。
  Static修飾變量是靜態變量或者叫類變量,靜態變量被全部實例所共享,不會依賴於對象。靜態變量在內存中只有一份拷貝,在JVM加載類的時候,只爲靜態分配一次內存。
  Static修飾的代碼塊叫靜態代碼塊,一般用來作程序優化的。靜態代碼塊中的代碼在整個類加載的時候只會執行一次。靜態代碼塊能夠有多個,若是有多個,按照前後順序依次執行。


參考:https://www.cnblogs.com/hcl22/p/6371939.html

   https://baike.baidu.com/item/%E6%9E%84%E9%80%A0%E6%96%B9%E6%B3%95/10455265?fr=aladdin

   https://www.cnblogs.com/hasse/p/5023392.html

相關文章
相關標籤/搜索