5.运算符
(1)算数运算符
//算数运算符:+ - * / %(取余) //++ --(自增,就是在原有数据基础上+1,再赋给原有数据) ///int x = 6370; //x = x/1000*1000; //int a = 4, b = 5; //int a = 3,b; //b = a++; //System.out.println("a="+a+",b="+b); //int i = 3; //i = i++; //System.out.println(i);
(2)赋值运算符
//赋值运算符: = += -+ *= /+ //int a,b,c; //a = b = c = 3; short a = 4; //a+=2;//编译成功,自动进行了类型的提升。赋值过程中做了强制转换动作。是赋值运算具有的特点。 a = a+2;//编译失败,+的值不确定,可能会丢失精度。 System.out.println(a);
(3)比较运算符
class OperateDemo { public static void main(String[] args) { /* 输出true,比较运算符,运算出肯定室友结果,比较运算符运算出的结果要么是true,要么是false */ System.out.println(3>2); }
}
比较运算符
运算符 |
运算 |
范例 |
结果 |
== |
相等于 |
4==3 |
false |
!= |
不等于 |
4!=3 |
true |
< |
小于 |
4<3 |
false |
> |
大于 |
4>3 |
true |
<= |
小于等于 |
4<=3 |
false |
>= |
大于等于 |
4>=3 |
false |
instanceof |
检查是否是类的对象 |
“Hello” instanceof String |
true |
注1:比较运算符的结果都是boolean型,也就是要么true,要么false。
注2:比较运算符“==”,不能误写成“=”
(4)逻辑运算符
逻辑运算符有什么作用?
用于连接两个boolean类型的表达式
运算符 |
运算 |
范例 |
结果 |
& |
and(与) |
false&true |
false |
| |
|
false|true |
true |
^ |
xor(异或) |
false^true |
true |
! |
not(非) |
!true |
false |
&& |
and(短路) |
false&&true |
false |
|| |
|
false||true |
true |
class OperateDemo { public static void main(String[] args) { /* 输出true,比较运算符,运算出肯定室友结果,比较运算符运算出的结果要么是true,要么是false 逻辑运算符有什么作用? 用于连接两个boolean类型的表达式 | 运算特点: |运算两边只要有一个是true,结果肯定是true。 只要两边都是false,结果是false。 true^true = true; true^false = true; false^true = true; false^false = false; ^ 异或:和或有点不一样。 ^运算特点: ^符号两边如果相同,结果是false。 两边的结果不同,结果是true。 true^true = false; true^false = true; false^true = true; false^false = false; && 下面对比&与&&的相同点和不同点 &&:和&运算的结果是一样的,但是运算过程有点小区别 &:无论左边的运算结果是什么,右边都参与运算。 &&:当左边为假时,右边是不参与运算的。 int x = 3; &&与与 x>2 & x<5 true x>2 && x<5 true int x = 6; &&与与 x>2 & x<5 false x>2 && x<5 false int x = 1; &&与与 x>2 & x<5 false x>2 && x<5 false//只有左边为假,右边就直接不运算了,相当于物理中的电流不通,断路了,当然返回结果还是false。 ||: 和|运算的结果是一样的,但是运算过程有点小区别。 |:无论左边的运算结果是什么,右边都参与运算。 ||:当左边为假时,右边是不参与运算的。 */ System.out.println(3==2); } }
(5)位运算符
位运算符 |
||
运算符 |
运算 |
范例 |
<< |
左移 |
3<<2=12-->3*2*2=12 |
>> |
右移 |
3>>1=1-->3/2=1 |
>>> |
无符号右移 |
3>>>1=1-->3/2=1 |
& |
与运算 |
6&3=2 |
| |
或运算 |
6|3=7 |
^ |
异或运算 |
6^3=5(一个数异或同一个数2次,结果还是这个数) |
~ |
反码 |
~6=-7 |
位运算符细节 |
|
<< |
空位补0,被移除的高二进制位丢弃,空位补0. |
>> |
被移位的二进制最高位是0,右移后,空位补0;最高位是1,空位补1. |
>>> |
被移位的最高位无论是0或者是1,空位都补0. |
& |
二进制位进行&运算,只有1&1时结果是1,否则是0. |
| |
二进制进行|运算,只有0|0时结果是0,否则是1. |
^ |
相同二进制进行^运算,结果是0;1^1=0,0^0=0; 不同二进制进行^运算结果是1. |
~ |
(6)三元运算符
格式:条件表达式?表达式1:表达式2
如果条件为true,运算后的结果是表达式1
如果条件为false,运算后的结果是表达式2
示例:
获取两个数中的数值大的数
int x = 3,y=4; z=(x>y)?x:y;//z变量存储的就是两个数的大数。
6.语句
(1)判断结构
if语句三种格式
a.if(条件表达式){
执行语句
}
b. if(条件表达式){
执行语句
}else{
执行语句
}
c. if(条件表达式){
执行语句
} else if(条件表达式){
执行语句
} else{
执行语句
}
If:
a. 对具体的值进行判断
b. 对区间进行判断
c. 对运算结果是boolean类型的表达式进行判断
(2)选择结构
switch(需要判断的值)
{
case "值1":
执行语句1;
break;
case "值2":
执行语句2;
break;
case "值3":
执行语句3;
break;
default:
默认执行语句;
break;
}
Switch:
a. 对具体的值进行判断
b. 值的个数通常是固定的
对于几个固定值的判断,建议使用switch语句,因为switch语句会将具体的答案都加载进内存,效率相对高一点。
(3)循环结构
while(条件表达式)
{
执行语句;
}
int x = 1; while(x<3) { System.out.println("x="+x); x++; }