目录
加减乘除模(+ - * / %)
- public static void main(String[] args) {
- System.out.println(6/4);
- System.out.println(6.0/4);
- System.out.println(6/4.0);
- System.out.println((float)6/4);
- System.out.println(6/(float)4);
- System.out.println((float)(5/2));
- }
代码结果:

只要有一个操作数是小数,计算的结果就是小数。
- public static void main(String[] args) {
- System.out.println(5%2);
- System.out.println(-5%2);
- System.out.println(5%-2);
- System.out.println(-5%-2);
- }
代码结果:

- public static void main(String[] args) {
- System.out.println(12.5 % 12.5);
- System.out.println(12.2 % 10.5);
- }
代码结果:

注意:在 Java 中%两端的操作数可以是小数。
因为加减和乘比较简单,就不一一举例子了。
+= -= *= %=
- public static void main(String[] args) {
- int a = 100;
- //a = a + 100;
- a += 100;
- System.out.println(a);
- }
表达式a = a + 100;和表达式a += 100含义相同。
代码结果:


double比int大,这里放不下,要强制类型转换
- public static void main(String[] args) {
- double a = 12.5;
- int b = 1;
- b = (int)(b + a);
- System.out.println(b);
- }
如果这里使用 += 就可以自动强制类型转换
- public static void main(String[] args) {
- double a = 12.5;
- int b = 1;
- b += a;
- System.out.println(b);
- }
代码结果:

其他的增量运算符和 += 一样,就不做介绍了,可以对比+=。
++ --
- public static void main(String[] args) {
- int k = 100;
- int n = 100;
- System.out.println(k--);
- System.out.println(--n);
- }
代码结果:

++ 于-- 一样。只是做了加法运算。
注意:
关系运算符主要有六个: == != < > <= >= ,其计算结果是 true 或者 false。
- public static void main(String[] args) {
- int n = 10;
- int k = 11;
- System.out.println(n == k);
- System.out.println(n != k);
- System.out.println(n > k);
- System.out.println(n < k);
- System.out.println(n >= k);
- System.out.println(n <= k);
- }
代码结果:


可以看到代码有错误。
注意:当需要多次判断时,不能连着写,比如:3 < a < 5,Java程序与数学中是有区别的。
逻辑运算符主要有三个: && || ! ,运算结果都是 boolean类型。
语法规则:表达式1 && 表达式2,左右表达式必须是boolean类型的结果。
相当于现实生活中的且,比如:如果是学生,并且 带有学生证 才可以享受半票。
两个表达式都为真,结果才是真,只要有一个是假,结果就是假。

- public static void main(String[] args) {
- int a = 10;
- int b = 100;
- System.out.println(a < 100 && b > 100);
- System.out.println(a < 100 && b == 100);
- System.out.println(a < 10 && b >= 10);
- System.out.println(a == 10 && b > 10);
- }
代码结果:

语法规则:表达式1 || 表达式2,左右表达式必须是boolean类型的结果。
相当于现实生活中的或,比如:买房子交钱时,全款 或者 按揭都可以,如果全款或者按揭,房子都是你的,否则站一边去。

- public static void main(String[] args) {
- int n = 1;
- int k = 2;
- System.out.println(n > 10 || k > 10);
- System.out.println(n < 10 || k < 10);
- System.out.println(n > 10 || k < 10);
- System.out.println(n == 10 || k > 10);
- }
代码结果:

注意:左右表达式至少有一个位真,则结果为真。
语法规则:! 表达式
真变假,假变真。

- public static void main(String[] args) {
- int n = 10;
- System.out.println(!(n > 1));
- System.out.println(!(n == 1));
- }
代码结果:

&& 和 || 遵守短路求值的规则
- public static void main(String[] args) {
- int n = 100;
- int k = 10;
- //&&左边值为false,不用计算右边,表达式的结果为false
- System.out.println(n < k && k / 0 == 0);
- //&&左边值为true,不用计算右边,表达式的结果为true
- System.out.println(n > k || k / 0 == 0);
- }
代码结果:

我们都知道, 计算 10 / 0 会导致程序抛出异常. 但是上面的代码却能正常运行, 说明 10 / 0 并没有真正被求值。
注意:
位运算符的使用和C语言是一样的,C是如何使用的,Java 就如何使用。
按位与(&)
按位或(|)
按位异或(^)
注:操作数必须是整数
比较的是操作数的二进制序列


- public static void main(String[] args) {
- int a = 3;
- int b = 5;
- System.out.println(a & b);
- }
代码结果:


- public static void main(String[] args) {
- int a = 3;
- int b = 5;
- System.out.println(a | b);
- }
代码结果:


- public static void main(String[] args) {
- int a = 3;
- int b = 5;
- System.out.println(a ^ b);
- }
代码结果:

移位运算符有三个: << >> >>> ,都是二元运算符,且都是按照二进制比特位来运算的。
移位规则:
左边舍弃,右边补0.

右边舍弃,如果是正数,左边补0;如果是负数,左边补1.

最右侧位不要了, 最左侧补 0
注意:
条件运算符只有一个:
表达式1 ? 表达式2 : 表达式3
当 表达式1 的值为 true 时, 整个表达式的值为 表达式2 的值;
当 表达式1 的值为 false 时, 整个表达式的值为 表达式3 的值.
- public static void main(String[] args) {
- int a = 10;
- int b = 20;
- int max = a > b ? a : b;
- System.out.println(max);
- }
代码结果:

注意:
1. 表达式2和表达式3的结果要是同类型的,除非能发生类型隐式类型转换

代码报错
2. 表达式不能单独存在,其产生的结果必须要被使用。

代码报错