Java講座第三講

6572 ワード

記事の転載先:android.yaohuiji.com
一、賦値演算子Assignment Operators
実はJavaには12種類の付与演算子があります.「=」は最も一般的なものです.次に説明する4つの一般的な複合付与演算子(+=、-=、*=、/=)
public class Lesson04_1 {
	public static void main(String[] args){
		int x=10;
		int y=10;
		y=y-6;
		x=x+2*5;
		System.out.println("x="+x);
		System.out.println("y="+y);

		x=10;
		y=10;
		y-=6;
		x+=2*5;
		System.out.println("x="+x);
		System.out.println("y="+y);

		x=10;
		x*=2+5;
		System.out.println("x="+x);
	}
}

上の2つのコードの効果は同等で、下のコードの同等のコードはx=x*(2+5)で、なぜ乗算優先ではないのでしょうか.*=が付与演算子なのか、付与演算子の優先度が最も低いためです.演算子の優先度については、最後にまとめます.
最後に、11種類の複合付与演算子を列挙します.
演算子
例を挙げる
等価式
+=
a += b
a = a+b
-=
a -= b
a = a-b
*=
a *= b
a = a*b
/=
a/= b
a = a/b
%=
a %= b
a = a%b
&=
a &= b
a = a&b
|=
a |= b
a = a|b
^=
a ^= b
a = a^b
<<=
a <<= b
a = a<
>>=
a >>= b
a = a>>b
>>>=
a >>>= b
a = a>>>b
二、関係演算子Relational Operators
リレーショナル演算子は、オペランド間の関係を比較するために使用され、リレーショナル演算子は常にブール値(trueまたはfalse)を生成します.
演算子
機能
例を挙げる
演算結果
演算可能なタイプ
>
より大きい
‘a’>’b’
false
整数、浮動小数点、文字
<
より小さい
2<3.0
true
整数、浮動小数点、文字
==
に等しい
‘x’==88
true
任意
!=
等しくない
true!=true
flase
任意
>=
以上
6.6>=8.9
flase
整数、浮動小数点、文字
<=
以下
‘M’<=88
true
整数、浮動小数点、文字
Javaは、2つの文字タイプデータ間で比較したり、文字タイプデータと整数浮動小数点数タイプを比較したりする場合、文字のUnicode値を数値として他の数値と比較します.
等化演算子「Equality」Operators
==と!この2つの関係演算子は、2つの類似するものが等しいかどうかを比較します.2つの互換性のないタイプを比較できないことに注意してください.比較できないとは何ですか.コンパイラが直接エラーを報告します.
整数と浮動小数点数の等化比較で値が等しい場合はtrueを返します.参照タイプの変数間の比較は、同じオブジェクトを参照しているかどうかを見て、変数のビットが等しい場合は等しいです.
import java.util.Date;
public class Lesson04_2 {
	public static void main(String[] args){

		System.out.println("'a'=='a' ? " + ('a'=='a'));
		System.out.println("'a'=='b' ? " + ('a'=='b'));
		System.out.println("5.0==5L ? " + (5.0==5L));
		System.out.println("true==true ? " + (true==true));

		Date date1 = new Date();
		Date date2 = new Date();
		Date date3=date1;
		boolean b1=date1==date2;
		boolean b2=date1==date3;
		System.out.println("date1="+date1.getTime());
		System.out.println("date2="+date2.getTime());
		System.out.println("b1="+b1);
		System.out.println("b2="+b2);
	}
}

運転結果を見てみましょう.
三、instanceof演算子  instanceof Comparison
あなたたちはまだ正式に相手を学んだことがありませんので、この節では、相手を学んだ後、もう一度戻って見てください.
instanceof演算子は、オブジェクト参照変数の比較にのみ使用でき、オブジェクトが何らかのタイプであるかどうかを確認できます.ここでのタイプとは、クラス、インタフェースタイプ配列を指します.あるいはinstanceofは、演算子の左の変数が参照するオブジェクトが右のタイプまたはインタフェースのIS-Aでテストできるかどうかをチェックします.
import java.util.Date;
public class Lesson04_3 {

	public interface Foo{}
	public class A implements Foo{}
	public class B extends A{};

	public void instance(){
		A a = new A();
		B b= new B();
		Foo f= new A();
		System.out.println(a instanceof Foo);
		System.out.println(b instanceof A);
		System.out.println(b instanceof Foo);
		System.out.println(f instanceof A);
		System.out.println(f instanceof B);

	}
	public static void main(String[] args){
		Lesson04_3 lesson = new Lesson04_3();
		lesson.instance();
	}
}

実行結果は次のとおりです.
四、算術演算子Arithmetic Operators
基本演算子:+加算  –減らす  *乗ずる /を除いて
余運演算子を求める:%
増減演算子:++  –  ,接尾辞または接尾辞として使用できます
次に例を示します.
public class Lesson04_4 {
	public static void main(String[] args){
		//    
		int a=10;
		int b=7;
		System.out.println(a%b);

		//    
		double x = 2;
		double y= 1.2;
		double z= x++ + ++y;
		System.out.println(z);
	}
}

実行結果は次のとおりです.
五、条件演算子Conditional Operator
条件演算子は、条件に基づいて値を返します.疑問符の左側の式の値を計算します.値は本当に疑問符の左側を提供する操作数が戻り値で、値が偽の場合は疑問符の右側を提供する操作数が戻り値です.これはJavaで唯一の三元演算子で、あなたの記憶を深くするために、私は図を作りました.
かっこは省略できます.
public class Lesson04_5 {
	public static void main(String[] args){
		int numOfPets =3;
		String status = (numOfPets < 4)?"       ":"       ";
		System.out.println(status);
	}
}

コンパイルと実行の結果は次のとおりです.
六、論理演算子Logical Operator
論理演算子は、ブール型オペランドのみを演算し、ブール型データを返します.全部で6つの論理演算子があります:&&,|,,,|,!と^
短絡論理演算子Short-Circuit Logical Operators:
public class Lesson04_6 {
	public static void main(String[] args) {
		int i = 5;
		//       &&,           true    true,           false ,      false,            ,            。
		boolean flag = (i < 3) && (i < 4);
		System.out.println(flag);

		//       ||,             true    true,           true ,      true,            ,            。
		flag = (i > 4) || (i > 3);
		System.out.println(flag);
	}
}

コンパイルと実行の結果は次のとおりです.
非短絡論理演算子Not Short-Circuit Operators:
public class Lesson04_6 {
	public static void main(String[] args) {
		int i = 5;
		//        &,           true    true,          
		boolean flag = (i < 3) & (i < 4);
		System.out.println(flag);

		//        |,             true    true,          
		flag = (i > 4) | (i > 3);
		System.out.println(flag);
	}
}

コンパイルと実行の結果は次のとおりです.
論理演算子Logical Operators^and!:
^  OR演算子XOR:  ^式を真にするには、オペランドが真である必要があります.
public class Lesson04_6 {
	public static void main(String[] args) {

		System.out.println("xor ((2<3)^(3<4)) :" + ((2<3)^(3<4)));
		System.out.println("xor ((2<3)^(3>4)) :" + ((2<3)^(3>4)));
		System.out.println("xor ((2>3)^(3>4)) :" + ((2>3)^(3>4)));
	}
}

コンパイルと実行の結果は次のとおりです.
七、ビット演算子Bitwise Operators
ビット演算子は、整数オペランドをバイナリの各ビットで操作し、結果を返す整数です.
論理ビット演算子はそれぞれビットごとに逆~を取り、ビットごとに&  、ビット単位または|  ビット別または^
シフト演算子には、左シフト<、右シフト>、
SCJP試験の5.0版以降、この知識点に何の関係もなく、講座ではなく番外編で話すことにした.
八、演算子優先度
優先度
演算子
1
() [] .
2
! +(正)-(負)~+-
3
*/%
4
+(プラス)-(マイナス)
5
<< >>>>>
6
<<= >>= instanceof
7
==   !=
8
&(ビット単位)
9
^
10
|
11
&&
12
||
13
?:
14
= += -= *=/= %= &= |= ^= ~= <<= >>=   >>>=
優先度は上の方が高く下の方が低く、カッコで優先度がはっきりしない部分を解決するのは良いプログラミング習慣です.