Java一般演算子の整理
本文は学習中の総括で、転載を歓迎しますが、出典を明記してください.http://blog.csdn.net/pistolove/article/details/44724267
本文は主にJavaでよく見られる演算子を紹介し,論理演算子とビット演算子に重点を置いた.あなたに役に立つことを願っています.
算術演算子
(1)一元演算子: プラス(+)、マイナス(-)、プラス1(++)、マイナス1(-)の4個. プラス1、マイナス1演算子では、数値タイプの変数のみが許可され、式では使用できません.プラス1、マイナス1演算子は、変数の前(例えば++i)に置くこともできるし、変数の後(例えばi++)に置くこともできる.両者の違いは、変数の前(例えば++i)に置くと、変数値はまず1またはマイナス1を加え、その後、他の対応する操作(主に付与操作)を行うことである.変数の後(i++など)に置くと、他の対応する操作を先に行い、変数値に1を加算または減算します. 例: int i=6,j,k,m,n; j = +i; //元の値、すなわちj=6をとる k = -i; //負の値、すなわちk=-6をとる m = i++; //まずm=i,さらにi=i+1,すなわちm=6,i=7 m =++i; //まずi=i+1,さらにm=i,すなわちi=7,m=7 n = j--; //まずn=j,さらにj=j-1,すなわちn=6,j=5 n = --j; //まずj=j-1,さらにn=j,すなわちj=5,n=5 一元演算子とその前後のオペランドの間にスペースは許されません.そうしないと、コンパイル中にエラーが発生します.二元演算子の使用は少なく、しばらく議論しない.
関係演算子
リレーショナル演算子は、2つの数値間のサイズを比較するために使用され、その演算結果は論理タイプの数値です.関係演算子は、等しい(==)、等しくない(!=)、より大きい(>)、より大きい(>=)、より小さい(<)、より小さい(<=).簡単なので、ここでも議論しません.
論理演算子
論理演算子は、オペランドのデータ型が論理型であることを要求し、その演算結果も論理型値である.論理演算子には、論理と(&&)、論理または(|)、論理非(!)、論理異または(^)、論理と(&)、論理または(|)があります.
ビット演算子
ビット演算はバイナリビット単位で行われ、その操作数も演算結果も整数値である. ビット演算子は、ビットと(&)、ビットまたは(|)、ビット非(~)、ビット異または(^)、右シフト(>)、左シフト(<)、0充填の右シフト(>>>>>>)の7つです.
本文は主にJavaでよく見られる演算子を紹介し,論理演算子とビット演算子に重点を置いた.あなたに役に立つことを願っています.
算術演算子
(1)一元演算子: プラス(+)、マイナス(-)、プラス1(++)、マイナス1(-)の4個. プラス1、マイナス1演算子では、数値タイプの変数のみが許可され、式では使用できません.プラス1、マイナス1演算子は、変数の前(例えば++i)に置くこともできるし、変数の後(例えばi++)に置くこともできる.両者の違いは、変数の前(例えば++i)に置くと、変数値はまず1またはマイナス1を加え、その後、他の対応する操作(主に付与操作)を行うことである.変数の後(i++など)に置くと、他の対応する操作を先に行い、変数値に1を加算または減算します. 例: int i=6,j,k,m,n; j = +i; //元の値、すなわちj=6をとる k = -i; //負の値、すなわちk=-6をとる m = i++; //まずm=i,さらにi=i+1,すなわちm=6,i=7 m =++i; //まずi=i+1,さらにm=i,すなわちi=7,m=7 n = j--; //まずn=j,さらにj=j-1,すなわちn=6,j=5 n = --j; //まずj=j-1,さらにn=j,すなわちj=5,n=5 一元演算子とその前後のオペランドの間にスペースは許されません.そうしないと、コンパイル中にエラーが発生します.二元演算子の使用は少なく、しばらく議論しない.
関係演算子
リレーショナル演算子は、2つの数値間のサイズを比較するために使用され、その演算結果は論理タイプの数値です.関係演算子は、等しい(==)、等しくない(!=)、より大きい(>)、より大きい(>=)、より小さい(<)、より小さい(<=).簡単なので、ここでも議論しません.
論理演算子
論理演算子は、オペランドのデータ型が論理型であることを要求し、その演算結果も論理型値である.論理演算子には、論理と(&&)、論理または(|)、論理非(!)、論理異または(^)、論理と(&)、論理または(|)があります.
/**
*
* @author liqq
*/
@Test
public void testLogic() {
// && ( ) a&&b a false , b false
System.err.println(false && true); // false
System.err.println(false && false); // false
System.err.println(true && true); // true
System.err.println();
// || ( ) a||b b true , b true
System.err.println(false || true); // true
System.err.println(true || true); // true
System.err.println(false || false); // false
System.err.println();
// !
System.err.println(!true); // false
System.err.println(!false); // true
System.err.println();
// ^ ( false, true)
System.err.println(false ^ true); // true
System.err.println(true ^ true); // false
System.err.println(false ^ false); // false
System.err.println();
// & ( ) a&b a false , b false
System.err.println(false & true); // false
System.err.println(true & true); // true
System.err.println(false & false); // false
System.err.println();
// | ( ) a|b a true , b true
System.err.println(false | true); // true
System.err.println(true & true); // true
System.err.println(false & false); // false
System.err.println();
}
ビット演算子
ビット演算はバイナリビット単位で行われ、その操作数も演算結果も整数値である. ビット演算子は、ビットと(&)、ビットまたは(|)、ビット非(~)、ビット異または(^)、右シフト(>)、左シフト(<)、0充填の右シフト(>>>>>>)の7つです.
/**
* @author liqq
*/
@Test
public void testBit() {
// (&)
System.err.println(1 & 0); // 0
System.err.println(1 & 1);// 1
System.err.println(0 & 0);// 0
System.err.println();
// (|)
System.err.println(1 | 0);// 1
System.err.println(1 | 1);// 1
System.err.println(0 | 0);// 0
System.err.println();
// (~)
System.err.println(~0); // -1
System.err.println(~1);// -2
System.err.println();
// (^) 0, 1
System.err.println(1 ^ 0);// 1
System.err.println(1 ^ 1);// 0
System.err.println(0 ^ 1);// 1
System.err.println();
// (>>) ,
System.err.println(2 >> 1);// 1
System.err.println(2 >> 2);// 0
System.err.println(8 >> 1);// 4
System.err.println(8 >> 2);// 2
System.err.println();
// (<<) ,
System.err.println(2 << 1);// 4
System.err.println(2 << 2);// 8
System.err.println(8 << 1);// 16
System.err.println(8 << 2);// 32
System.err.println();
// 0 (>>>) , 0
System.err.println(8>>>2);//2
System.err.println(-14 >>> 2); //1073741820
/*( 11111111 11111111 11111111 11110010),
1073741820 ( 00111111 11111111 11111111 11111100)*/
System.err.println();
}