Java 运算符
算术运算符
+ - * / % ++ --
关系运算符
> >= < <= == != 结果是boolean;
== 是关系运算符 = 是赋值运算符
逻辑运算符
& 且 | 或者 ! 取反 && 短路与 || 短路或
短路: 只要有一个成功或失败,就跳出
1 public class OperatorTest03{ 2 public static void main(String[] args){ 3 // 对于逻辑与&运算符来说,只要有一边是false,结果就是false。 4 // 只有两边同时为true,结果才是true。 5 System.out.println(true & true); // true 6 System.out.println(true & false); // false 7 System.out.println(false & false); // false 8 9 System.out.println(100 > 90 & 100 > 101); // false 10 System.out.println((100 > 90) & (100 > 101)); // false 11 12 int a = 100; 13 int b = 101; 14 int c = 90; 15 System.out.println(a < b & a > c); // true 16 17 // 对于逻辑或呢? 18 // 只要有一边是true,结果就是true。 19 System.out.println(a < b | c > b); // true 20 System.out.println(true | false); // true 21 22 System.out.println(true | true); // true 23 System.out.println(false | false); // false 24 25 System.out.println(!false); // true 26 System.out.println(!true); // false 27 28 // 注意:这里需要加一个小括号。 29 System.out.println(!(a > b)); // true 30 31 /* 32 关于短路与 &&,短路或 || 33 其中重点学习短路与,短路或照葫芦画瓢。 34 35 短路与&& 和 逻辑与 &有什么区别? 36 首先这两个运算符的运算结果没有任何区别,完全相同。 37 只不过“短路与&&”会发生短路现象。 38 39 什么是短路现象呢? 40 右边表达式不执行,这种现象叫做短路现象。 41 42 什么时候使用&&,什么时候使用& ? 43 从效率方面来说,&&比&的效率高一些。 44 因为逻辑与&不管第一个表达式结果是什么,第二个表达式一定会执行。 45 46 以后的开发中,短路与&&和逻辑与还是需要同时并存的。 47 大部分情况下都建议使用短路与&& 48 只有当既需要左边表达式执行,又需要右边表达式执行的时候,才会 49 选择逻辑与&。 50 */ 51 52 System.out.println(true & true); // true 53 System.out.println(true & false); // false 54 System.out.println(false & false); // false 55 56 System.out.println(true && true); // true 57 System.out.println(true && false); // false 58 System.out.println(false && false); // false 59 60 // 接下来需要理解一下什么是短路现象,什么时候会发生“短路”。 61 int x = 10; 62 int y = 11; 63 // 逻辑与&什么时候结果为true(两边都是true,结果才是true) 64 // 左边的 x>y 表达式结果已经是false了,其实整个表达式的结 65 // 果已经确定是false了,按道理来说右边的表达式不应该执行。 66 System.out.println(x > y & x > y++); 67 68 // 通过这个测试得出:x > y++ 这个表达式执行了。 69 System.out.println(y); // 12 70 71 //测试短路与&& 72 int m = 10; 73 int n = 11; 74 // 使用短路与&&的时候,当左边的表达式为false的时候,右边的表达式不执行 75 // 这种现象被称为短路。 76 System.out.println(m > n && m > n++); 77 System.out.println(n); // 11 78 79 // 问题:什么时候发生短路或现象? 80 // || 短路或 81 // “或”的时候只要有一边是true,结果就是true。 82 // 所以,当左边的表达式结果是true的时候,右边的表达式不需要执行,此时会短路。 83 84 } 85 }
赋值运算符
基本运算符 和 扩展运算符
= += -= *= /= %= 使用扩展赋值运算符的时候,永远都不会改变运算结果类型。
条件运算符
语法格式:布尔表达式 ? 表达式1 : 表达式2
boolean sex = true;
// 前面的变量的c的类型不能随意编写。
// 最终的计算结果是字符型,所以变量也需要使用char类型。
char c = sex ? '男' : '女';
字符串连接符
+
从左到右,除非有小括号
当 + 运算符两边都是数字类型的时候,求和。
当 + 运算符两边的“任意一边”是字符串类型,那么这个+会进行字符串拼接操作。
1 /* 2 + 运算符: 3 1、+ 运算符在java语言中有两个作用。 4 作用1:求和 5 作用2:字符串拼接 6 7 2、什么时候求和?什么时候进行字符串的拼接呢? 8 当 + 运算符两边都是数字类型的时候,求和。 9 当 + 运算符两边的“任意一边”是字符串类型,那么这个+会进行字符串拼接操作。 10 11 3、一定要记住:字符串拼接完之后的结果还是一个字符串。 12 */ 13 public class OperatorTest06{ 14 15 public static void main(String[] args){ 16 17 // 定义一个年龄的变量。 18 int nianLing = 35; 19 20 // + 在这里会进行字符串的拼接操作。 21 System.out.println("年龄=" + nianLing); // "年龄=35" 22 23 int a = 100; 24 int b = 200; 25 // 这里的 + 两边都是数字,所以加法运算 26 int c = a + b; 27 System.out.println(c); // 300 28 29 // 注意:当一个表达式当中有多个加号的时候 30 // 遵循“自左向右”的顺序依次执行。(除非额外添加了小括号,小括号的优先级高) 31 // 第一个+先运算,由于第一个+左右两边都是数字,所以会进行求和。 32 // 求和之后结果是300,代码就变成了:System.out.println(300 + "110"); 33 // 那么这个时候,由于+的右边是字符串"110",所以此时的+会进行字符串拼接。 34 System.out.println(a + b + "110"); // 最后一定是一个字符串:"300110" 35 36 // 先执行小括号当中的程序:b + "110",这里的+会进行字符串的拼接, 37 // 拼接之后的结果是:"200110",这个结果是一个字符串类型。 38 // 代码就变成了:System.out.println(a + "200110"); 39 // 这个时候的+还是进行字符串的拼接。最终结果是:"100200110" 40 System.out.println(a + (b + "110")); 41 42 // 在控制台上输出"100+200=300" 43 System.out.println("100+200=300"); // 不是这个意思。 44 45 // 以下有效的运算符加号一共有4个,这4个加号都是字符串拼接操作。 46 System.out.println(a + "+" + b + "=" + c); 47 48 // 分析这个结果是多少? 49 // 以下表达式中没有小括号,所以遵循自左向右的顺序依次执行。 50 // 第1,2,3,4个加号都是进行字符串拼接,拼接之后的结果是:"100+200=100" 51 // 前4个加号运行之后是一个字符串"100+200=100" 52 // 然后这个字符串再和最后一个b变量进行字符串的拼接:"100+200=100200" 53 System.out.println(a + "+" + b + "=" + a + b); 54 55 // 和上面程序不一样的地方是:最后一个加号先执行,并且会先进行求和运算。 56 System.out.println(a + "+" + b + "=" + (a + b)); 57 58 // 在java语言中怎么定义字符串类型的变量呢? 59 // int是整数型 i 是变量名 10是字面量 60 //int i = 10; 61 // String是字符串类型,并且String类型不属于基本数据类型范畴,属于引用类型。 62 // name是变量名,只要是合法的标识符就行。 63 // "jack" 是一个字符串型字面量。 64 String name = "李四"; // String类型是字符串类型,其中S是大写,不是:string 65 66 // 错误:类型不兼容。 67 //String name = 100; 68 69 // 会进行字符串的拼接 70 //System.out.println("登录成功欢迎" + name + "回来"); 71 72 73 // 口诀:加一个双引号"",然后双引号之间加两个加号:"++",然后两个加号中间加变量名:"+name+" 74 System.out.println("登录成功欢迎"+name+"回来"); 75 76 System.out.println(a + "+" + b + "=" + c); 77 78 } 79 }