3.演算子
20751 ワード
1.算術演算子
数学計算に使用される演算子.
演算算術数式の結果加算+A+BAとB減算値-A-BAとB減算値乗算*A*BAとBの値を/A/BAをBの値で割った残りの%A%BAをBで割った
フィーチャー被演算子のタイプが異なる場合、自動的にタイプを変換して被演算子のタイプに一致させ、演算を行います.
結果のタイプは、被演算子または被演算子のタイプによって異なります.
被演算子がdoubleまたはdoubleの場合、結果タイプはdoubleです.
そうでなければ、被演算子の1つがfloatまたはfloatである場合、結果タイプはfloatである
それ以外の場合、被演算子の1つがlongまたはlongの場合、結果タイプはlongです.
そうでない場合、結果タイプはintです.ここではbyte,short,charpe演算子,intです.
演算の結果タイプは算術演算の実行方式と被演算者の処理方式を決定する
結果タイプがdoubleの場合、演算子はdoubleに昇格し、演算は64ビット(分配密度バイナリ)IEE 754浮動小数点演算を使用して実行される.
結果タイプがfloatの場合、演算子によってfloatにアップグレードされ、演算は32ビット(単精度バイナリ)IEE 754浮動小数点演算によって実行される
結果タイプが長い場合は、64ビットシンボルを有する2の保存バイナリ整数演算を用いて、演算子によってlongに昇格された演算を実行する
結果タイプがintの場合、演算子によってintにアップグレードされ、32ビット符号付き2の保存バイナリ整数演算が用いられる
2.ビット演算子
保守(~)演算子は、ビット演算子または論理反転された被演算子ビットの単項演算子です.
AND(&)演算子は、2つの被演算子のビットまたは論理「and」を実行する2つの演算子である.
OR(|)演算子は、2つの被演算子のビットまたは論理「含む」または「含む」を実行するバイナリ演算子である.
XOR(^)演算子は、2つの被演算子のビットまたは論理「排他的論理」を実行する2つの演算子である.
演算子は、実際には32ビットまたは64ビットのすべての被演算子または被演算子の並列演算である
~演算子ブール値の反転または整数被演算子のすべてのビットの変更に使用
&演算子「マスク」整数の演算子に使用されるビット
3.関係演算子
==
: Equal to !=
: Not equal to >
: greater than <
: less than >=
: greater than or equal to <=
: less than or equal to boolean
4.論理演算子
&&
(LOGICAL AND) ||
(LOGICAL OR) boolean
boolean
5. instanceof
instanceof演算子を使用して、参照変数が参照するインスタンスの実際のタイプを理解します.Instanceofはオブジェクトタイプを確認する演算子で、instanceofを使用してtrueという演算結果が得られた場合は、参照変数チェックのタイプで変換できることを示します.
参照変数(「コメント」値null)をinstanceofで計算するとfalse結果が得られます.
class Parent{}
class Child extend Parent{}
public class Instanceof{
public static void main(String[] args){
Parent parent = new Parent;
Child child = new Child;
System.out.println( parent instanceof parent ); //true
System.out.println( child instanceof parent); //true
System.out.println( parent instanceof child); //flase;
System.out.println( child instanceof child); //true;
}
}
ParentはChildの親であるため、3番目の文はfalseを出力します.(親は子に変換できないため)
6. assignment(=) operator
代入演算子
代入演算子説明=右側の被演算子を左側の被演算子に代入する+=2つの被演算子に加算された値を左側の被演算子に代入する-=左側の被演算子から右側の被演算子の値を左側の被演算子に代入する*=2つの被演算子に乗算された値を左側の被演算子に代入する/=左側の被演算子を右側の被演算子のシェアで除算する被演算子%=左側の被演算子を右側の被演算子に分割し、左側の被演算子と右側の被演算子をAND演算し、入力値|=左側の被演算子と右側の被演算子をOR演算して値^=左側の被演算子と右側の被演算子をXOR演算した後、その値を<=<=左演算子を右演算子に左に移動し、その値を>>=左演算子を右演算子の記号として保持し、右に移動するとその値を>>>=左演算子を右演算子の記号に右に移動し、その値を代入します.
7.矢印(->)演算子
Java 8から、利用可能な演算子を使用してRamda表示機能を実行することができます.
Ramda以前のJavaでは,内部匿名クラスを介して実装体を作成し,それを用いた.
内部匿名クラスで実現される実装体の欠点(可読性,ロングコード)を補うことができる.
ランダの昔のジャワ
@FunctionalInterface
public interface Foo{
void printInt(int x); // 한 개의 메소드 추상화(함수형 인터페이스)
}
現在printIntは抽象化しか行われていないため、使用できません.抽象メソッドの使用
public class JavaArrow implement Foo{
@Override //오버라이드
public void printInt(int x){ //Foo 인터페이스의 메소드 가져와서 사용
System.out.println(x); //메소드 구현
}
public static void mian(String[] args){
JavaArrow ja = new JavaArrow(); //JavaArrow 인스턴스 만들기
int y = 3;
ja.printInt(y); //인스턴스에 메소드 호출
}
}
public static void main(String[] args){
int y = 3;
Foo foo = new Foo(){ //내부 익명 클래스 구현 (Ananimous inner class)
@Override //Foo interface를 받아와서 구현
public void printInt(int x){
System.out.println(x); //실제 구현
}
}
foo.printInt(y); //foo 인스턴스를 가져와서 사용
}
単純な単行出力ゲートを抽出するために約6行増加し,ランダはこれを補うことができる.public static void main(String[] args){
Foo foo = (x) -> System.out.println(x);
}
これで1本の線が実現できます.詳しい内容は操作画面の時に書いておきましょう
簡単に理解できるのは、->演算子を使用してJava 8以降で使用可能なram式を使用することです.
8.三項演算子
ifelse構造を簡潔に表す演算子
ifelse文を3つの演算子で表す方法を簡単に見てみましょう
int a = 10;
int b = 20;
int bigger;
if( a > b ) {
bigger = a;
}else{
bigger = b;
}
上のifelse文を3つの演算子として表します. int bigger = (a > b) ? a : b;
このようなより直感的な表現で論理を実現することができる.では、これらの機能のために存在する演算子だけですか?いいえ、ちがいます
まず文(statement)と式(expression)の違いを理解し、両者の最大の違いを省略します.
値文は自分で値を返すことはできません
1つの文だけが値(value)を表すことができない場合.逆に、人食いの3つの演算子は値を返すことができます.
String message = String.format("%d와 %d중 더 큰 수는 %d입니다.", a, b, (a > b) ? a : b);
9.演算子優先度
演算子優先演算子最適演算子.(点)、[]、()単項演算子!、~、+/-、++/--、(castデータ型),instanceof算術演算子+,-,*,/,%Shift演算子<,>>,>>,<=,=,=,=ビット演算子&、論理演算子&&、3つの演算子(条件項目)?真アイテム:偽アイテム割当て代入演算子=、*=、+=、-=、/=、%=、<<=、>>=増減接尾辞演算子+/--
10.Java 13. スイッチ演算子
既存のswitch文ではなくswitch演算子が追加されました
[既存のswitch文]
多くの場合breakを使用します
breakを無効にすると、次のブランチが実行されます.
戻り値なし
[state operator]
breakは使いません.
完成品が存在する
戻り値は存在します
case->A等フォーマット
switchの戻り値が不要な場合、またはcaseはswitchが入力したすべてのパラメータを上書きします.
defaultエントリを挿入する必要がない場合は、default->コードを記述する必要があります.
public class Switch
public static void main(String[] args){
//Java 12 이전
int num = 1;
int returnNum = 0;
switch(num){
case 1:
returnNum = 1;
break;
case 2:
returnNum = 2'
break;
}
//Java 12
returnNum = switch(num){
case 1 -> 1;
case 2 -> 2;
default -> throw new IllegalStateException("Unexpected value: " + num);
};
//Java13
returnNum = switch(num){
case 1 : yield 3;
default : throw new IllegalStateException("unexpected value : " + num);
};
}
結果1
1
3
switch演算子では,完成品と関数のreturnが同じ役割を果たすと考えると便利である.コメントURL
https://catch-me-java.tistory.com/30
https://my-itstory.tistory.com/entry/JAVA%EA%B8%B0%EC%B4%88-6-JAVA%EC%97%B0%EC%82%B0%EC%9E%90-%EC%9A%B0%EC%84%A0%EC%88%9C%EC%9C%84
https://castleone.tistory.com/6
Reference
この問題について(3.演算子), 我々は、より多くの情報をここで見つけました https://velog.io/@dbwogml15/3.-연산자テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol