-
位移运算
左移:value << bit (把value的二进制值向左侧移动bit位)
每次移动,高阶位会被移除并丢弃,低阶位补0
每左移一位,相当于对原值进行一次乘2操作
左移是乘以2的n次方的高效代替方案
但如果把1移动到最高阶位,结果就不是我们期待的
int a = 30;//0000 0000 0000 0000 0000 0000 0001 1110
System.out.println(a << 1);//60
System.out.println(a << 2);//120右移:value >> bit
把value的2进制值向右侧移动bit位
每次移动,低阶位会被移出并丢弃,高阶位补符号位
每右移一位,相当于以对原值进行一次除2操作
右移是除以2的n次方的高效替代方案
-
判断语句(if判断,switch判断)
if判断:-
if结构
语法格式:
if(条件表达式(一定返回true或false)){
分支语句块
}
当条件表达式返回true时,会执行分支语句块,然后再执行后续的程序码
当条件表达式返回false时,会跳过分支语句块,直接执行后续的程序代码 -
if-else分支结构
if(条件表达式){
分支语句块1
}else{
分支语句块2
} -
if-else if-else分支结构
if (条件表达式1){
分支语句块1
}else if(条件表达式2){
分支语句块2
}else if(条件表达式3){
分支语句块3
}else{
分支语句块4
}
switch判断: - 语法格式:
switch(变量){
case 1:
分支语句块
break;
case 2:
分支语句块
break;
case 3:
分支语句块
break;
default:
分支语句块
}
switch语句只能进行相等性判定,即switch后面的变量跟case后的值进行相等性判断。
case关键字后的值必须与switch后的变量属同一类型(或可自动转型为此类型的类型)
此变量必须是:byte、short、int、char或它们的包装类对象
Java 5后,可以使用枚举对象
Java 7后,可以使用String
在同一个switch语句块中,各case关键字后面的值不能重复
switch语句块中有0到1个default块,其中定义着所有case都不成立时应执行的逻辑
如果不以break语句结束case块,则会从第一个满足条件的case块开始
执行后续所有case块中的程序逻辑,直到遇到break或switch块结束
在相等判断情况下,switch结构与if-else if-else结构可以相互替代对于if-else if-else块,switch结构的性能更好
-
if结构
-
循环语句(while循环,for循环)
- while循环
语法:
计数器
while(条件表达式){
循环体
}
while循环体可能执行0到多次,原因是先判断条件,再执行逻辑
do-while循环体可能执行1到多次,原因是先执行逻辑,再判断条件 - do while循环
语法:
计数器
do{
循环体
} - for循环
语法:
for(声明计数器初值;进入循环的boolean表达式;修改计数器值){
循环体
}
第1步:初始化计数器,此部分只执行一次
第2步:判断是否可以进入循环
第3步:如果可以进入循环,则执行其中的逻辑,否则跳过循环体
第4步:当循环体执行完成后,进行计数器的修改
第5步:跳转至第2步,开始下一次循环周期
for (int i = 1; i < 11; i++) {
System.out.println(i);
}
各种循环结构的使用场景:
while和do-while:在循环次数不定的场景下使用
for:在循环次数可知的场景下使用
forEach:用于遍历数组或容器对象中的元素 - forEach
语法:
for(元素类型声明 当前元素的变量名 : 待遍历的数组或容器对象){
循环体
}
进入forEach循环,会从被遍历的数组对象的第一个元素开始处理
每次循环,处理一个元素,这个元素被element变量持有
与传统for循环遍历数组不同,此处的element不是索引,而是元素本身值
当数组的所有元素被遍历完成后,循环结束
forEach循环不会出现数组索引越界异常
相对于传统的for循环遍历数组,forEach更安全
遍历的传统方法:
int[] arr = { 10, 20, 30, 40, 50, 60, 70, 80, 90, 100 };
// 使用数组元素的索引进行数组元素的遍历
// 其中的i是元素的索引值
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
用forEach遍历:
for (int element : arr) {
System.out.println(element);
}
- while循环
判断和循环
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 你好,我是宫敬华,每天写一篇与读书有关的原创文章,今天是第26篇。希望我的每一篇文章都能为喜欢阅读的你赋能。如果你...