键盘录入数据
1.操作步骤
a.导包:以后在java语言中,只要不是java.lang.*包下的类,都需要导包
书写位置:在class上面
import java.util.Scanner;
b.创建文本扫描器对象:
Scanner 对象名 = new Scanner (System.in);
c.提示用户,并接受数据:(回车---告诉jvm"录入完毕")
System.out.println("请您输入一个数据:"):
int 变量名 = 对象名 .nextInt();
d.使用这个变量
2.注意:
a.录入字符串:String nextLine()
录入int类型数据:int nextInt()
b.一句话给你讲过去,就是录入两个数据,第一个数据是int类型的,第二个数据是String类型的
出现问题了,因为"回车本身就是字符串",直接讲第二个值直接漏掉,怎末解决呢,就是在录入String
类型的之前,先创建一个扫描器对象,就可,不是一句话,是一段话,谅解.
流程控制语句
种类:
1.顺序结构语句(最基本的语句)
我给你们说说过程,冗杂且臭,忍着,当前xxx.java文件--->jVm编译--->类名.class(字节码文件)
执行程序:java 类名.class;(编译+运行:底层原理是一种反射)
jvm调用main方法:代码从上而下依次加载(源顺序)
有些名词就是个球,我都听不懂
2.选择结构语句
3.循环结构语句
选择结构语句(if)
1.选择结构语句的种类:
a.if语句
b.switch语句
2.if语句的种类:(这小子花样还挺多,会会他)
a.针对单个条件进行判断
格式:
if(表达式){
语句;
}
执行流程:首先判断表达式是否成立
如果成立,则执行语句;
否则不成立,不会执行!
b.针对两种情况进行判断
格式:
if(表达式){
语句1;
}else{
语句2;
}
执行流程:首先判断表达式是否成立;
如果成立,执行语句1;
否则,执行语句2!
c.针对多个情况进行判断:
格式:if(表达式1){
语句1;
}else if (表达式2){
}else if (表达式3){
语句3
...
}else{
语句n+1 ;
}
执行流程:首先,判断表达式1是否成立,成立,执行语句1
否则,判断表达式2是否成立,成立,执行语句2
否则,判断表达式3是否成立,成立,执行语句3
...
如果上述都没有匹配的结果:执行else结果
开发中:使用第一第二居多,第三很少用.
3.注意事项:
a.if后面不能有:
if(表达式);{} 错误的语法
有左大括号的地方不能有分号,有分号的地方不能有左大括号
b.如果使用的if格式,里面的语句是条语句,
{}是可以省略的!但是不建议省略(那就不省略了呗)
选择结构语句(switch)
1.格式:
switch(表达式){
case 值1:
语句1;
break;
case 值2:
语句2;
break;
...
defauit:
语句n+1;
break;
}
2.执行流程:
首先表达式接收一个值,然后和case语句值1比较,如果成立,执行语句1,break结束switch
值1不匹配,判断和值2是否匹配,如果匹配成功,执行语句2,结束switch
...
...
上面case语句都不成立
执行default语句,执行语句n+1,结束switch!
3.表达式它可以是什么数据类型?
最基本的类型:int,byte,char
JDK5以后:可以跟枚举(enum)
JDK7以后:String类型
4.注意事项:
a.case语句的后面只能是常量(java是一个强类型语言)
b.break语句:不要轻易省略掉,会造成case穿透(此时如果跟某个case已经匹配,但是没有语句break,
下面的case就不会对比,直接执行语句)break:结束,中断
c.switch语句结束的条件
语句break结束
程序默认执行到末尾
d.default语句可以在switch语句种的任何位置,不影响执行流程!
当前case后面的都匹配,执行default语句
如果default语句在语句中的话,break语句不能省略
如果default语句在switch末尾的话,break语句是可以省略的
循环结构语句(for)
1.种类:
for循环
while循环
do-whil循环
2.for循环的格式
for(1.初始化语句;2.条件语句;4.步长语句(控制体语句))[
3.循环体语句;
}
3.流程是啥呢:
a.初始语句给当前循环中的变量赋值:执行一次
b.接下来执行条件语句,判断条件语句是否成立
c.如果条件语句结果成立:true,执行3循环语句
d.执行控制体语句++/--,
循环了
e.继续去判断条件语句是否成立
f.成立,继续执行循环体语句...
...
...
当前语句不成立,for循环结束
循环结构语句(while)
1.格式:
初始化语句;
while(条件表达式){
循环体语句
控制体语句;
}
2.执行流程:
初始化语句:给变量进行赋值
当前条件表达式成立,执行循环体语句;
继续控制体语句,再次执行条件表达式
...
...
当条件表达式不满足条件,while循环结束
3.注意事项:
while循环在使用的时候,不要忘了控制体语句,否则死循环
4.while跟for循环的区别是什么?
a.应用场景的区别:
是否明确循环次数
如果明确循环次数,优先使用for循环(开发中经常使用)
当不明确循环的次数,使用while循环(门清用for,屁都不知道用while)
b.从格式---(内存角度),for优于while,(哎呦喂,for还挺牛皮)
for循环结束之后,不能够访问到for循环中的变量
循环结束后,变量(内存中变量:临时变量)就需要被回收,节省内存,(说白了,用完就扔了)
while循环:由于存在初始化语句是在while外面定义的,所以当前while循环,依然访问while
循环中的变量(就是别人的东西,你只能用一下)
5.死循环(这原理,用的好就是很不错的)
循环语句没有结束条件---恒成立
a.格式:
for(;;){
循环体语句;
}
while(true){
循环体语句
}
循环结构语句(do while)
1.格式:
初始化语句;
do{
循环体语句;
控制体语句;
}while(条件表达式);
2.执行流程:
初始化语句对变量赋值一次;
成立,执行循环体语句---控制体语句
判断条件表达式是否成立
...
条件不成立,循环语句结束!
3.应用场景:
以后源码会有,开发中很少用,它和for,while最大的区别:即使条件不成立,循环体至少执行一次
循环结构语句(for循环嵌套)
1.格式:
for(初始化语句1;条件表达式1;控制体语句1){
for(初始化语句2;条件表达式2;控制体语句2){
循环体
}
}
内层循环作为外层的循环体语句!
2.执行流程:
初始化1先执行,条件表达式1成立,
执行循环;for循环
先执行初始化语句2,条件表达式2成立.
循环体语句-->控制体语句2-->条件表达式2是否成立
不满足条件
控制体语句1
(\t:制表符,相当于在记事本中的缩进效果;\n:换行)
跳转控制语句
1.种类:
有三种,break;continue;return;
2.这边先介绍break:
a.含义:表示中断结束的意思,不能单独场景使用,在哪用呢,你们来看
switch语句:遇见break结束
循环中使用:结束循环语句的
b.break标签语句:给外层循环和内层循环起一个名字,标签名称:for(xxx)
break 标签名称;
3.continue
a.含义:结束当前循环,立即下一次循环(不能单独使用,一般都在循环中使用)
4.return:
结束方法去使用,一般情况下;return需要结合有具体返回值类型的方法使用
很少单独使用,
return:返回