1. 程式人生 > >Java基礎易漏易錯知識點總結

Java基礎易漏易錯知識點總結

           JAVA基礎易漏易錯知識點彙總

一、資料型別的對比

 1. byte型:8位

 2. short型:16位

 3. int型:32位

 4. long型:64位

 5. 浮點型:
         float型:單精度,32位,建立形式:**float f1=1.2f**;
         double型:雙精度,64位,建立形式:**double d1=1.234**;

 6.布林型 boolean a=true;

 7. 字元型:char:16位,單一的字元型,建立形式:**char a=‘A’**;

 8. 字元型的易漏點:
     8.1  2.34E308=2.34x10的308次冪

    8.2 浮點型轉換成整數型的話是直接捨棄了小數點後面的數得來的,不是通過四捨五入而來的。

    8.3 自動型別轉換的前提是**轉換前的數的位數低於轉換後的數**,可以簡單地理解符合一個**自下向上**的轉換規則。

    8.4 強制轉換的規則:一個是**資料型別相容的**,一個是**轉換前的數的位數高於轉換後的數的位數**。格式為:int a=3; byte b=(byte)a;

   8.5 整數的預設型別是int型別

二、區域性變數、成員變數、例項變數、類變數
1.區域性變數不能用訪問修飾符來修飾,原因是訪問修飾符是用來修飾屬性和方法的,區域性變數本身就是儲存在方法體內,在變數呼叫完成之後就不存在了。
2.區域性變數是在棧儲存中的,成員變數是在堆儲存中的。
3.例項變數一般情況下是設定為私有的,因為例項變數在具體的實現的時候才會實現。
4.例項變數是具有預設值的,數值型的變數預設值為0,布林型變數的預設值為false,引用型變數的預設值為null。變數的值可以在宣告時指定,也可以在構造方法中指定。
5.類變數必須用static關鍵字來宣告,在構造方法和語句塊之外。
6.一般當類變數為public static final

時,一般變數名為大寫,其他類想要訪問該類變數時無論在本類或者外類中,都可以直接以類名.變數名來訪問到這個靜態變數,如果是例項變數的話需要建立新的物件來訪問。

三、為什麼使用get和set方法而不是直接用public來公開這個值呢?
答:3.1、從使用原則上來講,設計類的人只需要告訴使用類的人類裡有什麼功能就好,不需要把具體的值給公開,使用類的人也是隻需要明白一個類能夠做什麼就ok,這個也是各個部門之間的合作準則。
3.2、get和set方法可以直接控制輸入的值,直接公開的話會有可能造成輸入不規範。
四、修飾符的使用
4.1修飾符的比較
4.2 注意點:
4.2.1 protected

訪問修飾符不能用來修飾類和介面,方法和成員變數不能定義成protected型別的,而且介面中的成員變數和方法不能宣告為protected的
4.2.2 父類和子類的繼承遵循著自低向高的原則,特殊的是private不能被繼承。
4.2.3 靜態方法不能使用類的非靜態變數,靜態方法從引數列表中得到這些資料。
4.2.4 final方法可以被繼承,不能被修改,final類不能被繼承。
4.2.5 一個類不能同時被abstract類和final來修飾。
4.2.6 如果一個類中有抽象方法,則一定為抽象類。
4.2.7 synchronized同一時間只能被同一個執行緒訪問。
4.2.8 transient該修飾符不會被持久。
五、運算子
5.1 條件運算子(?:)
運算規則:a=1;b=(a==10)?20:30,結果:30
5.2 instanceof 比較符
boolean result =a instanceof b;

六、構造方法和普通方法的總結
  6.1  構造方法的作用是為了建立一個新的物件,方便呼叫類中的方法。普通方法也可以叫做普通函式,目的就是為了封裝一些操作的方法。
  6.2 子類中繼承了父類後,如果子類要過載父類的構造方法的話需要用到super()這個方法的。
  七、抽象類和介面的區別與作用。
   1.抽象類是用來繼承的,介面是用來實現的。
   2.介面中必須都是抽象方法,抽象類中可以抽象方法也可以有非抽象方法。但是如果是抽象方法的話一定是抽象類。
   3.繼承了抽象類後,在實現的過程中是需要確確實實的方法。
  八、靜態的運用
    (1)不推薦使用物件的方式來訪問靜態欄位。
    (2)如果final變數為空,則需建立物件形式來引用。
    (3)靜態變數和例項變數的區別:
        靜態變數就會建立物件,只分配一次記憶體,例項變數在建立了對            象的時候就會建立了記憶體。
  九、內部類
內部類分為四種,成員內部類,區域性內部類,靜態內部類,匿名內部類。
(1)成員內部類的用法(類似於成員變數)
   區域性和成員內部類都不能定義靜態成員,原因就是靜態是優於物件存在的,如果先有了靜態,則說明這個類是先建立了出來,但實際上是不知道這個類是屬於誰的,所以說不能建立static關鍵字。
成員內部類的用法和作用的總結:
1./*外部類中的靜態成員方法訪問內部類*/
     public static void  Method_01(){
         Outer outer=new Outer();
         Inner inner=outer.new Inner();
         inner.InnerClass();
     }
     其他的用法很簡單。

2.區域性內部類的用法與總結
在區域性內部類中訪問到外部類的區域性變數的話,這個變數需要是final型的,只有帶上外部類的類名的時候才是訪問到外部類的區域性變數。

 3.靜態內部類的用法與總結
    靜態內部類是優於物件存在的,所以訪問的話只能先是訪問到外部類的靜態變數和靜態方法。
    外部類中訪問靜態類的靜態方法的時候,直接是內部類.靜態方法名,外部類訪問靜態類中的非靜態方法的時候,先是創建出物件,然後再呼叫方法。
4.匿名靜態類的特點與運用
   只用到類的一個例項。

  類在定義後馬上用到。
  類非常小(SUN推薦是在4行程式碼以下)
  給類命名並不會導致你的程式碼更容易被理解。
  
  在使用匿名內部類時,要記住以下幾個原則:
  匿名內部類不能有構造方法。
  匿名內部類不能定義任何靜態成員、方法和類。
  匿名內部類不能是public,protected,private,static。
  只能建立匿名內部類的一個例項。
一個匿名內部類一定是在new的後面,用其隱含實現一個介面或實現一個類。
  因匿名內部類為區域性內部類,所以區域性內部類的所有限制都對其生效。