JAVA--运算问题

自增

  • i++
int a = 10;
int b = 20;
int c = a++ + b;
System.out.println(a);
//输出结果:11 --> 输出a最后自增的结果;
System.out.println(c);
//输出结果:30 --> a:10 先应用后自增;
  • ++i
int a = 10;
int b = 20;
int c = ++a + b;
System.out.println(a);
//输出结果:11;
System.out.println(c);
//输出结果:30 --> a:10 先自增后应用;

除法处理

  • 保证除法精度 --> double类型
int a = 9;
int b = 5;
System.out.println("(int类型)除法运算a/b:" + a/b);
//(int类型)除法运算a/b:1 --> int类型;
System.out.println("(double类型)除法运算a/b:" + (double)(a/b));
//(double类型)除法运算a/b:1.0 --> double类型;
System.out.println("(double类型)除法运算a/b:" + (double)a/b);
//(double类型)除法运算a/b:1.8 --> 解决除法计算精度问题:(double)a/b -->double类型

求模问题

  • 求模(a%b:就是a/b后所得的余数) --> 判断奇偶数
if (a % 2 == 0) {
    System.out.println("Even Num");
    // a%2==0 --> 2的倍数
} else {
    System.out.println("Odd Num");
}

三目运算

  • int max = a > b? a : b;
  • 判断数值大小
int a = 1;
int b = 2;
int max = a > b? a : b;
//输出最大值;

逻辑运算

与操作

  • ‘&’,’&&’<与运算> “一假则假”
  1. ‘&’<普通与> --> 条件全部判定
if(1 == 2 & 10 % 0 == 0) {
    System.out.println("yes");
}
//Exception in thread "main" java.lang.ArithmeticException: / by zero
	at practice.three.string_1.andOperation.main(andOperation.java:5)
//抛出异常(10 % 0 == 0) --> 无法通过编译;
  1. ‘&&’<短路与> --> 由左往右一旦符合条件,输出结果
if(1 == 2 && 10 % 0 == 0) {
    System.out.println("yes");
}
//输出结果yes;

或操作

  • ‘|’,’||’<或运算> “一真则真”
  1. ‘|’<普通或> --> 条件全部判定
if(1 == 1 & 10 | 0 == 0) {
    System.out.println("yes");
}
//抛出异常
  1. ‘||’<普通或> --> 由左往右一旦符合条件,输出结果
if(1 == 1 & 10 | 0 == 0) {
    System.out.println("yes");
}
//输出结果yes
if (p.hash == hash && ((k = p.key) == key || (key != null && key.equals(k))))
e = p;
  • if()解读 --> 由左向右 () && () || () && --> 由左往右两个逐个比对能得出结果便结束;

位运算

  • 位与操作 (&) --> 一假则假

  • 位或操作 (|) --> 一真则真

  • 异或操作 (^) --> 同假异真

  • 位移操作 (有符号位移:<<,>>;无符号位移:<<<,>>>)

  • ‘&’,’|’,’^'操作

二进制数A 二进制数B 与操作 或操作 异或操作
0 0 0 0 0
0 1 0 1 1
1 0 0 1 1
1 1 1 1 0
  • 位移操作
int a = 2;
System.out.println(a << 2);
//输出结果: 8
//2(0010)  << 8(1000)

猜你喜欢

转载自blog.csdn.net/weixin_40107544/article/details/88615731
今日推荐