【scala】 scala 条件控制 和异常处理(二)

时间:2022-07-03 01:09:35

1.scala 变量定义 ,var val 区别。

var 定义可变变量

val 定义不可变变量,scala 推荐使用。相当于Java的final 变量.

scala中包含的基本数据类型详情如下表所示:

 

 

序号 基本类型 增强类型 大小 取值范围
1 Byte RichByte 8-bit -128 ~ 127
2 Char RichChar 16-bit 0 ~ 65535
3 Short RichShort 16-bit -32768 ~ 32767
4 Int RichInt 32-bit -2^31 ~ 2^31 -1
5 Long RichLong 64-bit -2^63 ~ 2^63 -1
6 Float RichFloat 32-bit  
7 Double RichDoube 64-bit

2.scala 条件控制 if else if  else 

3. for 增强和 yield类型推导

  to  ,until 遍历集合的区别

4.scala 异常处理

try catch {case ex: Exception=> e}finally{}

5. 可变参数方法定义  

参数类型*  *定义多个参数

6. def 方法定义的注意

def  方法名(参数):返回值={方法体}

返回值省略,默认 Any ,Any相当于java中的Object

 

object Control {

  def main(args:Array[String]): Unit ={
    val a=5
    // scala 尽量不用return,最后一个表达式的值 作为值返回
    val b = if(a<7){val c=a+1;c+3} else if (a==5) 5 else 3
    println(b)
    //数组初始化
    val c:Array[String]=Array("a","b","d")
    //变量定义, 变量名:变量类型
    val d:String = forAry(c)
    println(d)
    //求和
    val result= sum(23,32,32,32,32)
    println(" sum result :"+result)
    // 将整个区间作为参数序列来处理 :_*
    val newResult = sum(1 to 10:_*)
    println("sum newResult: "+newResult)
    //数组格式化输出 toBuffer
    println(yieldAry().toBuffer)
    println("--------------------")
    filter()
    //异常
    exception()
  }

  /**
    * 遍历数组
    * @param ary
    * @return
    */
  def forAry(ary:Array[String]):String={
       val newBuilder=new StringBuilder
      // to 是 i到 区间,包含开始和结尾
       for(i<-10 to ary.length-1){
         newBuilder.append(ary.apply(i))
       }
    // unit 是 0 到 length-1 之间
     for(i<-0 until ary.length){
      newBuilder.append(ary.apply(i))
    }

    //普通遍历
    for(a<-ary) println( a)
     newBuilder.toString()
  }

  /**
    * yield 关键字 推导生成新的数组
    * @return  Array[Int]
    */
  def yieldAry():Array[Int]={
     val ary :Array[Int]= Array(1,32,3,31,43)
       //until  从 0 到 ary.length-1 之间的下标
     for(i<-0 until ary.length){
        val d:Int=ary.apply(i)
        val e= d.*(122);
       // println(e)
     }
     //yield 类型推导为Array
     for(arg<-ary) yield arg *2

  }

  /**
    * 可变长参数定义 *
    * @param args
    * @return
    */
  def sum(args:Int*):Long={
    var result : Long=0
    //for 循环遍历
    for(arg<-args){
      result += arg
    }
    return result
  }

  /**
    * 数组过滤
     */
  def filter(): Unit ={
    //定義一個數組
    val ary =Array(12,2,12,43,2,12,1)
      //去重 过滤
    //保留符合条件的元素 _.%(2)==0 保留偶数,
    // map(_*2) 是各个元素乘以 2
    val a = ary.distinct.filter(_.%(2)==0).map(_*2)
    println(a.toBuffer)
    println(a.sum)//元素求和
  }

  /**
    * 异常处理
    */
  def exception():Unit={
    //定义一个定长的数组
    val ary = new Array[String](2)
    ary(0)="1234e"
    var it = -2
    try{
       it = ary(0).toInt
    }
   catch {
     case ex: FileNotFoundException => it = 0
     case ex: NumberFormatException => it = 12
     case ex:Exception => it = -3
   }finally {
      println(it)
    }
  }



}