运算符2
位运算符-------二进制运算
按位与运算 &
A&B
将A和B转换成二进制 右侧对齐,上下比较
两者都为1,结果才为1,否则九就为0
例:
12&3=0
12: 1100
3: 0000
------------------
0: 0000
按位或运算|
A|B
将A和B转换成二进制 右侧对齐,上下比较
两者有一个为1,结果即为1,两个都为0,结果才为0
按位异或运算^
将A和B转换成二进制 右侧对齐,上下比较
两者不同则为1,相同则为0
反码运算~
将二进制中的0换成1,1换成0
移位运算
<<向左移位 将值放大
>>向右移位 左侧空缺处补符号位
>>>向右移位 左侧空缺处补0
&和|也可以对boolean类型进行运算
结果为boolean类型
&和&&运算结果是一样的
赋值运算 = += -= *= /= %=
byte a=12;
a+=2和a=a+2不一样,后者结果为int类型
三元运算符 A?B:C
A:条件
B:若为true,执行B
C:若为false,执行C
(true?3:4.0)的结果为3.0(浮点数类型)
交换两个变量的值
第三变量交换:
int a=11;
int b=22;
int c=a; //c=11 a=11 b=22
a=b; //c=11 a=22 b=22
b=c; //c=11 a=22 b=11
加法交换:
int a=11;
int b=22;
a=a+b; //a=33 b=22
b=a-b; //a=33 b=11
a=a-b; //a=22 b=11
异或交换: 相同为1,不同为0
int a=11;
int b=22;
a=a^b;
b=a^b; a=a^b;
流程控制
if-else if-else判断
if(条件1){
操作;
}else if(条件2){
操作;
}else{
操作;
}
if和else if中是判断语句,若为true则执行对应的操作
若都为false,执行else中的操作。
switch-case判断
switch(变量){
case 值:
操作;
break;
case 值:
操作;
break;
default:
操作;
}
switch匹配某一个变量的值,如果匹配到某一个case项,就从这个case项开始运行
运行到break或者代码块结束
所有的case项都没有匹配成功才会执行default
Tips
1 case项和default的顺序可以是错乱的,但是执行顺序不会乱
2 switch可以匹配的类型 byte short int char String enum(枚举)
while循环
---------------------------------------
while(继续循环的条件){
循环体;
}
----------------------------------------
do{
循环体;
}while(继续循环的条件)
----------------------------------------
for循环
for(初始条件;继续循环的条件;初始条件变化方式){
循环体;
}
break,continue关键字
break:结束所在的循环体
continue:跳过本轮循环
跳出多重循环
--------------------------------------------------------------------
break跳出
a:for( ; ; ){
for( ; ; ){
for(int i=0;i<100;i++ ){
if(i==50){
break a;
}
}
}
}
--------------------------------------------------------------------
变量控制
boolean bool=true
for( ;bool; ){
for( ;bool; ){
for(int i=0;bool&&i<100;i++ ){
if(i==50){
bool=false;
}
}
}
}
--------------------------------------------------------------------
无限循环:永远达不到结束条件的循环,循环后面可以编写其他代码
a=0;
while(a<1000){a--;}
死循环:没有结束条件的循环,之后不能写其他代码
for(;;){ }
while(true){ }
数组
数组是有序的元素序列
定义
静态:
int[] arr={1,2,3,4};
int[] arr=new int[]{23,45,67};
动态:
int[] arr=new int[4]; 长度定义数组,[4]代表可以存放四个元素
数组的限定:
1.只能存放指定类型的数据
2.数组的长度是不可变的
使用数组当中的元素----->用下标 从0开始依次增加
arr[0]即为arr数组中第一个元素
获取数组的长度----->arr.length
打印出arr数组的所有元素----->
System.out.println(Arrays.toString(arr));
二维数组
定义
int[][] arrs=new int[4][2];
二维数组的限定:
1.一维数组的个数不可变
Tips
获取随机数
Math.random() 范围:[0,1)
数组下标越界
int[] arr=new int[4];
arr[1]=34;合法
arr[4]=98;越界