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. 运算符优先级:() ~ ++ – ! * / % + - << >> >>> 关系 & | ^ 逻辑 三元 赋值