AVA-3:演算子


3演算子


3.1算術演算子



3.2ビット演算子



3.3関係演算子


演算の結果booleanデータ型を返す

3.4論理演算子



3.5 instanceof


instsanceof演算子は、参照変数が参照するインスタンスのタイプを決定するために使用され、主に条件文に使用されます.シェイプ変換がtrueであればfalseを返します.
객체 instanceof 클래스

3.6 assignment(=) operator


変数に値を割り当てるときに使用する演算子.

3.7矢印(->)演算子


デフォルトでは、矢印(->演算子はJava 8からram式を導入するために使用され、左側のパラメータの右側に実装情報が含まれます.メソッドを簡単に作成し、機能インタフェースを間接的に実装できます.
(parameter) -> { statement; }

3.7.1ラムティー


関数式プログラミングをサポートするためにJava 8にラムダ式を導入した.ラムダの基礎は数学と基礎計算機科学の分野におけるラムダ代数をより簡単に表現するためである.また,プログラミング分野においてRamda関数とは,ネーミングを必要としない匿名関数(Anonymousfunctions)を指す.また、これらの匿名関数は、通常、First Class Citizen(First Class Citizen)の特徴を有する.また,Javaではラムダ式は匿名関数ではなく匿名オブジェクトである.

3.7.2関数式プログラミング


y=f(x)形式の関数構成のプログラミングテクニック.
  • のデータをメディア値として伝達する受信結果のコードからなる
  • .
  • オブジェクト向けプログラミングよりも効率的
  • 指向性データの処理
  • データパッケージオブジェクトを作成するよりも、すぐに処理するほうが有利です.
  • マルチコアCPU上で並列処理後の集約を行う場合、関数は遊離
  • となる.
  • イベント向けプログラミング(Handler関数を使用)
  • 反復イベント処理は、Handlerオブジェクトよりも関数
  • に適している.

    3.7.3第一類公民


    レベル1オブジェクトとは、次の3つの条件を満たすレベル1オブジェクトです.
  • 変数またはデータに割り当てることができます.
  • パラメータで伝達できるはずです.
  • の戻り値として使用できるはずです.
  • たとえば、Javaの一級オブジェクトでは、参照タイプのオブジェクトが代表的です.これらは、変数またはデータに割り当てられ、パラメータとして渡され、戻り値として使用できます.
    Javaのオブジェクトとは異なり、関数自体は1レベルのオブジェクトとして使用できません.しかし,ラムダ式を用いると,匿名関数は1級オブジェクトの特徴を持つことができる.

    3.7.4ランダ食品の長所と短所


    長所
    コードの簡潔性
  • 不要な重複文を削除し、複雑な式を簡略化
  • の集合要素(ビッグデータ)をフィルタまたはマッピングすることで、
  • を簡単に統計できます.
    短所
  • ランダの関数を使用して
  • を繰り返し使用することはできません.
  • 不要なランダは可読性を低減*
  • 3.7.5ラムダ式の例


    JAvaはramda式を関数型インタフェースの匿名実装オブジェクトと見なします.このとき,関数インタフェースとは,抽象的なメソッドが1つしか宣言されていないインタフェースである.
    ランダ文法
    // 기존 문법 
    new Thread(new Runnable() {
        @Override
        public void run() {
            System.out.println("Welcome");
        }
    }).start();
    
    // 람다 활용
    new Thead( () -> {
        System.out.println("Welcome");
    }).start();
    Runnableはメソッドが1つしかない関数インタフェースであるため,Ramda式で表すことができる.このとき()はrunの()を表す.すなわち,関数型インタフェースタイプの参照変数としてram多項式を参照できる.

    3.8 3項演算子


    3つの演算子の基本形式は次のとおりです.
    int a = (5 < 4 ) ? 10 : 20;
    上の演算子を基準として、次の形式があります.
    조건문 ? 참인 경우 : 거짓인 경우;
    すなわち,aに対して条件文は偽であるため,20に初期化する.これら3つの演算子は、単純な条件文の効率的な作成に使用されます.

    3.9演算子優先度



    基本的にカッコの優先順位が最も高く、単項>二項>三項と算術>比較>論理>代入の順序が優先されます.

    3.10 Java 13スイッチ演算子


    ここでいうswitch演算子は、既存のswitch文の変更ではなく、switch演算子が追加されています.

    3.10.1スイッチ文(文)


    多くの場合、breakは存在し、戻り値は存在しません.また、breakがなければ、次の四半期に入ります.

    3.10.2スイッチ演算子


    breakを使用する必要のない式に変更されたため、結果値を返すフォーマットも使用できます.戻り値のタイプをObjectに設定すると、式ごとに異なるタイプを返すことができます.また、caseでは->演算子も使用できます.
    [スイッチ式]
    public void printDay(Day today) {
        switch (today) {
            case MON, TUE, WED, THUR, FRI -> System.out.println(today.name() + " is Weekday");
            case SAT, SUN -> System.out.println(today.name() + " is Weekend");
        }
    }
    
    [戻り値を取得]
    public String printDay(Day today) {
        String result = switch (today) {
            case MON, TUE, WED, THUR, FRI -> today.name() + " is Weekday";
            case SAT, SUN -> today.name() + " is Weekend";
        };
        return result;
    }
    [戻り値とブロック構文]
    public String printDay(Day today) {
        String result = switch (today) {
            case MON, TUE, WED, THUR, FRI -> today.name() + " is Weekday";
            case SAT, SUN -> {
                System.out.print("Holiday! ");
                yield today.name() + " is Weekend";
            }
        };
        return result;
    }
    Java 13からは、yieldキーワードで返すことができます.returnキーワードを使用するとコンパイルエラーが発生することに注意してください.