1.比较运算符:运算后必须有结果,结果为true或false。
2.逻辑运算符:是用于连接boolean型的表达式。
&:与。
^:异或。
|:或。
&符号的运算特点:
true & true = true;
true & false = false;
false& true = false;
false & false = false;
&的运算规律:
&运算的两边只有有一个是false,结果肯定是false。
只有两边都为true,结果才是true。
| 的运算特点:
true| true = true;
true | false = true;
false | true = true;
false | false = false;
|的运算规律:
|运算的两边只要有一个是true,结果肯定是true。
只有两边都为false。结果是false。
^(异或)的运算特点:
true ^ true = false;
true ^ false = true;
false ^ true = true;
false ^ false = false;
^的运算规律:
符号两边结果相同,则结果为false。
符号两边结果不相同,则结果为true。
!:非。
!true = false。
!false = true。
面试级别的问题:
双&时,如果左边为真,右边参与运算。如果左边为假,则右边不参与运算。
单&时,无论左边的运算结果是什么,右边都参与运算。
所以,双&比单&要高效。
双|时,如果左边为假,右边参与运算。 如果左边为真,右边不参与运算。
单|时,无论左边的运算结果是什么,右边都参与运算。
所以,双|同样比单|要高效。
3.位运算符
6 & 3 =2; 6 | 3 =7; 6 ^ 3 ^3 = 6;
0110 0110 110
&0011 | 0011 ^ 011
________ _________ ________
0010 0111 101
^ 011
_________
110
结论:①&可应用与取出某一位的值。
②|用于保留某一有效位。
③一个数异或同一个数两次,结果还是这个数。所以,异或还可以用于加密。
其他位运算符:
<<:左移。3<<2= 3*2*2=12.
左移其实是完成2的几次幂。
>>:右移。3>>1 = 3/2=1.
右移其实是该数据除以2的几次幂。
对于高位出现的空位,原来高位是什么就用什么补空位,以保证数据符号不变。
>>>:无符号右移。3>>>1 = 3/2 =1.
数据进行无符号右移时,无论原高位是什么,高位出现的空位,都用0补。
例:完成两个数值互换。
int a = 3,b = 5,编程实现a,b互换。
法一://此方法阅读性强,适用于开发。
intc;
c =a;
a =b;
b =c;
法二://此方法使用时注意两个整数是否过大,超出int范围时,会强制转换。
a =a+b;
b= a-b;
a =a-b;
法三://此方法高级,但阅读性差。适用于面试。
a =a^b;
b =a^b;
a =a^b;
4.三元运算符
格式:(条件表达式)?表达式1:表达式2;
条件表达式结果为true,则会运算表达式1;
条件表达式结果为false,则会运算表达式2。
应用:获取两个整数中较大的整数。
int a, b;
int max = a>b?a:b;
5.判断结构
格式1:
if(条件表达式)
{
执行语句; //执行语句为单条语句是,大括号可以省略。
}
——————————————————————————————
格式2:
if(条件表达式)
{
执行语句;
}
else
{
执行语句;
}
当if else语句运算后,有一个具体的值,可以用三元运算符。
——————————————————————————————
格式3:
if(条件表达式1)
{
执行语句1;
}
else if(条件表达式2)
{
执行语句2;
}
else if(条件表达式3)
{
执行语句3;
}
.
.
.
else
{
执行语句;
}
练习:星期。
根据用户指定的数据,判断数据对应的星期。
int week = 10;
if(week==1)
System.out.println(week+"对应中文是星期一");
else if(week==2)
System.out.println(week+"对应中文是星期二");
else if(week==3)
System.out.println(week+"对应中文是星期三");
else if(week==4)
System.out.println(week+"对应中文是星期四");
else if(week==5)
System.out.println(week+"对应中文是星期五");
else if(week==6)
System.out.println(week+"对应中文是星期六");
else if(week==7)
System.out.println(week+"对应中文是星期日");
else
System.out.println(week+"没有对应的星期");
6.选择结构(switch语句)
格式:
switch(表达式)
{
case 取值1:
执行语句;
break;
case 取值2:
执行语句;
break;
...
...
default:
执行语句;
break;
}
注意:①switch语句中,各个case编写没有顺序要求。
②但是有执行顺序:先判断各个case的值,只有几个case值都无效时,才判断default。
③紧挨着大括号的break可以省略,如:
...
System.out.println(a+b);
//break;
}
④当有一个正确答案时,若没有break,则程序会顺序向下执行;
且不再判断case的值,直到碰到break或}。
例一:
int a = 3;
switch(a)
{
default:
System.out.println("1");
case4:
System.out.println("2");
case 1:
System.out.println("3");
break;
}
输出结果为 123
例二:用switch语句实现季节判断。
intmonth = 8;
switch(month)
{
case 3:
case 4:
case 5:
System.out.println(month+"月对应的是春季");
break;
case 6:
case 7:
case 8:
System.out.println(month+"月对应的是夏季");
break;
case 9:
case10:
case 11:
System.out.println(month+"月对应的是秋季");