运算符之位运算符(二进制运算符)
//运算符
//位运算符 二进制运算符
int result=0;
//按位与运算 & A&B
//将A、B转成二进制 右侧上下对齐,两者都为1,结果才为1,否则为0
result=12&11;
System.out.println(result);//8
//按位或运算 | A|B
//将A、B转成二进制 右侧上下对齐,两者有一个为1,结果为1;两个都为0,结果才为0
result=12|11;
System.out.println(result);//15
//按位异或运算符 ^ A^B
//将A、B转成二进制,右侧对其上下比较,两者不同则为1,相同则为0
result=12^11;
System.out.println(result);//7
//反码运算
//反码 ~ 将二进制中的0换成1,1换成0
result=~11;
System.out.println(result);//-12
//移位运算 左移<<
result=3<<2;
System.out.println(result);//12
//右移>> 左侧补符号位
result=-1>>2;
System.out.println(result);//-1
result=3>>2;
System.out.println(result);//0
// >>> 空出来的位置补0(注意与“>>”区分)
result=-1>>>1;
System.out.println(result);//2 147 483 647
//最快的计算方式是移位
result=3*8;// 3×2^3=24
result=3>>3;// 24
// & | 也可以对Boolean值进行计算,得到Boolean值
boolean bool= true & false;//&和&&运算结果是一样的
a=12;b=12;
bool=a++<12 & b++>12;//没有短路现象 a=13,b=13
bool=a++<12 && b++>12;//存在短路现象 a=14,b=13
两数交换的三种方法
//第三变量交换
int a,b;
a=11;
b=22;
int t;
t = a;// t=11
a = b;// a=22
b = t;// b=11
//加法交换
a=11;
b=22;
a=a+b;// a=33 b=22
b=a-b;// a=33 b=11
a=a-b;// a=22 b=11
//异或运算交换
a=11;
b=22;
a=a^b;// a=29 b=22
b=a^b;// a=29 b=11
a=a^b;// a=22 b=11
流程控制
// if……else……
int score=(int) (Math.random()*100);
if(score>=60){
System.out.println("恭喜及格了");
}else {
System.out.println("不及格");
}
//if……else if……
Scanner sc = new Scanner(System.in);
System.out.println("请输入成绩(0~100):");
int score = sc.nextInt();
if (score >= 85) {
System.out.println("优秀");
} else if (score >= 70) {
System.out.println("良好");
} else if (score >= 60){
System.out.println("及格");
} else if (score < 60){
System.out.println("不及格");
}
sc.close();
//switch case
//switch 匹配某一个量的值,如果匹配到某一个case项,就从这个case项开始运行
//运行到break;或者代码块结束
//所有的case项都没有匹配成功才会执行default;
/*注意 1 case项和default的顺序可以是错乱的,但是执行顺序不会变
2 switch 可以匹配的类型 byte short int char String enum(枚举)*/
Scanner sc = new Scanner(System.in);
System.out.println("请输入月份:");
int a = sc.nextInt();
switch(a){
case 1,2,3:
System.out.println("春季");
break;
case 4,5,6:
System.out.println("夏季");
break;
case 7,8,9:
System.out.println("秋季");
break;
case 10,11,12:
System.out.println("冬季");
break;
default:
System.out.println("没有这个月份");
break;
}
sc.close();
public class Test6 {
public static void main(String[] args) {
//循环 while for
/*while (循环条件){
循环体
}*/
char i = 'a';
while (i <= 'd') {
System.out.println(i);
i++;
}
//do……while至少执行一次循环体
do {
System.out.println(i);
i++;
}while (i <= 'z');
//for循环
for (int j = 0;j<5;j++) {
System.out.println(j+1);
}
int cat=100;
int mouse=(int)(Math.random()*120);
int count=0;
while (cat>mouse) {
count++;
mouse=(int)(Math.random()*120);
}
System.out.println("猫一共抓了"+count+"只老鼠");
}
}
//流程控制语句 break; continue;
for(int j= 1;j <=100;j++){
if(j % 7 == 0){
//break;//结束所在循环体
continue;//跳过本次循环
}
System.out.println(j);
}
a: for(int x= 1;x <=100;x++){
for(int y= 1;y <=100;y++){
for(int z= 1;z <=100;z++){
if(z==50){
break a;
}
}
}
} //break;跳过本次循环
boolean bool = true;
for(int x= 1;bool && x <=100;x++){
for(int y= 1;bool && y <=100;y++){
for(int z= 1;bool && z <=100;z++){
if(z==50){
bool = false;
}
}
}
}//使用boolean值跳出循环
//没有结束循环的条件:死循环;之后不能写其他代码
//永远达不到结束循环的条件:无限循环;之后可以编写其他代码
/* int a=0;
while(a<1000){}//无限循环
while(true) {}//死循环
for(;;){
}//死循环*/
数组
public class Test8 {
public static void main(String[] args) {
//数组 有序的元素序列
//定义
int[] arr = new int[10];//动态 长度定义数组 [10]代表可以存放10个元素
int[] arr2 = {4,5,6,7,8,9};//静态
int[] arr3 = new int[]{4,5,6,7,8,9};//静态
/*数组的限定
1.只能存放指定类型的数据
2.数组长度是不可变的*/
//使用数组中的元素 下标从0开始
System.out.println(arr3[2]);
//设置元素的值
arr3[0]=99;
System.out.println(Arrays.toString(arr3));
//获取数组的长度
System.out.println(arr.length);
//打印数组中的所有元素
for (int i = 0; i < arr3.length; i++) {
System.out.println(arr3[i]);
}
//二维数组
int[][] arr4 = {{1,2,3},{4,5,6},{7,8,9}};
int[][] arr5 = new int[3][2];
System.out.println(Arrays.deepToString(arr4));
//二维数组的限定 一维数组的个数不可变,但是一维数组可变
arr4[1]=new int[]{1,2,3};
System.out.println(Arrays.deepToString(arr4));
for (int i = 0; i < arr5.length; i++) {
for (int j = 0; j < arr5[i].length; j++) {
arr5[i][j]=(int)(Math.random()*100);
}
}
System.out.println(Arrays.deepToString(arr5));
//数组下标不可越界
}
}