3.运算符
1.算术运算符
1.基本运算符:加减乘除模(+ - * / %)
int a = 2; int b = 1; System.out.println(a + b);//3 System.out.println(a - b);//1 System.out.println(a * b);//2 System.out.println(b / a);//0 int/int结果还是int类型,而且会向下取整 System.out.println(a % b);//0 System.out.println(7.5%2.0);//%不仅可以对整型取模,也可以对double类型取模,但是没有意义,一般都是对整型取模 //结果为1.5 System.out.println(6+0.2);//类型不一致时,范围小的会自动提升为大的,再运算 //结果为6.2
2.增量运算符(+= -= *= %= /=)
该种类型运算符操作完成后,会将操纵的结果赋值给左边的数。int a = 1; a += 1;//即a = a + 1; System.out.println(a);//输出2 a -= 1;//a = a - 1; System.out.println(a);//输出1 a *= 3;//a = a * 3; System.out.println(a);//输出3 a /= 3;//a = a / 3; System.out.println(a);//输出1 a %= 3;//a = a % 3; System.out.println(a);//输出1
3.自增/自减运算符(++ --)
++ 是给变量的值 +1 , -- 是给变量的值 -1 。int a = 1; a++;//后置++,表示给a的值加1,此时a的值为2 System.out.println(a++);//后置++是先使用变量原来值,表达式结束时再对变量+1,因此输出2 System.out.println(a);//输出3 ++a;//前置++表示给a的值加1 System.out.println(++a);//前置++是先给变量+1,然后使用变量中的值,因此输出5 System.out.println(--a);//输出4
注意:
1.如果单独使用,前置++和后置++没有任何区别
2.如果混合使用,前置++先+1,然后使用变量+1之后的值,后置++则是先使用变量原来的值,运算结束再对结果+1
3.关系运算符
关系运算符主要有六个: < <= == != > >= ,其计算结果为true或者false
int a = 1; int b = 2; System.out.println(a == b);//false System.out.println(a != b);//true System.out.println(a < b);//true System.out.println(a > b);//false System.out.println(a <= b);//true System.out.println(a >= b);//false
注意:当需要多次判断时,不能连着写,比如:3<a<5,定义a = 4,那么3<a的结果为true,ture为布尔类型不能与整型比较。
4.逻辑运算符
逻辑运算符主要有三个 : && || ! ,运算结果都是 boolean 类型。1.逻辑与&&
语法规则:表达式 1 && 表达式 2 ,左右表达式必须是 boolean 类型的结果。 相当于现实生活中的且,比如:如果是学生,并且 带有学生证 才可以享受半票。 两个表达式都为真,结果才是真,只要有一个是假,结果就是假。int a = 1; int b = 2; System.out.println(a == 1 && b == 2);//左为真且右为真则结果为真 System.out.println(a == 1 && b < a);//左为真但右为假则结果为假 System.out.println(a > b && b == 2);//左为假但右为真则结果为假 System.out.println(a > b && b < a);//左为假且右为假则结果为假
2.逻辑或 ||
表达式1 | 表达式2 | 结果 |
真 | 真 | 真 |
真 | 假 | 真 |
假 | 真 | 真 |
假 | 假 | 假 |
int a = 1; int b = 2; System.out.println(a == 1 || b == 2);//左为真且右为真则结果为真 System.out.println(a == 1 || b < a);//左为真但右为假则结果为真 System.out.println(a > b || b == 2);//左为假但右为真则结果为真 System.out.println(a > b || b < a);//左为假且右为假则结果为假
3.逻辑非 !
语法规则: ! 表达式 真变假,假变真。int a = 1; System.out.println(!(a == 1));//a == 1为true,取个非就是false System.out.println(!(a != 1));//a != 1为false,取个非就是true
4.短路求值
&&和|| 遵守短路求值的规则.
System.out.println(10 > 20 && 10 / 0 == 0);//打印false System.out.println(10 < 20 || 10 / 0 == 0);//打印true
我们都知道,计算10/0,程序会报错,但是上面的代码却能正常运行,说明10/0并没有真正被求值.
注意:
1.对于&&,如果左侧表达式值为false,则表达式结果一定是false,无需计算右侧表达式.
2.对于||,如果左侧表达式值为true,则表达式结果一定为true,无需计算右侧表达式.
3.&和| 如果表达式结果为boolean时,也表示逻辑运算,但与&& || 相比,它们不支持短路求值.
5.位运算符
Java 中数据存储的最小单位是字节,而数据操作的最小单位是比特位 . 字节是最小的存储单位,每个字节是由 8 个二 进制比特位组成的,多个字节组合在一起可以表示各种不同的数据。 位运算符主要有四个 : & | ~ ^ ,除 ~ 是一元运算符外,其余都是二元运算符。 位操作表示 按二进制位运算 . 计算机中都是使用二进制来表示数据的 (01 构成的序列 ), 按位运算就是在按照二进制位的每一位依次进行计算.1. 按位与 &
如果两个二进制位都是 1, 则结果为 1, 否则结果为 0.int a = 10; int b = 20; System.out.println(a & b);//输出0进行按位运算 , 需要先把 10 和 20 转成二进制 , 分别为 1010 和 10100
2.按位或 |
如果两个二进制位都是0,则结果为0,否则结果为1.
int a = 10; int b = 20; System.out.println(a | b);//输出30(0 0 0 1 1 1 1 0)
3.按位取反 ~
如果该位为 0 则转为 1, 如果该位为 1 则转为 0int a = 0xf; System.out.printf("%x\n", ~a);注意 : 1.0x 前缀的数字为 十六进制 数字 . 十六进制可以看成是二进制的简化表示方式 . 一个十六进制数字对应 4 个二进制位. 2.0xf 表示 10 进制的 15, 也就是二进制的 1111 3. printf 能够格式化输出内容 , %x 表示按照十六进制输出 . 4.\n 表示换行符
4.按位异或^
如果两个数字的二进制位相同 , 则结果为 0, 相异则结果为 1.int a = 0x1; int b = 0x2; System.out.printf("%x\n", a^b);//输出3注意: 1.两个相同的数异或结果为0 2.n^0 = n
6.条件运算符
条件运算符只有一个 : 表达式 1 ? 表达式 2 : 表达式 3 当 表达式 1 的值为 true 时 , 整个表达式的值为 表达式 2 的值 ; 当 表达式 1 的值为 false 时 , 整个表达式的值为 表达式 3 的值 . 也是 Java 中唯一的一个 三目运算符 , 是条件判断语句的简化写法 .int a = 10; int b = 20; int max = a > b ? a : b; System.out.println(max);注意: 1.表达式2和表达式3的结果要同类型,除非能发生类型隐式类型转换
int a = 10; int b = 20; double max = a < b ? 1 : 2.0; System.out.println(max);2.表达式不能单独存在,其产生的结果必须要被使用。 标签:int,System,运算符,println,Javase,表达式,out From: https://blog.csdn.net/2302_81886858/article/details/140290467