变量的声明和使用
使用val和var申明变量
例如:scala> val answer = 8 * 3 + 2
可以在后续表达式中使用这些名称
val:value 简写,表示的意思为值,不可变
要申明其值可变的变量:val
var:variable 简写,表示的变量,可以改变值
要申明其值不可变的变量:var
object VariableTest {
def main(args: Array[String]) {
//使用val定义的变量值是不可变的,相当于java里用final修饰的变量
val i = 1
//使用var定义的变量是可变得,在Scala中鼓励使用val
var s = "hello"
//Scala编译器会自动推断变量的类型,必要的时候可以指定类型
//变量名在前,类型在后
val str: String = "world"
}
}
条件表达式
object IfDemo1 {
val x = 1
def main(args: Array[String]): Unit = {
//声明一个变量
val x = 1
println("********************* 简单写法 ******************************")
/**
* 简单写法
*/
//判断x的值,将结果返回给y
//1:可以将条件表达式直接赋值给变量
//2:不需要return,最后一行数据即返回值
val y =
if (x > 0) {
1
} else {
-1
}
println(y)
println("********************* 混合类型的表达式 ******************************")
/**
* 混合类型的表达式
*/
val z = if(x>1) "success" else "error"
//打印z的值
println(z)
println("********************* 缺失else ******************************")
//如果缺失else,相当于 if(x>1) 1 else {}
val m = if(x>2) 1
println(m)
println("********************* if...else if ...else ******************************")
val k = if(x < 0) 0
else if(x >= 1) 1 else -1
println(k)
}
}
块表达式
object BlockExpressionTest {
def main(args: Array[String]) {
val x = 0
//在scala中{}中课包含一系列表达式,块中最后一个表达式的值就是块的值
//下面就是一个块表达式
val result = {
if (x < 0){
-1
} else if(x >= 1) {
1
} else {
"error"
}
}
//result的值就是块表达式的结果
println(result)
}
}
循环
使用for循环案例:
注意:
(*) <- 表示Scala中的generator,即:提取符
在for循环中,还可以使用yield关键字来产生一个新的集合
package scala.day01.loop
object ForTest1 {
val arr = 1 to 10
def main(args: Array[String]): Unit = {
println("------------------------方式1--------------")
for (item <- arr)
print( item+ " ")
}
println("---------------------方式2(输出取余3为0的数据,完整写法)--------------------")
for (item <- arr ){
if(item % 3 ==0)
print(item + " ")
}
println()
println("---------------------方式3(输出取余3为0的数据,简单写法)--------------------")
for(item <- arr if item % 3 == 0)
print( item + " ")
println()
println("-------------------方式4 循环倒序输出-------------------------------")
for (item <- 1 to 3 reverse){
print(item + " ")
}
println("-------------------方式5 循环嵌套输出九九乘法表")
for(i <- 1 to 9){
for (j <- 1 to i){
if (j ==1 ) println()
print(i * j + " ")
}
println("--------------------方式6 九九乘法表 简洁写法---------------------")
for (i <- 1 to 9 ;j <- 1 to i ){
if (j == 1) println()
print(i * j + " ")
}
println("*********************方式七 (嵌套循环时,任意指定某个循环倒序输出)********************")
for (i <- 1 until 9 reverse; j <- 1 to 5){
print (i + "--" + j + " ")
}
println("---------------------方式八-------------------------------------------")
for {
i <- 1 to 9
j <- 1 to i
} {
if (j == 1){
println()
}
print(i * j + " ")
}
println("-------------------------------------------for绑定中间的变量-------------")
var names = Array("tom","marry","mike","","")
for {
name <- names
tmpName = name.trim()
if tmpName.length > 0
}{
println(tmpName)
}
println("******基于已有的集合产生新的集合- yield*************")
var result = for (item <- 1 to 10 if item % 2 == 0 ) yield{
item * 2
}
print(result + " ")
}
}
跳出循环的两种方式
package scala.day01.loop
object BreakDemo {
var numbers = List(1,2,3,4,5,6,7,8,9)
def main(args: Array[String]): Unit = {
println("第一种循环")
var flag = true
for (item <- numbers if flag == true) {
println(s"Value of is: ${item}")
if (item == 5) {
flag = false
}
}
println("第二种循环")
import scala.util.control.Breaks._
breakable(
for (item <- numbers){
println(s"Value of is : ${item}")
if(item == 5){
break
}
}
)
}
}