java中的流程控制语句
1.顺序结构:
main方法:需要被jvm(java虚拟机)调用.
进入main方法:代码由上而下依次执行.
2.选择结构语句:if\switch
3.循环结构语句:while\for do-whlie
选择结构语句之if:
格式一:
if(表达式){
语句;
}
执行流程:先看表达式,表达式成立,执行大括号之内的语句,否则不执行.
注:1.如果是一个简单的语句操作或者运算,{}可以省略,不影响执行流程,但是不建议.
2.由左大括号的地方不能有分号.有分号的地方不能有大括号.
3.在大括号中定义的变量,其生命周期只在大括号内有效.
格式二:
if(表达式){
语句1;
}else{
语句2;
}
执行流程:先判断表达式是否成立,成立执行语句一,不成立执行语句二.
格式三:
if(表达式1){
语句1;
}else if(表达式2){
语句2;
}else{
语句n;
}
执行流程:首先判断表达式1是否成立,成立执行语句1,不成立则继续判断表达式2是否成立,成立执行语句2,不成立则判断后面的表达式,如果都不成立,则执行else中的语句.
格式四(格式之间的嵌套):
if(表达式1){
if(表达式2){
语句1;
}else{
语句2;
}
}else{
语句n;
}
执行流程:首先判断表达式1是否成立,成立进入大括号继续判断表达式2,不成立执行最后else中的语句n.
if..else语句与三元运算符的区别:
1.两个在逻辑上都表示一种选择,if..else语句既可以针对具体数值进行判断,又可以针对一些操作语句进行判断,而三元运算符属于java中的运算符,只针对具体数值进行判断.
2.能够使用三元运算符的操作都可以使用if..else语句,而使用if..else语句的不一定能使用三元运算符.
选择结构语句之switch:
格式:
switch(表达式){
case 值1:语句1;break;
case 值1:语句1;break;
case 值1:语句1;break;
case 值1:语句1;break;
default:语句n+1;break;
}
执行流程:表达式中的值与case后面的值逐一进行匹配,匹配到的执行值后面的语句,并由break跳出结构,如果没有匹配的值,则执行default后面的语句.
注意:
1.case后面的值只能是常量.
2.break表示结束,中断的意思.程序执行结束的要求是遇见break,或程序默认执行到最后.
3.default可以放在switch语句中的任何位置,不硬影响语句的执行流程,如果default在语句最后,default可以省略,如果在语句中,必须要有break,否则会造成case穿透.
循环结构语句之for:
格式:
for(初始值语句;条件判断语句;控制体语句){
循环体语句;
}
执行流程:先执行初始化语句对变量赋值(只执行一次),再执行条件判断语句,若成立,则执行循环体语句-->空号字体语句,再执行条件判断语句,如果条件判断语句依旧成立,继续执行上面的操作,只到条件判断语句不成立.若条件判断语句一开始就不成立,则不进入循环.
for循环嵌套:
for初始值语句;条件判断语句;控制体语句){
for(初始值语句;条件判断语句;控制体语句){
循环体语句;
}
}
内层循环是外层循环的循环体语句.
循环结构语句之while:
1.while语句:
格式:
while(条件表达式\条件判断式){
循环体语句;
控制体语句;
}
执行流程:初始化语句执行一次,判断条件是否成立,成立,则执行循环体语句,再依次执行控制体语句.如果不成立,结束循环.
2.do-while语句:
格式:
do{
循环体语句;
控制体语句
}while(条件表达式);
执行流程:初始化语句执行一次,对变量进行赋值执行循环体语句,执行步长语句(++或者--)判断while后的条件是否成立,成立,继续执行循环体语句...不成立,语句结束!
3.while与do-while的区别:do-while语句至少执行一次.
4.while和for的区别
1>格式不同.
2>并且从内存角度考虑:
for循环的格式:for循环语句外面不能够访问变量的,因为它随着for循环执行完毕,main方法结束之后,变量就会被GC(垃圾回收器)回收掉这些变量.
while循环的扩展格式(变量定义在循环之外):循环结束,依然可以访问变量;在内存中占用资源空间大于for循环 .
3>如果明确循环次数,优先使用for,不明确循环次数,使用while循环.
键盘录入 java.util.Scanner;
步骤:
1.import java.util.Scanner;
2.Scanner sc = new Scanner(System.in);
3.int num = sc.nextInt();调用方法.
键盘录入的细节:
先录入int类型,在录入String类型:
--存在的问题:字符串数据会被漏掉
--原因:先录入int---按回车符号-----字符串---直接录入(回车符号问题)
解决方案1:public String next();通用方法.录入字符串.
解决方案2.再录入下一个String之前,重新创建一个键盘录入对象.
键盘录入获取随机数:
java中的类---Math:针对数学运算的常用类 (平方根,三角函数..)
产生一个随机数java.lang.Math:
内置的方法public static double random() :
获取一个随机数,随机数的取值范围[0.0,1.0)