一、赋值运算符
/*
赋值运算符:
= += -= *= /= %=
*/
public class FuZhiDemo1 {
public static void main(String[] args) {
int a = 3;
// a += 4;
// System.out.println(a);
a-=5;
System.out.println(a);
}
}
/*
short s=1, s = s+1;
short s=1, s+=1;
*/
public class FuZhiDemo2 {
public static void main(String[] args) {
// short s = 1;
// s = (short) (s + 1);
// System.out.println(s);
short s = 1;
s += 1; // s = (short) (s + 1);
System.out.println(s);
}
}
二、关系运算符
/*
关系运算符:
> < >= <= != ==
关系表达式的结果一定是boolean类型的
*/
public class GuanXiDemo1 {
public static void main(String[] args) {
int a = 3;
int b = 4;
System.out.println(a==b); // false
// System.out.println(a=b); // 4
System.out.println(a>b);
System.out.println(a<b);
System.out.println(a<=b);
System.out.println(a>=b);
System.out.println(a!=b);
}
}
三、逻辑运算符
/*
逻辑运算符:
& | ^ ! && ||
逻辑运算符,参与运算的参数类型是boolean,结果也是一个boolean类型的
*/
public class LuoJiDemo1 {
public static void main(String[] args) {
int a = 3;
int b = 4;
// & 有false则false
// System.out.println((a++>3)&(b++>4)); // false & false = false
// System.out.println("a: " + a + ", b: " + b);
// System.out.println((a++>3)&(b++==4)); // false & true = false
// System.out.println((a++==3)&(b++>4)); // true & false = false
// System.out.println((a++==3)&(b++==4));// true & true = true
// && 短路与 当左边为false的时候,右边表达式不会执行,结果为false
// System.out.println((a++ > 3) && (b++ > 4)); // false && false = false
// System.out.println("a: " + a + ", b: " + b);
// System.out.println((a++ > 3) && (b++ == 4)); // false && true = false
// System.out.println((a++ == 3) && (b++ > 4)); // true && false = false
// System.out.println((a++ == 3) && (b++ == 4));// true && true = true
// | 有true则true
// System.out.println((a++ > 3) | (b++ > 4)); // false | false = false
// System.out.println((a++ > 3) | (b++ == 4)); // false | true = true
// System.out.println((a++ == 3) | (b++ > 4)); // true | false = true
// System.out.println((a++ == 3) | (b++ == 4));// true | true = true
// System.out.println("a: " + a + ", b: " + b);
// || 短路或 当左边为true的时候,右边表达式不会执行,结果为true
// System.out.println((a++ > 3) || (b++ > 4)); // false || false = false
// System.out.println((a++ > 3) || (b++ == 4)); // false || true = true
// System.out.println((a++ == 3) || (b++ > 4)); // true || false = true
// System.out.println((a++ == 3) || (b++ == 4));// true || true = true
// System.out.println("a: " + a + ", b: " + b);
// System.out.println(100>a>10) // java中不允许出现连续比较
System.out.println(a>10 && a<100);
// ^ 异或 相同则false,不同则true
// System.out.println((a++ > 3) ^ (b++ > 4)); // false ^ false = false
// System.out.println((a++ > 3) ^ (b++ == 4)); // false ^ true = true
// System.out.println((a++ == 3) ^ (b++ > 4)); // true ^ false = true
// System.out.println((a++ == 3) ^ (b++ == 4));// true ^ true = false
//! 将true变成false, false变成true
// System.out.println(!(a++ > 3));
}
}
四、三目运算符
/*
三目运算符【三元运算符】:
语句定义格式:
(关系表达式)?表达式1:表达式2;
这里的表达式1和表达式2必须是要有一个结果值的。
*/
public class SanMuDemo1 {
public static void main(String[] args) {
int a = 3;
int b = 8;
//需求:求两个数中的最大值
// int x = (a > b) ? a : b;
// System.out.println(x);
// (a > b) ? System.out.println(a) : System.out.println(b);
}
}
五、算术运算符
/*
算数运算符:
+ - * / % ++ --
java中,一个算数表达式最终的结果数据类型,是由参与运算最大的那个参数类型决定的。
*/
public class SuanShuDemo1 {
public static void main(String[] args) {
int a = 3;
int b = 4;
// System.out.println(a+b);
// System.out.println(a-b);
// System.out.println(a*b);
// System.out.println(a/b); // 整除,保留整数部分
// System.out.println(a%b);
System.out.println(a*1.0/b);
}
}
/*
++: 自加1
++在后,先赋值再进行自加1;++在前,先自加1,再赋值参与运算
--: 自减1
--在后,先赋值再进行自减1;--在前,先自减1,再赋值参与运算
*/
public class SuanShuDemo2 {
public static void main(String[] args) {
/**
* 单独使用
*/
int a = 3;
int b = 4;
System.out.println("a: " + a);
System.out.println("b: " + b);
System.out.println("-----------------------------");
// a++;
// b++;
// ++a;
// ++b;
// System.out.println("a: " + a);
// System.out.println("b: " + b);
/**
* 混合使用
*/
// int x = a++;
// System.out.println(x); // 3
int x2 = ++a;
System.out.println(x2);
}
}
1.练习1
public class SuanShuTest1 {
public static void main(String[] args) {
//请分别计算出a,b,c的值
int a = 10;
int b = 10;
int c = 10;
a = b++;// a:10 9 10 9
c = --a;// b:11 11 10 10
b = ++a;// c:10 9 9 8
a = c--;
System.out.println("a: " + a);//9
System.out.println("b: " + b);//10
System.out.println("c: " + c);//8
}
}
2.练习2
public class SuanShuTest2 {
public static void main(String[] args) {
int a = 4;
int b = (a++)+(++a)+(a*10);
// 4 6 60
//
System.out.println("a: "+a); // 6
System.out.println("b: "+b); // 70
}
}
六、位运算
/*
位运算符:针对数值2进制形式的计算
& | ^ ~ >> << >>>
位运算符,参与运算的是数值,结果也是一个数值
*/
public class WeiDemo1 {
public static void main(String[] args) {
int a = 3;
int b = 4;
// System.out.println(a&b);
// System.out.println(a|b);
// System.out.println(a^b);
System.out.println(~a);
}
}
/*
计算机中所有的运算都是采用补码进行的
3的补码:00000000 00000000 00000000 00000011
4的补码:00000000 00000000 00000000 00000100
&:有0则0
00000000 00000000 00000000 00000011
&
00000000 00000000 00000000 00000100
-------------------------------------
00000000 00000000 00000000 00000000
|:有1则1
00000000 00000000 00000000 00000011
|
00000000 00000000 00000000 00000100
-------------------------------------
00000000 00000000 00000000 00000111
^:相同则0,不同则1
00000000 00000000 00000000 00000011
^
00000000 00000000 00000000 00000100
-------------------------------------
00000000 00000000 00000000 00000111
~: 0变成1,1变成0
00000000 00000000 00000000 00000011
~
-------------------------------------
补码 11111111 11111111 11111111 11111100
反码 11111111 11111111 11111111 11111011
原码 10000000 00000000 00000000 00000100
-----------------------------------------
-4
*/
/*
>>:右移,整体补码向右移动若干位,右边多出的部分丢弃,若最高位是1,左边就用1补齐;反之用0补齐
<<:左移,整体补码向左移动若干位,左边多出的部分丢弃,右边用0补齐
>>>:无符号右移,整体补码向右移动若干位,右边多出的部分丢弃,左边无论最高位是0还是1,都用0补齐
*/
public class WeiDemo2 {
public static void main(String[] args) {
System.out.println(24>>2); // 24/2^2 = 6
System.out.println(2<<4); // 2*2^4 = 32
System.out.println(-24>>>2); // 1073741818
}
}
/*
24的补码:00000000 00000000 00000000 00011000
00000000 00000000 00000000 00011000
>>2: 00000000 00000000 00000000 00000110(00)
------------------------------------------------
2的补码:00000000 00000000 00000000 00000010
00000000 00000000 00000000 00000010
<<4: (0000)00000000 00000000 00000000 00100000
-24
原码:10000000 00000000 00000000 00011000
反码:11111111 11111111 11111111 11100111
补码:11111111 11111111 11111111 11101000
------------------------------------------
11111111 11111111 11111111 11101000
>>>2: 0011111111 11111111 11111111 111010(00)
*/
标签:00000000,System,运算符,++,println,true,out
From: https://www.cnblogs.com/ndmtzwdx/p/18475538