一、
通过代码将两个变量的值进行交换的方法。
//通过第三个变量交换
int a=20;
int b=80;
System.out.println("a="+a+",b="+b);
int temp=a;
a=b;
b=temp;
System.out.println("a="+a+",b="+b);
//加法交换
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
System.out.println("a="+a+",b="+b);
//异或交换(相同为0,不同为1)
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
二、
接上一篇博客
运算符:位运算
- 按位与 & A&B
将A和B转成二进制 右侧对齐上下比较,两者都为1,结果为1,否则为0.
- 按位或运算 | A|B
将A和B转为二进制,右侧对齐上下比较,两者有一个1结果即为1,两者都为0结果才为0.
- 按位异或运算 ^ A^B
将A和B转为二进制,右侧对齐上下比较,两者不同则为1,相同则为0.
- 反码运算(~) ~A
将二进制中0换成1,1换成0.
- 移位运算
(<<)向左移位放大倍数
result=3<<2; System.out.println(result);//24个0+00000011变成24个0+00001100,结果为12
(>>)左侧补符号位,-1往右移位永远是-1
result=-1>>800;//右移800位 System.out.println(result);//1+23个0+0000001反码为1+23个1+11111110补码为1+23个1+11111111,右移800位,左面补符号位24个1+11111111,根据补码求原码,数据位取反加一,1+31个0加1=1后面30个0再跟个1,结果还为-1。
(>>>)往右移位,空出来的位置补0
result=-1>>>1; System.out.println(result);//1+23个0+00000001反码为1+23个1+11111110补码为1+23个1+11111111,右移一位,左面补0,0+31个1,根据补码求原码,数据位取反加一,0+31个1加1=01后面31个0,结果为2^31=2147483647。
- & | 也可以对boolean进行运算,得到Boolean值
&是按位与运算符,&&是逻辑运算符,两者运算方式不同,但是可以得到相同结果,&没有短路现象,&&有短路现象。
boolean bool=true&false;
int a=12,b=12;
bool=a++<12&&b++>12;
System.out.println(bool);
- 赋值运算符 = += -= *= /= %=
a=a+2;意思相同但不相等,不能将int赋值给byte
- 三元运算 A?B:C A如果为true取B,false取C
int result=12>34?11:33;
System.out.println(true?3:4.0);//结果为3.0,只要double参与,结果为double。
三、
流程控制语句
- else if 如果条件匹配,下面的else if 不再执行,与if代码块不同
写多个if语句时,尽量让条件严格的放在上面,减少重复判断造成的资源浪费
- swich case
- 匹配某一个量的值,不能做范围判断,如果匹配到某个case,就从这个case开始执行,运行到break,continue或代码块结束才退出,所有case项都没有匹配成功,才运行default。
- case项之间或default的顺序可以是错乱的,但是执行顺序不会乱。
- swich可以匹配的类型byte short int char String Enum(枚举)六种类型。
- 循环 while for
- while(循环条件){
循环体
}
如:打印abcd
i=‘a’;
while(i<‘d’){
System.out.println((char)i);
i++;
}
- do…while至少执行一次
- for(计数器;循环条件;计数器自增)
for循环适用于知道需要循环多少遍的情况。
在循环中使用break退出所在的循环体,continue语句则是不再执行此语句下面的语句,继续下一次循环。
- 跳出多重循环
利用标签跳出
a:for( ; ; ){
for( ; ; ){
break a;
}
}
利用改变布尔变量导致判断逻辑改变跳出
boolean bool=true;
a:for( ;bool&&; ){
for( ;bool&&; ){
for (int bb=0;bool&&bb<100;bb++){
if(bb==50){
bool=false;
}
}
}
}
- 死循环和无限循环
死循环 没有结束循环的条件,下面不能写其他代码
while(true){}//死循环
无限循环 结束循环的条件永远达不到,可以编写其他代码
int a=0;
while(a<1000){
a--;
} //无限循环
四、
数组
- 定义:数组是一种有序的元素序列,它包含有限个类型相同的变量。这些变量通过一个共同的名称(即数组名)进行集合命名,每个变量称为数组的一个分量或元素。
1,只能存放指定类型的数据
2,数组的长度是不可变的
- 数组的声明
//静态声明
int[] arr = {13, 25, 37};//只有在声明并赋值时才能这样使用
int[] arrA = new int[]{23, 45};
//动态声明
int[] arrB = new int[4];
- 使用数组中的元素
下标 从0开始依次增加,数组下标不可越界,否则报错。
//设置元素的数据
arr[0] = 99;
//获取数组长度
System.out.println(arr.length);
//打印数组中所有元素
int i = 0;
for (i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
- 二维数组,相当于一维数组嵌套了一个数组
//二维数组的限定 一维数组的个数不可变
arrs[2] = new int[]{1, 2, 3, 4};
System.out.println(Arrays.deepToString(arrs));