上一篇博客我对scala做了最基本的讲述吧,主要是我就知道那么多,哈哈,好啦,今天我们看看在任何语言中我们用的最多的两种语句吧。一猜就中,for和if语句。
当然开始之前我们还是说一下在scala中的变量的定义怎么来。
变量
在scala中如果要定义变量,我们通常有两种方式,如下:
var count0 = 0
var name0 = ""
var num0 = 0.111
val count1 = 0
val name1 = ""
val num1 = 0.111
在scala中,var表示的是可变的变量,也就是我可以取做count0+=1的操作,但是count1 += 1就是不行的,编译的时候就会报错,切忌这一点,其他的话,scala他会自动识别数据类型,例如count0就是Int类型,name0就是字符串类型,num0就是double类型的。
if语句
if
其实if语句和java的if语句几乎没什么差别,要说差别的话,可能就是在scala里边一句话的结束是不需要“;”的,我能想到的也就是这个了。来看一下例子。
@Test
def testIf(): Unit = {
val flag = true
if (flag) {
println("flag::::" + flag)
}
//flag::::true
}
if…else
其实这也没什么好说的啦,直接上代码更直接
@Test
def testIfElse(): Unit = {
val flag = true
if (true) {
println("flag::::" + flag)
} else {
println("flag::::" + flag)
}
//flag::::true
}
if.. else if
@Test
def testIfElseAndIfElse(): Unit = {
val flag = true
if (true) {
println("flag::::" + flag)
} else if (false) {
println("flag::::" + false)
} else {
println("flag::::" + null)
}
}
在我们做判断的时候最常用的就是这三种了,但是我们发现其实这三种和别的语言的判断语句几乎是没什么差别的,要说差别,可能就是没有哪个”;”了吧。
循环语句
while语句
while的语句特点就是选判断,然后做处理,例如
@Test
def testWhile(): Unit = {
var count = 0
var sum = 0
while (count < 10) {
sum += count
count += 1
}
count = 10
while (count < 0) {
sum += count
count -= 1
}
println(sum)
}
他们两个的输出结果都是45没什么差别。
当然有了while就必须有doWhile
dowhile语句
@Test
def testDoWhile(): Unit ={
var count = 0
var sum = 0
do{
count += 1
sum += count
}while(count <10)
println(sum)
}
当然一样的是do…while的语句特点就是先处理在判断,这点要注意,其他的地方暂无处理。哈哈。
for
@Test
def testFor(): Unit ={
val numList = List(1,2,3,4,5,6)
for (a <- numList){
print(a)
}
//result:::123456
}
List是scala的集合,这点我们以后会讲,这里主要讲的是循环,看上去是不是超简洁。不想java里边,
for(int i=0; i<numList.size();i++){
system.out.println(a);
}
这还是简介了一部分,接下来还有更好玩的的。
for过滤器
@Test
def testForFilter(): Unit ={
val numList = List(1,2,3,4,5,6)
for (a <- numList
if a>2){
print(a)
}
//result:::3456
}
代码如上,我们如果需要做一些处理,就可以再()里边直接加判断条件,多过滤条件可以再a>2后边加分号继续做筛选,这样打印出来的信息就是3456,大家可以想想如果这个语句放到java中会事什么样子。
for yield
当然我们也可以吧上边筛选的结果存到一个集合里边,在java里边大家脑补一下代码吧,然后看看scala中如何做到的。
@Test
def testForYield(): Unit ={
val numList = List(1,2,3,4,5,6)
val refVal = for {a <- numList
if a>2;if a !=4
} yield a
for( a <- refVal){
println( "Value of a: " + a );
}
/*Value of a: 3
Value of a: 5
Value of a: 6*/
}
scala中有一个关键字yield,他会吧集合里边的数据存放到一个区域,然后我们就可以取出来。就像操作集合一样。
foreach
@Test
def testForeach(): Unit ={
val numList = List(1,2,3,4,5,6)
var content = ""
numList.foreach(a=>print(a))
println()
numList.foreach({ a =>
content += a
})
println(content)
/*
123456
123456*/
}
其实他和for很像,需要注意的是在foreach中如果只有语句代码,例如print(a),则什么也不需要做,但是如果需要在里边需要对变量做处理,则需要在each中加入大括号{},其他的一样啦,大家看看,有没有比java少一些代码。
小结
基本语句讲完了,其实也没什么内容,只是感觉他比java少了很多的代码,所以就吧这些代码弄出来,其他的倒也没什么。下一篇我们来看看scala的函数吧。