* java流程控制:<br /> * 分支: if-else \ switch<br /> * 循环: for\while\do-while<br /> * scala中删除了switch分支控制。<br /> * scala中流程控制:<br /> * 分支: if-else<br /> * 循环: for\while\do-while
块表达式
块表达式: 由{ }包裹的一段代码称之为块表达式。
块表达式有返回值,返回值是{ }中最后一个表达式的结果值,看下面代码注释内容。
[ for\while\do-while中的{ }不认定为块表达式 ]
package com.atguigu.chapter04object $01_Block {def main(args: Array[String]): Unit = {// 块表达式val r = {println("..............")val x =10val y=20val z = x+y//如果这句在块表达式最后,那么就没有返回值,因为这个语句是一个赋值过程,而未含有具体结果z // z已经获得具体值,可以返回}30}}
if语句
/*
【掌握】
分支控制:
条件匹配成功之后不会再运行其他语句。
1、单分支: if(..){…}
2、双分支: if(..){..} else {..}
3、多分支: if(..){..} else if(..){..}… else{…}
scala if分支控制有返回值,返回值为符合条件的分支的{ }中最后一个表达式的结果值[块表达式的值]
/
package tcode.chapter04object $02_If {def main(args: Array[String]): Unit = {val a = 10//单分支,块表达式val r = if(a%2==0){println("a是2的倍数")10}println(r)//双分支if(a%3==0){println("a是3的倍数")}else{println("a不是3的倍数")}//多分支val t = if(a%4==0){println("a是4的倍数")10}else if(a%6==0){println("a是6的倍数")30}else{if(a%5==0){println("a是5的倍数")40}else{println("其他...")50}}println(t)// t=40}}
for循环
| for两个重要方法 | |
|---|---|
| to:左右闭合 | until:左闭右开 |
| tart.to(end) 1.to(10) start to end 1 to 10 |
start.until(end) 1.until(10) start until end 1 until 10 |
| 语法 | |
| for循环基本语法: for( 变量 <- 数组/集合/表达式 ) { …. } | |
| 守卫: for( 变量 <- 数组/集合/表达式 if(布尔表达式) ) { …. } 使用条件:if语句前不能有其他语句 |
|
| 步长: for(变量<- start to/until end by step) {..} 说明:如:by 2 则每隔两个数字循环,1,3,5,7… |
|
| 嵌套for: for( 变量1 <- 数组/集合/表达式 ;变量2 <- 数组/集合/表达式 ; .. ){…} | |
| 嵌套+守卫: for( 变量1 <- 数组/集合/表达式 if(布尔表达式) if(布尔表达式) ..;变量2 <- 数组/集合/表达式 if(布尔表达式); .. ){…} | |
| yield表达式: for( 变量 <- 数组/集合/表达式 ) yield {…} 说明:样for的{}拥有返回值 |
|
| 引入变量:for(变量名<- 集合/数组/表达式;变量3=值;变量2<- start to 变量3) |
/*
for循环两个重要方法:
* for循环基本语法: for( 变量 <- 数组/集合/表达式 ) { .... }<br /> * 守卫: for( 变量 <- 数组/集合/表达式 if(布尔表达式) ) { .... }<br /> * 步长: for(变量<- start to/until end by step) {..}<br /> * 嵌套for: for( 变量1 <- 数组/集合/表达式 ;变量2 <- 数组/集合/表达式 ; .. ){...}<br /> * 嵌套+守卫: for( 变量1 <- 数组/集合/表达式 if(布尔表达式) if(布尔表达式) ..;变量2 <- 数组/集合/表达式 if(布尔表达式); .. ){...}<br /> * yield表达式: for( 变量 <- 数组/集合/表达式 ) yield {...}<br /> */
package tcode.chapter04object $03_For {def main(args: Array[String]): Unit = {// for循环基本语法: for( 变量 <- 数组/集合/表达式 ) { .... }for(i<- 1 to 10){println(i)}println( "*" * 100 )//for循环嵌套iffor(i<- 1 to 10){//println(s"i*i=${i*i}")if(i%2==0){println(i)}}println("+"*100)//守卫for(i<- 1 to 10 if(i%2==0)){println(i)}//步长for(i<- 1 to 10 by 2){println(s"i=${i}")}//嵌套forfor(i<- 1 to 10){if(i%2==0){for(j<- i to 10){println(s"i+j=${i+j}")}}}println("-"*100)for(i<- 1 to 10 if(i%2==0); j<- i to 10 if(j%4==0)){println(s"i*j=${i*j}")}//yield表达式val r = for(i<- 1 to 10) yield {println(s"i=${i}")i * i}println(r)(1 to 10).foreach(println(_))}}
while
与java完全一致
package tcode.chapter04object $04_While {//【掌握】//scala while与do-while完全一样def main(args: Array[String]): Unit = {var a = 11while ( a<=10 ) {println(s"a=${a}")a=a+1}var b=11do{println(s"b=${b}")b = b+1}while(b<=10)}}
BreakAndContine(了解)
/*
break: 结束整个循环
continue: 跳出当前循环,开始下一次循环
scala中没有break与continue关键字。
scala实现break:
1、导包: import scala.util.control.Breaks._
2、通过breakable、break方法实现
scala实现continue:
1、导包: import scala.util.control.Breaks._
2、通过breakable、break方法实现
/
breakable相当于try\catch
break方法其实就是java中的抛异常
package tcode.chapter04import scala.util.control.Breaks._object $05_BreakAndContinue {def main(args: Array[String]): Unit = {//实现breakvar a=1try{while(a<=10){if(a==5) throw new Exceptionprintln(s"a=${a}")a=a+1}}catch {case e:Exception =>}//实现continuea=1while(a<=10){try{if(a==5) throw new Exceptionprintln(s"a=${a}")a=a+1}catch {case e:Exception => a=a+1}}println("*"*100)//scala break实现a=1breakable( {while(a<=10){if(a==5) break()println(s"a=${a}")a=a+1}} )//continuea=1while(a<=10){breakable({if(a==5) {a=a+1break()}println(s"a=${a}")a=a+1})}}}
迭代器遍历:
(1 until 10).foreach(index=>{…})
