异或运算符^
运算特点
true^true=false ;
false^false=false;
true^false=true;
运算规律
两边相同为false,两边不同为true
&&,||与&,|的区别(面试题)
&&和&的运算结果一样,过程有点小区别
&:无论左边是什么,右边都参与运算
&&:如果左边为false,右边不参与运算
|:无论左边是什么,右边都参与运算
||:如果左边为true,右边不参与运算
位运算符
运算符 | 运算 | 范例 |
<< | 左移 | 3<<2=3*2*2=12 |
>> | 右移 | 3>>1=3/2=1 |
>>> | 无符号右移 | 3>>>1=3/2=1 |
& | 与 | 6&3=2 |
| | 或 | 6|3=7 |
^ | 异或 | 6^3=5 |
~ | 反码 | ~6=-7 |
左移
就是乘以2的几次方如3<<2 |0000-0000-0000-0000-0000-0000-0000-0011|->00|00-0000-0000-0000-0000-0000-0000-001100|
右移
就是除以2的几次方|,对于空位,原来高位用的是什么就用什么来补充这个空位如3>>1 |0000-0000-0000-0000-0000-0000-0000-0011|->|00000-0000-0000-0000-0000-0000-0000-001|1
无符号右移
无论原来高位是什么空位都用0补
一个数异或同一个数两次结果还是这个数如下
110
^
001
111
^
001
110
&运算(1和1为1,其他为0)
6&3=110&011
110
&011
010
|运算(0和0为0,其他为1)
6|3=110 |011
110
| 011
111
对两个整型变量进行互换
/**
第三方变量法*/
class Demo1{
public static void main(String args[]){
int a=3,b=5,c;
c=b;
b=a;
a=b;
}
}
/**
加减法(不要用因为数值太大可能超出范围)
class Demo1{
public static void main(String args[]){
int a=3,b=5;
a=a+b;
b=a-b;
a=a-b;
}
}
*/
/**
异或法(面试用)
一个数异或同一个数两次还是这个数
class Demo1{
public static void main(String args[]){
int a=3,b=5;
a=a^b;//3^5
b=a^b;//(3^5)^5
a=a^b;//(3^5)^3
}
}
*/
三元?:运算符
三元运算符?:是if...else的简写格式
简写格式什么时候用?当if...else有具体结果时用简写格式
局部代码块可以决定局部变量的生命周期
if和switch的应用
if
- 对具体的值进行判断
- 对区间判断
- 对运算结果是Boolean类型的表达式进行判断
/**
春季 3 4 5
夏季 6 7 8
秋季 9 10 11
冬季 12 1 2
根据用户输入的数字,给出对应的季节
*/
class Demo{
public static void main(String args[]){
int month;
month=13;
if(month<1||month>12){
System.out.println("没有对应的季节");
}
else if(month>=3&&month<=5){
System.out.println("春季");
}
else if(month>=3&&month<=5){
System.out.println("夏季");
}
else if(month>=3&&month<=5){
System.out.println("秋季");
}
else if(month>=3&&month<=5){
System.out.println("冬季");
}
}
}
switch
- 对具体的值进行判断
- 对几个固定的值进行判断。
- 当判断的值只有几个的时候,建议使用switch,因为switch会将具体答案都加载进内存效率较高
class Demo{
public static void main(String args[]){
int month=13;
switch(month){
case 3:
case 4:
case 5:
System.out.println("春季");
break;
case 6:
case 7:
case 8:
System.out.println("夏季");
break;
case 9:
case 10:
case 11:
System.out.println("秋季");
break;
case 12:
case 1:
case 2:
System.out.println("冬季");
break;
default:
System.out.println("没有对应季节");
break;
}
}
}
累加算法
/**x记录参加加法的数据 sum记住每一次和*/
class Demo{
int x=1,sum=0;
while(x<=10){
sum=sum+x;
x++;
}
}
for和while的区别
一般来说,for和while可以进行互换,但是如果需要通过变量来实现循环,且该变量只作为循环增量而存在的话,使用for可以节省内存空间