目录
Java运算符
运算符:对常量或者变量进行操作的符号
表达式:用运算符把常量或者变量连接起来符合java语法的式子就可以称为表达式。不同运算符连接的表达式体现的是不同类型的表达式。
1. ASCII码表、字符的+操作、字符串的+操作
ASCII码表:美国信息交换标准代码,是计算机中,字节到字符的一套对应关系。
'a' -- 97 a-z是连续的,所以'b'对应的数值是98,'c'是99,依次递加
'A' -- 65 A-Z是连续的,所以'B'对应的数值是66,'C'是67,依次递加
'0' -- 48 0-9是连续的,所以'1'对应的数值是49,'2'是50,依次递加
计算机底层所有的数据都是二进制数字,字符也不例外。我们使用电脑能看到的文字都是一个个的字符组成的。那这些字符应该用哪些二进制数字表示呢?如果每个国家都不一样,数据在互联网上就很难在国际上流通了。所以就有了这么一个标准,大家都共同遵守。
char类型在参与数学运算的时候,先查找ASCII码表中对应的数字,再参与运算。
char c='a';
System.out.println(c+1); //结果:98
字符串的“+”操作不是算数运算,而是字符串拼接运算。从左往右逐个进行。
2. 自增自减运算符
单独使用的时候, ++和-- 无论是放在变量的前边还是后边,结果是一样的。
参与操作的时候,如果放在变量的后边,先拿变量参与操作,后拿变量做++或者--。
参与操作的时候,如果放在变量的前边,先拿变量做++或者--,后拿变量参与操作。
int x = 10;
int y = x++ + x++ + x++;
System.out.println(y);
System.out.println(x);
/*
解析,三个表达式都是++在后,所以每次使用的都是自增前的值,但程序自左至右执行,所以第一次自增时,使用的是10进行计算,但第二次自增时,x的值已经自增到11了,所以第二次使用的是11,然后再次自增。。。
所以整个式子应该是:int y = 10 + 11 + 12; x = 13;
*/
3. 赋值运算符
赋值运算符的作用是将一个表达式的值赋给左边,左边必须是可修改的,不能是常量。
扩展的赋值运算符隐含了强制类型转换。
short s = 10;
s = s + 10; // 此行代码报出,因为运算中s提升为int类型,运算结果int赋值给short可能损失精度
s += 10; // 此行代码没有问题,隐含了强制类型转换,相当于 s = (short) (s + 10);
4. 逻辑运算符
符号 | 作用 | 说明 |
---|---|---|
& | 逻辑与 | a&b,a和b都是true,结果为true,否则为false |
| | 逻辑或 | a|b,a和b都是false,结果为false,否则为true |
^ | 逻辑异或 | a^b,a和b结果不同为true,相同为false |
! | 逻辑非 | !a,结果和a的结果正好相反 |
短路逻辑运算:
-
逻辑与&,无论左边真假,右边都要执行。
-
短路与&&,如果左边为真,右边执行;如果左边为假,右边不执行。
-
逻辑或|,无论左边真假,右边都要执行。
-
短路或||,如果左边为假,右边执行;如果左边为真,右边不执行。
5. 三元运算符
三元运算符语法格式: 关系表达式 ? 表达式1 : 表达式2;
解释:问号前面的位置是判断的条件,判断结果为boolean型,为true时调用表达式1,为false时调用表达式2。其逻辑为:如果条件表达式成立或者满足则执行表达式1,否则执行第二个。
int a = 10;
int b = 20;
int c = a > b ? a : b; // 判断 a>b 是否为真,如果为真取a的值,如果为假,取b的值
如有错误欢迎留言评论,及时更正。 羽露风 5月9日