Java漏れ補充-詳細

2750 ワード

1.タイプ変換の問題
public static void main(String args[]) {
        int num = 2147483647 ;
        num += 1L;//  num   ,  1L  int,     ,    -2147483648
        //long b = num + 1L;    //   b  , num   long  ,    
//        int b = Integer.MAX_VALUE;  2147483647
//        int b = Integer.MIN_VALUE;  -2147483648
        System.out.println(num) ;
    }

出力:-2174483648
 
2.論理演算、演算(前に失敗した場合、後に実行されない)、または演算(前に成功した場合、後に実行されない)
public static void main(String args[]) {
        boolean flag = 10%2 == 1 && 10 / 3 == 0 && 1 / 0 == 0 ;
        System.out.println(flag ? "mldn" : "yootk") ;
    }

出力:yootk(10%2=1はfalseで、後で実行しません)
 
public static void main(String args[]) {
        boolean flag = 10%2 == 1 || 10 / 3 == 0 || 1 / 0 == 0 ;
        System.out.println(flag ? "mldn" : "yootk") ;
    }

出力:Exception in thread"main"java.lang.ArithmeticException:/by zero
 
3.注記
(1)@Override:構造注記,親メソッドの上書きエラーを防止し,コンパイル期間中に認識できる.
 
4.下向きに転換するには、instanceofでインスタンスが対応クラスのインスタンスであるかどうかを判断し、隠れた危険を防止する必要がある.
5.自動梱包と解体、梱包類を構築する場合、構造方法を調整する必要はなく、1.9バージョンでは構造方法が期限切れになった
6.インタフェースの強化
(1)インタフェースは主に静的変数と抽象的な方法を含む
(2)インタフェースと実装クラスを通常定義する場合,抽象クラスを先に実装し,具体的な実装クラスを偶発的に実装する必要がある.後でインタフェースに新しい共通メソッドを追加し、抽象クラスに追加することができ、実装クラスごとに追加する必要はありません.
(3)1.8バージョンでは,インタフェースを強化し,インタフェースに直接一般的な方法を加えることができるが,defaultで修飾する必要がある.この方法は救済方法に属し,(2)の設計が望ましい
(4)1.8バージョンでは,インタフェースでstaticメソッドを定義し,インタフェースを介して直接アクセスすることもできる.
(5)ただし,(2)の方法で定義することが望ましい.