运算符
算数运算符
+、-、*、/、%、++、--
任意一个四位数,求出每个位上的数字
个位:int num1=num%10
十位: int num2=num/10%10
百位: int num3=num/100%10
千位:int num4=num/1000;
+号:表示相加操作,当+左右两侧的任意一侧有字符串时,进行字符串的拼接
++:自增运算,a++、++a相当于a=a+1
不同点:++a 先进行a+1的操作在进行赋值,
a++,先将a赋值在进行a+1的操作
无论变量是否参加到运算中去,只要有++运算符,这个变量本身都会进行+1
赋值运算符
=、+=、-=、*=、/=
=:赋值运算,将等式右边的值赋值给等式左边
两个数num1和num2进行交换的方式:
1.引入中间变量:
int t; t=num1; num1=num2; num2=t;
2.可以用两个数求和然后相减的方式进行数据交换,弊端在于如果 x 和 y 的数值过大的话,超出 int 的值会损失精度。
int x=5,y=10; x=x+y; y=x-y; x=x-y;
3.利用位运算进行数据的交换,利用的思想原理是:一个数异或同一个数两次,结果还是那个数,
int x =5,y=10; x = x^y; y = x^y; //y=(x^y)^y x = x^y; //x=(x^y)^x
4.最为简单的,在打印输出的时候直接交换变量
int x =5,y=10; //定义两个变量 System.out.println("x="+y+"y="+x); //直接在输出的时候交换
+=:sum+=num;——>sum=sum+num;
a+=b与a=a+b的区别:
a+=b:可读性较差,编译效率高,底层包含自动类型转换
a=a+b:可读性好,编译效率较低,需要手动类型转换
关系运算符
<, >, >= , <= , == , !=
结果为true或false
逻辑运算符
&,|,&&,||,!,^
&:逻辑与,只要有一个操作数是false,结果为false
&&:短路与,效率高一些,只要第一个表达式为false,则第二个表达式不进行计算,结果直接为false
|:逻辑或,只要有一个表达式为true,则结果为true
||:短路或,效率更高一些,只要第一个表达式为true,则第二个表达式不进行运算,结果直接为true
!:逻辑非,结果相反
^:逻辑异或,两个操作数相同,结果为false,不相同结果为true
位运算符
&,|,^,~,>>,<<,>>>
如何进行区分是逻辑运算符还是位运算符
逻辑运算符左右连接的是布尔类型的操作数
位运算符左右连接具体的数值
条件运算符
?: 三元运算符/三目运算符
a?b:c
a是布尔类型的表达式,返回结果要么是true,要么是false
若a为true则结果为b
若a为false,则结果为c
运算符优先级
赋值<三目<逻辑<关系<算数<单目