Java基础知识:浅谈运算符
已经学习到了JavaWeb的内容,回顾一下之前基础语法的知识,加深记忆,巩固一下基础。
基础语法中比较重要的知识点中应该有运算符的位置。
1. 算术运算符:+ - * / % ++ –
算术运算符中值得值得注意的内容是自增(++)与自减(–)两个符号,
在某些时候的使用上自增与自减符号等同于加等于和减等于,
自增与自减用法相同,且以自增举例说明:
int i = 10;
// 自增符号在变量后边,先对变量所在的运算式进行运算,再将其自增1
System.out.println(i++); // 输出结果为10
// 自增符号在变量前边,先将变量自增1,在对其所在的运算式进行运算
System.out.println(++i); // 输出结果为12
// 自增符号除了对整数类型可以产生作用,对所有的数值型基本数据类型与字符型同样有效
· char c = 'a';
// 将字符转换为ASCⅡ码,将其自增1,再转换为字符输出
System.out.println(++c); // 输出结果为'b'
double d = 1.1;
System.out.println(++d); // 输出结果为2.1
2. 赋值运算符:+= -= = /= %= &= |= ^= >>= <<= >>>=
对于赋值运算符值得注意的一点是,在使用赋值运算符进行计算时,会先将运算符后面的数值转换为与运算符前边的变量相同的类型
+=、-=、=、/=,四种运算赋值运算符,相对简单,均适用于各种数值类型
字符型变量只能只用+=与-=两种赋值运算符,或者*=1,/=1,&=‘字符本身’
byte b = 100;
System.out.println(b+=1); // 输出结果为101
char c = 'a';
// 字符型变量只能使用+=与-=两种赋值运算符
System.out.println(c+=1); // 输出结果为'b'
double d = 1.1;
System.out.println(d+=1); // 输出结果为2.1
之后是几种相对于位运算符的赋值运算符,&=(位于等于)、|=(位或等于)、^=(位异或等于)
// 位运算是基于二进制的运算
// 先将运算符两边的运算式计算完成之后,再将其转换为二进制
// 之后对其进行位运算
// 1.位与等于&=
int i = 10;
System.out.println(i &= 5); // 结果为0
// 10 --二进制--> 1010
// 5 --二进制--> 0101
// 每一位上,同为1,则为1,有0则为0
// 2.位或等于|=
int j = 10;
System.out.println(j |= 5); // 结果为15
// 10 --二进制--> 1010
// 5 --二进制--> 0101
// 每一位上,同为0,则为0,有1则1
// 3.位异或等于
int k = 16;
System.out.println(k ^= 5); // 结果为10
// 15 --二进制--> 1111
// 5 --二进制--> 0101
// 每一位上,相同,则结果为0,不同,则结果为1
最后是<<=(左移等于)与>>=(右移等于),还有>>>=(无符号右移等于)
// 左移与右移操作同样是位运算的一种
// 不同的是,它们不进行逻辑运算。而仅仅是对数值本身进行操作
// 首先将运算符左边转换为二进制,运算符右边的数值则表示需要左移或者右移的位数
int i = 4;
System.out.println(i<<1); // 结果为8
// 4 --二进制--> 100
// 100向左移一位,变为1000,结果为8
// 因此左移可以理解为乘以2的n次幂
int j = 8;
System.out.println(j>>1); // 结果为4
// 8 --二进制--> 1000
// 1000,向右移一位,变为100,结果为4
// 偶数右移可以理解为除以2的n次幂
// 奇数右移则需要舍弃末尾上的1,再右移,即先减一再右移
int k = -9;
System.out.println(Integer.MAX_VALUE);
// 负数进行无符号右移时,先将其变为正数,将int最大值减去该数值/2,再右移剩余的位数
System.out.println(k>>>1); // 结果为int的最大值-((9-1)/2),为2147483643
System.out.println(k>>>2); // 结果为上边的结果在右移1位
3. 关系运算符:> < >= <= == !=
关系运算符即是对运算符两边的运算式的运算结果进行判断,得出布尔结果
4. 逻辑运算符:& | ^ ! || &&
逻辑运算符包括位运算符:位与(&)、位或(|)、位异或(^)
位运算符的运算方式与位赋值运算符的运算方式大体相同
还有普通的逻辑运算符: 非(!)、||(或)、与(&&)
对运算符两边的运算式的运算结果进行判断,得出布尔结果
5. 字符串连接符: +
字符串连接符用于几个字符串之间的拼接
String s1 = "Hello ";
String s2 = "World!";
System.out.println(s1+s2); //结果为Hello World!
String s3 = s1+s2;
System.out.println(s3); //结果为Hello World!
6. 三目运算符: ?:
三目运算符为三元运算符,先对问号前的第一个运算式进行运算,若结果为true。则运算问号与冒号之间的第二个运算式,若结果为false,则运算冒号后的第三个表达式。
int a = 10;
int b = 20;
// 三目运算符,对第一个表达式进行运算
// 若a>b为真,则将a赋予c,若a>b为假,则将b赋予c
int c = a>b ? a : b;
System.out.println(c); // 输出结果为20
7. 运算符优先级:() ~ ++ – ! * / % + - << >> >>> 关系 & | ^ 逻辑 三元 赋值