Java分支和循环语句及方法的使用
1 分支语句No3
顺序语句
分支语句
循环语句
分支语句满足某种条件则执行某一部分,满足另一种条件则执行另一部分
简单分支语句:
if(boolean类型表达式){
语句
}
如果小括号中的表达式成立,则执行大括号中的语句
(大括号如果不加,则仅执行if下的一句语句,一般大括号都会加上)
if~else语句:
if(boolean类型表达式){
语句1
}else{
语句2
}
如果小括号中的表达式成立则执行语句1,否则执行语句2
if ~ else if ~ else
if(表达式1){
语句1
}else if(表达式2){
语句2
}else if(表达式3){
语句3
}else{
语句4
}
如果表达式1成立则执行语句1,否则如果表达式2成立则执行语句2,否则如果表达式3成立则执行语句3,否则执行语句4
这里的else if可以有0到多个
注意:在if else语句中声明的局部变量,生命周期仅限于包含着它的最近的那对大括号(之后学习的循环语句、异常处理语句都是如此,主要看在哪个大括号里声明的)
分支语句可以嵌套,if的语句块中还可以有if ... else,else中也可以有
switch 语句 switch表示切换、跳转,根据小括号中的变量去跳转;case表示情况,表示当变量等于case后面这个常量的情况下,执行冒号后面跟着的语句,case 可以有一到多个;default表示默认,如果变量不等于任何一个case后面的常量,那么就执行default后的语句。
switch(变量){
case常量1:语句1;break;
case常量2:语句2;break;
case常量3:
语句3;
break;
default:
语句0;
break;
}
注意:
1、实际开发中语句后面一定要跟上break;
2、default 可以不写
3、小括号中的变量类型有限制,在JDK1.7之前只能用int、short、byte、char,(之后可以用String,但一般不用)
4、switch效率比if高一些,但只能处理简单的值相等的判断
5、break如果不加,会继续往后执行,直到遇到break
三目运算符
表达式1?表达式2:表达式3
表达式1是布尔类型的,右边的问号表示判断它是true还是false,如果是true,整个表达式返回表达式2,如果是false整个表达式返回表达式3
三目一般适用于两个分支的情况。
如果非要用于两个以上分支的话,可以用嵌套的方式完成,但不推荐这样做
转义符
回车(return) '\r' 13
换行(nextLine) '\n' 10
(在windows中执行换行动作用\r\n;在linux中执行换行动作用\n)
制表(tab) '\t' (可以用来对齐打印的文字)
双引号 '\"' (反斜杠+双引号表示双引号字符)
单引号 '\'' (反斜杠+单引号表示单引号字符)
反斜杠 '\\' (两个反斜杠表示一个反斜杠)
运算符的优先级
循环语句
【一般用于确定循环次数的循环操作】
for(表达式1;表达式2;表达式3){
语句
}
表达式1 在循环开始前执行一次,一般用于初始化
表达式2 循环条件,一般为boolean类型,为true则循环继续,为false则循环终止(不写则表示一直为true)
表达式3 每次循环在语句执行完后执行,一般用于对循环条件进行变更
语句 循环执行的语句,每次表达式2为true,则执行一次语句
循环体中可以进行任何操作,比如可以放入分支语句
在for循环小括号()表达式1中声明的变量,生命周期、作用范围到整个循环结束
在for循环大括号{}循环体中声明的变量,生命周期更短,仅限于单次循环
break打断,如果在循环中被执行,就会打断所在的所有循环
continue继续,如果在循环中被执行,会打断所在的当次循环,继续下一次循环【结束本次循环,直接进入下一次循环】
【退出多层循环】
扩展语法:break、continue后可以跟上标记
ok:for(inti=0;i<5;i++){for(j=0;j<5;j++){
System.out.println(i+”………”+j);
Break ok; //加一个标记,跳出多重循环-------使用标记
}
}
【自定义退出标记:
Boolean flag = false;
for(int i=0;i<5;i++){for(j=0;j<5;j++){
System.out.println(i+”………”+j);
Flag = true; //控制外层循环是否结束
Break; //控制本层循环结束
}
If(flag){break;}
}
】
循环可以嵌套循环
如果在嵌套循环中执行了break或continue,它只会影响所在那层循环,不会影响外层循环
如果要影响外层循环,就在外层循环break,通过一个在外层循环声明的标记变量,让内层循环通知外去环打断
(break 有label特性可以直接打断外层循环,但一般不使用)
for(;;)死循环
往往会在循环体中进行if判断,如果满足某种条件,就break
【一般用于不确定循环次数的循环操作】
while(条件){
语句
}
当条件为true时,不停地执行语句
do...while语句
do{
语句
}while(条件);
和while逻辑一样,但是会先执行语句,再判断。
do...while在任何情况下至少执行一次语句
while语句也可以死循环
while(true){
...
}
注意:for循环和While循环是可以相互替换的
【while(a>0){} for(;a>0){}】
使用for循环实现死循环:for(;;){}
2:C语言中支持goto关键字的使用
初学:
疯狂Java讲义
Head First Java
有基础:
Thinking in Java
方法(函数)
f(x)=x+1 数学函数f的定义
f(1)=1+1=2 数学函数f的调用、使用
f(10)=10+1=11 数学函数f的调用、使用
g(x,y)= x + y 数学函数g的定义
g(500,500)=500+500=1000 数学函数g的调用、使用
g(100,900)=100+900=1000 数学函数g的调用、使用
Java中的方法(函数)的定义和使用
定义:
[修饰符] 返回类型 方法名(参数类型 参数1,参数类型 参数2...){
语句
return值;
}
(修饰符暂时都用public static)
调用:
变量 = 方法名(实际的参数)
调用这个方法,会执行方法定义时的逻辑,并将返回值返回出来,可以
用一个变量将方法返回的值保存起来(将方法返回的值赋给一个变量)
注意:方法调用时传入的参数要和定义的时候的参数匹配,或者说实参
要和形参匹配
定义时的参数称为形参(形式参数),调用时传入的参数称为实参
(实际参数)
注意:方法定义时return的值要和声明的返回类型一致
方法调用时会把实参的值赋给形参
(参数类型不一定匹配、返回类型也不一定,具体规则参照水杯、水桶)
方法定义时的返回类型可以是void,表示不返回任何值;(但是返回类型
位置不能什么也不写,不返回也得写上void)
在void的情况也可以return,但是return后不跟任何的值
一旦在方法中执行了return,return后面的语句都不会执行
方法的重载
同一个类中方法同名但参数列表不同
参数列表不同,指参数个数不同或参数类型不同或参数顺序不同
test(int i) test(int i,int j) 个数不同
test(int i) test(double d) 类型不同
test(int i,double d) test(double d,inti) 参数顺序不同
(返回类型无视)
重载案例:PrintStream的println、print系列重载方法
println("hello")
println(1)
println('h')
println()....
这样的设计让使用者更方便
递归方法:方法自己调用自己
1、层层递进
2、归于出口