scala学习(2)-基本语法--for循环和if语句

上一篇博客我对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的函数吧。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值