[TIL/220419]

7226 ワード

static


mainメソッドで使用
同じクラスでglobalScope変数は使用できません.
mainは静的メソッドです.静的メソッドでは、非静的フィールドの使用は許可されません.
同じクラスでも、これらの変数は使用できません.
mainメソッドはキーワードstaticによって定義されます.この方法を静的方法と呼ぶ.
静的フィールド(フィールドの前に静的キーを付ける)または静的メソッドはクラスインスタンス化を必要とせずに使用できます.
静的変数は共有されます.
静的に宣言された変数は、格納可能な値の空間を1つだけ生成します.したがって、静的変数は、複数のインスタンスを作成しても1つです.

Throws & Throw


divideメソッドの後のthrows I llegalArgumentExceptionは、このエラーがdivideを呼び出す側で処理される必要があることを意味します.
public class ExceptionExam3 {   
        public static void main(String[] args) {
            int i = 10;
            int j = 0;
            try{
                int k = divide(i, j);
                System.out.println(k);
            }catch(IllegalArgumentException e){
                System.out.println("0으로 나누면 안됩니다.");
            }           
        }

        public static int divide(int i, int j) throws IllegalArgumentException{
            if(j == 0){
                throw new IllegalArgumentException("0으로 나눌 수 없어요.");
            }
            int k = i / j;
            return k;
        }   
    }

JAva 8ではdefaultメソッドをインタフェースに追加できます


why? インタフェースが変更された場合、すべてのインプリメンテーションインタフェースのクラスがこのメソッドを実装する必要があります.これらの問題を解決するために,インタフェース上で方法を実現することができる.

ランダ式


メソッドのみを渡す場合はプログラミングが便利ですが、Javaではメソッドのみを渡す方法はありません.そのため、毎回オブジェクトを作成してパラメータとして渡す必要があります.この部分を解決したのはラムダ式である.
 public class LambdaExam1 {  
        public static void main(String[] args) {
            new Thread(()->{
                for(int i = 0; i < 10; i++){
                    System.out.println("hello");
                }
            }).start();
        }   
    }
()->{ ..... } 一部はラムダ式、換言すれば匿名の方法
JVMは、Thread作成者を確認し、()->{}が何であるかを推定します.
Threadジェネレータapiから、実行可能なインタフェースが受け入れられていることがわかります.
JVMは、Thread作成者がRunnableインタフェースを実装する必要があることを認識し、Ramda式をRunnableを実装するオブジェクトとして自動的に作成し、パラメータとして挿入します.
DPは、ある位置に値を一時保存するアルゴリズム~!
1+1+1+1の例