JavaSE学習ノート——演算子
14415 ワード
Javaの演算子
JAva演算子:数学演算子、ビット演算子、論理演算子、自増演算子、比較演算子、三木演算子.シフト演算子演算子演算子の閉鎖性:javaの演算子には閉鎖原則がある.同種のデータが計算に参加し、同種の結果を得る.異なるタイプのデータが計算に関与する場合、大きなタイプの結果が得られる.
数学演算子
プラス(+)マイナス(-)プラス(*)マイナス(/)マイナス(%)マイナス(%)プラス(%)1.プラス(%)プラス(%)プラス(%)プラス(%)プラス(%)マイナス(%)プラス(%)マイナス(%)プラス(%)マイナス(%)プラス(%)プラス(%)マイナス(%)プラス(%)プラス(%)マイナス(%)プラス(%)マイナス(%)プラス(%)プラス(%)マイナス(%)プラス(%)マイナス(%)プラス(
じこぞうふくえんざん
接頭辞の自己増加:++a/–a、まずaの値に1を加えて式の値とします.接尾辞の自己増加:a++/a–、まずaの値を式の値として、それからaは更に1.+=*=/=%=-=を加えます
ビット演算子
特徴:java中の整数に対してビット演算を行う.本質は整数のバイナリ対応の位置を計算する
1
に適合
説明
ビットと
&
同じ1が1、その他は0
ビット単位または
|
同じ0は0、その他は1
異或
^
同じ0、異なる1
に逆らう
~
一元演算記号、ビットによって逆をとる
シフト演算子
特徴:javaは整数型に対して直接そのバイナリをシフト操作する.シフト演算>=>>=<=
説明
アイコン
説明
左に移動
n<<
nを左にmビット移動し、最下位は0補完
符号付き右シフト
n>>m
nを右にmビット移動し、最上位にシンボルビットを使用して補完
符号なし右シフト
n>>>m
nを右にmビット移動し、最上位は0補完を使用
比較演算子
特徴:比較関係、比較演算子の結果はブールタイプ.>=<===!=,注意:javaの等号は付与記号であり、二等号は比較変数値の比較演算子を用いる.
論理演算子
特徴:式間の論理関係
説明
構文
説明
と
exp1 && exp2
exp 1とexp 2がtrueの場合、結果はtrue、そうでない場合false
または
exp1 || exp2
epx 1とexp 2がfalse、結果falseの場合true
非
!exp1
逆に、exp 1がtrue、falseのように&&&&,|と|の違いは? &,|ビット演算子としても論理演算子としても &,|論理演算子 としてのみ使用できます.&&,|短絡機能,&,|論理演算子として短絡機能を備えていない 短絡の概念:論理式の中で、第1の表現が式全体の値を判断することができるならば、第2の表現は実行しません.&と|を論理演算子として使うことを提案して、プログラムの実行の効率を高めることができます
さんこうえんざんし
特徴:三目演算子はif..elseの略です.基本文法:ブール式?trueの結果:falseの結果
三木演算子はネストできます
JAva演算子:数学演算子、ビット演算子、論理演算子、自増演算子、比較演算子、三木演算子.シフト演算子演算子演算子の閉鎖性:javaの演算子には閉鎖原則がある.同種のデータが計算に参加し、同種の結果を得る.異なるタイプのデータが計算に関与する場合、大きなタイプの結果が得られる.
数学演算子
プラス(+)マイナス(-)プラス(*)マイナス(/)マイナス(%)マイナス(%)プラス(%)1.プラス(%)プラス(%)プラス(%)プラス(%)プラス(%)マイナス(%)プラス(%)マイナス(%)プラス(%)マイナス(%)プラス(%)プラス(%)マイナス(%)プラス(%)プラス(%)マイナス(%)プラス(%)マイナス(%)プラス(%)プラス(%)マイナス(%)プラス(%)マイナス(%)プラス(
int i=1;
double d=1.2;
//java ,int double double
double result=i+d;
System.out.println(result);
int i1=3;
int i2=4;
//java ,int int int
int i3=i1/i2;
System.out.println("i3="+i3);//0
double i4=(double)i1/i2;
System.out.println("i4="+i4);//0.75
int max=0x7fff_ffff;
int a=max+1;
// .
System.out.println("a="+a);//a=-2147483648
じこぞうふくえんざん
接頭辞の自己増加:++a/–a、まずaの値に1を加えて式の値とします.接尾辞の自己増加:a++/a–、まずaの値を式の値として、それからaは更に1.+=*=/=%=-=を加えます
int a=1;
// , a a++ , a+1
int b=a++; //a=a+1
System.out.println("a="+a+" ,b="+b);//a=2,b=1;
int x=1;
// , a +1, a
int y=++x;
System.out.println("x="+x+" ,y="+y);//x=2,y=2
int z=2;
z=z++;
// z=2:java
System.out.println("z="+z);
byte c=1;
// jvm
byte d=++c; //d=c+1;
System.out.println("d="+d);//d=2;
d+=4;//d=d+4;
System.out.println("d="+d);
int i=3;
i+=4;//i=i+4;
System.out.println("i="+i);
int m=1;
int n=++m+m++;
System.out.println("n="+n+",m="+m);//n=4,m=3
ビット演算子
特徴:java中の整数に対してビット演算を行う.本質は整数のバイナリ対応の位置を計算する
1
に適合
説明
ビットと
&
同じ1が1、その他は0
ビット単位または
|
同じ0は0、その他は1
異或
^
同じ0、異なる1
に逆らう
~
一元演算記号、ビットによって逆をとる
int x=3;// 0000_0011
int y=7;// 0000_0111
int and=x&y; //0000_0011
System.out.println("and="+and);//3
int or=x|y;// 0000_0111;
System.out.println("or="+or);//7
int other=x^y;//0000_0100;
System.out.println("other="+other);//4
int back=~x;// 24 1_1111_1100
System.out.println("back="+back);//-4
// ,
int a=100;//0110_0100
int b=200;//1100_1000
System.out.println(" :a="+a+",b="+b);
// result=a^b //1010_1100
// result^a //1100_1000
// result^b //0110_0100
int result=a^b;
a=result^a;
b=result^b;
System.out.println(" :a="+a+",b="+b);
シフト演算子
特徴:javaは整数型に対して直接そのバイナリをシフト操作する.シフト演算>=>>=<=
説明
アイコン
説明
左に移動
n<<
nを左にmビット移動し、最下位は0補完
符号付き右シフト
n>>m
nを右にmビット移動し、最上位にシンボルビットを使用して補完
符号なし右シフト
n>>>m
nを右にmビット移動し、最上位は0補完を使用
int result=2<<3;
System.out.println(" 2 :"+result);
// ,
int a=2<<30;
System.out.println("a="+a);//-2147483648
// , .[ 32 ]
int b=2<<35;//16 35%32=3
System.out.println("b="+b);
int i=-1;//-1 32 1
// ,
int c=i>>1;
System.out.println("c="+c);//c=-1
int d=i>>>1;// , 0
System.out.println("d="+d);// d=0x7fff_ffff
byte f=0b0110_0100;//100
// f 0000_0110 0000_0100
//
byte low=(byte)(f&0x0f);//(byte)(f&0B0000_1111);//4
System.out.println(low);
//
//1.
byte high=(byte)((f>>>4)&0xf);
System.out.println("high="+high);//6
比較演算子
特徴:比較関係、比較演算子の結果はブールタイプ.>=<===!=,注意:javaの等号は付与記号であり、二等号は比較変数値の比較演算子を用いる.
boolean flag=1==2;//flag=false
// age [22,40]
int age = 18;
// boolean noHappy=22<=age<=40;// ,java
論理演算子
特徴:式間の論理関係
説明
構文
説明
と
exp1 && exp2
exp 1とexp 2がtrueの場合、結果はtrue、そうでない場合false
または
exp1 || exp2
epx 1とexp 2がfalse、結果falseの場合true
非
!exp1
逆に、exp 1がtrue、falseのように
Scanner sc=new Scanner(System.in);
System.out.println(" :");
int age=sc.nextInt();
// age [22,40]
// boolean noHappy=(age>=22 && age<=40);
boolean noHappy=(age>=22 & age<=40);
System.out.println(" :"+noHappy);
// age 18, 60
// boolean happy=(age<=18 || age>=60);
boolean happy=(age<=18 | age>=60);
System.out.println(" :"+happy);
int x=1;
int y=2;
boolean flag=(x++>0||--y<2);//
System.out.println("flag="+flag+" ,x="+x+" ,y="+y);//true,2,2
int a=1;
int b=2;
boolean flag2=(a++>0|--b<2);//
System.out.println("flag2="+flag2+" ,a="+a+" ,b="+b);//true,2,1
int i=1;
int j=2;
int k=3;
// : ,
boolean flag3=(i++>0 || j--<3 && --k<3);
// flag3= (i++>0) || (j--<3 && --k<3) ;
//true,2,2,3
System.out.println("flag3="+flag3+" ,i="+i+" ,j="+j+" ,k="+k);
さんこうえんざんし
特徴:三目演算子はif..elseの略です.基本文法:ブール式?trueの結果:falseの結果
Scanner sc=new Scanner(System.in);
System.out.println(" :");
int total=sc.nextInt();
System.out.println(" :");
int pageSize=sc.nextInt();
//
/*
int size=0;
if(total%pageSize==0){//
size=total/pageSize;
}else{
size=total/pageSize+1;
}
*/
// ( )
int size=total%pageSize==0?total/pageSize:total/pageSize+1;
System.out.println(" :"+size);
三木演算子はネストできます
// : 3 , ( )
System.out.println(" ");
int a=sc.nextInt();
int b=sc.nextInt();
int c=sc.nextInt();
//
int max=a>b?(a>c?a:c):(b>c?b:c);//
System.out.println("max="+max);