本周重点
1. java的流程控制语句
1)顺序语句2)分支语句
3)循环语句
1.新知识
1.移位运算 : 操作的任然是二进制数据
<< 左移
>> 右移
>>> 无符号右移
左移的操作: 将二进制的整体向左移动指定位数,超出的部分直接丢弃,差的两位就补0 。
左移的规律 : 需要左移的数乘以2^n,n就是移动多少位。
右移操作:将二进制整体向右移动指定的位数,超出的部分丢弃掉,如果是正数移位就补0,如果是负数就补1.
右移操作的规律 : 移位数除以2^n,n就是移位数。正数的规律。
无符号的右移:将二进制整体向右移动指定的位数,超出的部分丢弃掉,空缺的部分无论是正数还是负数都补0.
2. 三目运算符(三元运算符)
格式:
(条件表达式)?条件表达式1:表达式2;
如果条件为true,运算后的结果是表达式1;
如果条件为flase,运算后的结果是表达式2;
三元运算符:
好处:可以简化if else代码。
弊端:因为是一个运算符,所以运算完必须要有一个结果。
3.运算符的优先级 :
小括号的优先级最大。
表达式 : 由运算符和操作数组成的式子叫表达式。
表达式的运算规律: 一般都是从左到右开始计算,除了:赋值运算符从右到左开始计算的。
1. java中的流程控制语句
语句通常用;来表示结束,流程语句分为三类
1:顺序语句:java中代码从上到下依次执行,顺序语句就是按照从上到下的顺序来执行代码
2:分支语句: if (如果) -- else (否则) 如果怎么样 否则怎么样
if的使用结构:
方式一: 单分支结构: if(判断的条件){条件成立做的事情 }
方式二: 双分子结构: if(判断的条件){条件成立做的事情 }else {条件不成立所做的事情 }
方式三:多分支结构:if(判断的条件1){条件成立做的事情 }else if(条件二){条件1不成立,条件二所做的事情}else{条件不成立所做的事情}
提示:为了便于输入数据,使用Scanner这个类,
固定用法Scanner sc=new Scanner(System.in);
该类需要导入包import java.util.Scanner;
int nextInt = sc.nextInt();获取用户输入的数字
如: int year = sc.nextInt();
一.分支语句的结构:
1.分支语句:
特点: 只要有一个条件成立了,其他条件就不会判断了。
if条件的使用注意事项:
1. 不要在if的小括号后面加分号。 如果你加上了表示if语句还没操作就已经结束。
2. 如果你的if语句后面只跟一个语句,这个大括号是可以省略的。但是如果有多个语句的化就必须要有大括号。
2.switch ... case 语句。
switch的结构:
判断值: 整型,字符型数据 或字符串型数据
switch(需要判断的值){
case 需要对应判断的值1:
满足值1的操作;
break;
case 需要对应判断的值2:
满足值2的操作;
break;
case 需要对应判断的值3:
满足值3的操作
break;
...
default :
所有的值都不满足的操作
}
switch语句特点:
1,switch语句选择的类型只有四种:byte,short,int , char。
2,case之间与default没有顺序。先判断所有的case,没有匹配的case执行default。
3,switch语句停止的条件是遇到了break关键字或者结束switch语句的大括号。
4,如果匹配的case或者default没有对应的break,那么程序会继续向下执行,运行可以执行的语句,直到遇到 break或者switch结尾结束。
5,switch case中的值必须要与switch表达式的值具有相同的数据类型。而且case后跟的值必须是常量,不能 跟变量。
swith的后面只能是一个确定的值,不能是一个范围。
switch的使用注意点:
1.switch具有穿透性。
2.switch的跳楼现象 : 加了break。
3.case后跟的是冒号:
每个case中的执行语句一定要加break;
循环语句:
1. java中循环有3中表现形式:
Java中有三种主要的循环结构:
while循环
do…while循环
for 循环
表现形式一:
while 循环。
while 语句的结构:
while(循环条件){
循环内容(循环体)
}
2. 什么时候使用循环?
当需要重复做一件事情的时候就需要使用循环。
例子:
获取1-100中能够被3整数的数
class Demo {
public staticvoid main(String[] args) {
int count = 1;
int sum =0;
while(count<=100){
//判断count是否能被3整数
if(count % 3 == 0){
//当前的和=上一次和 + 当前的数
sum= sum + count; }
//循环一次count需要加1
count++;
}
System.out.println(sum);
}
}
while循环的使用注意事项:
1.循环条件需要定义一个变量来控制这个循环.
2.如果循环操作只有一句话,大括号是可以省略的。不建议大家省略大括号
3.不要在小括号后面加分号
3. 创建一个随机数对象
Random random = new Random();
4.do-while :循环
格式:
do{
循环操作。
}while(循环条件);
执行流程:
1.先执行do中的操作
2.当操作执行完毕,判断条件是否成立。
成立 : 1-->2 成立1--->2 直到条件不成立。
do-while特点:
先执行在判断。循环体至少执行1次。
5. do-while和while 循环的区别:
相同点:都是用来做循环操作,满足条件进入循环体。
不同点:
while:先判断后执行。如果条件不成立while循环体永远不会执行。
do-while :先执行后判断,无论条件是否成立都会执行1次。
6. for循环:
格式:
for(表达式1;循环条件 ; 表达式2){
条件成立的循环体;
}
1.格式:for(初始化表达式;循环条件表达式;循环后的操作表达式)
{
执行语句;
}
7. for 循环有以下几点说明:
最先执行初始化步骤。可以声明一种类型,但可初始化一个或多个循环控制变量,也可以是空语句。
然后,检测布尔表达式的值。如果为 true,循环体被执行。如果为false,循环终止,开始执行循环体后面的语句。
执行一次循环后,更新循环控制变量。
再次检测布尔表达式。循环执行上面的过程。
8.循环的嵌套使用:
循环中套有另外一个循环。
9.break 关键字
break 主要用在循环语句或者 switch 语句中,用来跳出整个语句块。
break 跳出最里层的循环,并且继续执行该循环下面的语句。
面试题:需要在通过内部循环来结束外部的循环。
可以给循环定义一个标签,标签名的命名规范和标识符是一样的。
通过break指定结束循环。
格式:
break 标签名;
10.continue关键字
continue 适用于任何循环控制结构中。作用是让程序立刻跳转到下一次循环的迭代。
在 for 循环中,continue 语句使程序立即跳转到更新语句。
在 while 或者 do…while 循环中,程序立即跳转到布尔表达式的判断语句。
11. break 和 continue 语句的区别。
在循环结构中:
break 语句是终止某个循环,程序跳转到循环块外的下一条语句。
continue 语句是跳出本次循环,进入下一次循环。
12. Java 提供的三种最主要的循环结构,它们是 while、do-while和 for 循环结构。
无论哪一种循环结构,都有四个必不可少的部分:初始部分、循环条件、循环体、迭代部分,
缺少了任何一个都可能造成严重的错误。
1)执行顺序不同
while 循环:先进行条件判断,再执行循环体。如果条件不成立,退出循环。
do-while 循环:先执行循环体,再进行条件判断,循环体至少执行一次。
for 循环:先执行初始化部分,再进行条件判断,然后执行循环体,最后进行迭代部分的计算。
如果条件不成立,跳出循环。
2) 适用情况不同
在解决问题时,对于循环次数确定的情况下,通常选用 for 循环。对于循环次数不确定的情况,
通常选用 while 和 do-while 循环。
例.import java.util.*;
class Work{
public static void main(String[] args){
//定义一个变量来接收答对的次数
int count = 0;
while(true){
//产生两个10-20之间的随机数
Random random = new Random();//0-10 +10
int num1 = random.nextInt(11) + 10;
int num2 = random.nextInt(11) + 10;
//随机生成运算符
int flag = random.nextInt(4)+1;
//创建一个Scanner对象
Scanner input = new Scanner(System.in);
switch (flag){
case 1:
//做加法
System.out.println(num1+"+"+num2+"=?");
System.out.println("请输入你的答案:");
//获取答案
int result = input.nextInt();
//判断答案是否正确
if(result==(num1+num2)){
count++;
System.out.println("你已经答对"+count+"道题,还需要答对"+(10-count)+"道题");
}else {
System.out.println("失败乃成功之母,继续努力");
}
break;
case 2:
//做减法
System.out.println(num1+"-"+num2+"=?");
System.out.println("请输入你的答案:");
//获取答案
int result1 = input.nextInt();
//判断答案是否正确
if(result1==(num1-num2)){
count++;
System.out.println("你已经答对"+count+"道题,还需要答对"+(10-count)+"道题");
}else {
System.out.println("失败乃成功之母,继续努力");
}
break;
case 3:
//做乘法
System.out.println(num1+"*"+num2+"=?");
System.out.println("请输入你的答案:");
//获取答案
int result2 = input.nextInt();
//判断答案是否正确
if(result2==(num1*num2)){
count++;
System.out.println("你已经答对"+count+"道题,还需要答对"+(10-count)+"道题");
}else {
System.out.println("失败乃成功之母,继续努力");
}
break;
case 4:
//做除法
System.out.println(num1+"/"+num2+"=?");
System.out.println("请输入你的答案:");
//获取答案
int result3 = input.nextInt();
//判断答案是否正确
if(result3==(num1/num2)){
count++;
System.out.println("你已经答对"+count+"道题,还需要答对"+(10-count)+"道题");
}else {
System.out.println("失败乃成功之母,继续努力");
}
break;
}
if(count==10){
break;
}
}
}
}
自我小结:1.要提高学习效率,完善方法,总结与作业花费时间较长。
2.基本能掌握所学知识和运用,分析问题逻辑能力待提高。