Scala--2

package scala02

object Scala07_typeCast {
  def main(args: Array[String]): Unit = {
    //  TODO 隐式转换
    //    自动转换
    val b: Byte = 10
    var i: Int = b + 10
    val l: Long = b + 10 + 100L
    val fl: Float = b + 10 + 100L + 10.5f
    val d: Double = b + 10 + 100L + 10.5f + 20.00
    println(d.getClass.getSimpleName)

    //    把精度大的数值赋值给精度小的数据类型 会报错
    //      val d1:Float=3.5  ERROR
    val f: Double = 3.5f

    //    byte short char 不会相互转换
    //    val b1:Char=b error
    //    byte short char可以计算 int
    val b1: Byte = 10
    val b2: Byte = 20
    val i1: Int = b1 + b2

    val s: Short = 100
    val i2: Int = b1 + 2

    //    int和int相加
    val i3: Int = 1000
    val i4: Int = 1000
    val i5 :Int =i3+i4
    val i6: Int = b + s + 'a'
    println(i6)

    // TODO 强制类型转换
//    类型从大转小
    val d1:Double=10.5
    val l1: Long = d1.toLong
    println(l1)
//    如果想完成四舍五入效果
    (d1+0.5).
    val l2:Long = (d1+0.5).toLong
    println(l2)
//   TODO 数值类型和STRING类型转换
    val str:String="100"
    val int: Int = str.toInt
    println(int.getClass.getSimpleName)
    val int1:Int=100
    val string: String = int1.toString
    println(string.getClass.getSimpleName)
//    不能跨级转换
//    val int2:Int="100.5".toInt error
val int2:Int="100.5".toDouble.toInt
    println(int2)

  }


}

package scala03

object scala01_opera {
  def main(args: Array[String]): Unit = {
//    == 和 equals 作用一样 比较具体值大小
    val s1: String = new String("aaa")
    val s2:String=new String("aaa")
    println(s1.equals(s2))
    println(s1 == s2)
//    true true
//    比较地址值
    println(s1.eq(s2))

//    运算符本质就是方法
    1+1
    val i: Int = 1.+(1)
    println(i)
//    调方法的时候.可以省略
//    当方法中的参数只有一个的时候 括号也可以省略

  }

}

package scala04

object scala01_for_if_else {
  def main(args: Array[String]): Unit = {
    //    三元运算符
    val age: Int = 10
    val str1: String = if (age > 18) "成年" else "未成年"

  }

}
package scala04

import scala.collection.parallel.immutable

object scala02_for {
  def main(args: Array[String]): Unit = {
    //    for
    //    scala中的循环变量i 不能声明到for之外
    for (i <- 0 to 5) {
      println(i)
    }
    println("====================================")
    //   不包含5
    for (i <- 0 until (5)) {
      println(i)
    }
    //    循环本质
    //    f范围内的元素放入一个集合中 ,遍历集合
    val inclusive: Range.Inclusive = 0.to(5)
    for (elem <- inclusive) {
      println(elem)
    }
    //    for 循环的补充语法
    //    循环守卫
    for (i <- 0 to 5) {
      if (i < 3) {
        println(i)
      }
    }
    println("====================================")
    for (i <- 0 to 5 if i < 3) {
      println(i)
    }
    println("====================================")
    //    循环步长
    for (i <- 0 to 10 by 2) {
      println(i)
    }
    for (i <- 0.0 to 10 by 0.5) {
      println(i)
    }
    println("====================================")
    //    嵌套循环
    for (i <- 0 to 3){
      for (j<-0to 4){
        println(s"$i*$j=${i*j}\t")
      }
      println()
    }
    for (i<-0 to 3;j<-0 to 4){
      println(s"$i*$j=${i*j}\t")
      if (i==4){
        println()
      }

    }
    println("====================================")
//    引入变量
    for (i<-0 to 5 ;a=1+i){
      println(a)
    }

//    循环返回值 yield 关键字进行标识
val unit: Unit = for (i <- 0 to 5) {
  println(i)
  //}
  //val ints : immutable.IndexedSeq[Int]=for
}
//    倒序打印
for (i <-0 to 5 reverse){
  println(i)
}
    println("====================================")

    for (i <-0 to 5 by -1){
      println(i)
    }

  }

}

 

package scala04

import scala.collection.parallel.immutable

object scala02_for {
  def main(args: Array[String]): Unit = {
    //    for
    //    scala中的循环变量i 不能声明到for之外
    for (i <- 0 to 5) {
      println(i)
    }
    println("====================================")
    //   不包含5
    for (i <- 0 until (5)) {
      println(i)
    }
    //    循环本质
    //    f范围内的元素放入一个集合中 ,遍历集合
    val inclusive: Range.Inclusive = 0.to(5)
    for (elem <- inclusive) {
      println(elem)
    }
    //    for 循环的补充语法
    //    循环守卫
    for (i <- 0 to 5) {
      if (i < 3) {
        println(i)
      }
    }
    println("====================================")
    for (i <- 0 to 5 if i < 3) {
      println(i)
    }
    println("====================================")
    //    循环步长
    for (i <- 0 to 10 by 2) {
      println(i)
    }
    for (i <- 0.0 to 10 by 0.5) {
      println(i)
    }
    println("====================================")
    //    嵌套循环
    for (i <- 0 to 3){
      for (j<-0to 4){
        println(s"$i*$j=${i*j}\t")
      }
      println()
    }
    for (i<-0 to 3;j<-0 to 4){
      println(s"$i*$j=${i*j}\t")
      if (i==4){
        println()
      }

    }
    println("====================================")
//    引入变量
    for (i<-0 to 5 ;a=1+i){
      println(a)
    }

//    循环返回值 yield 关键字进行标识
val unit: Unit = for (i <- 0 to 5) {
  println(i)
  //}
  //val ints : immutable.IndexedSeq[Int]=for
}
//    倒序打印
for (i <-0 to 5 reverse){
  println(i)
}
    println("====================================")

    for (i <-0 to 5 by -1){
      println(i)
    }

  }

}

 

package scala04

import scala.util.control.Breaks
import scala.util.control.Breaks.{break, breakable}

object scala04_break {
  def main(args: Array[String]): Unit = {
    //scala中使用breaks体系进行循环终止
    Breaks.breakable(
      for (i <- 0 to 10) {
        if (i == 5) {
          Breaks.break()
        }
        println(i)
      }


    )
//    简化写法
    breakable(
      for (i <-0 to 10){
        if(i==5){
          break()
        }
        println(i)
      }
    )
    println("===================================================")
//    scala 中循环终端原理就是使用异常处理体系
    try {
      for (i <- 0 to 10) {
        if (i == 5) {
          //        通过抛一场循环打断
          throw new RuntimeException
        }
        println(i)
      }
    }catch {
      case e:RuntimeException => println ("循环终端")

    }finally {
      println("关闭资源....")
    }



  }

}

你可能感兴趣的:(scala,开发语言,后端,hadoop)