zoukankan      html  css  js  c++  java
  • Scala简介

    package com.zy
    
    object test {
      //能简则简
      var bb=100
      def main(args:Array[String]):Unit={
        println("hello scala")
        AAA.show()
        println(bb)
    
        //var和val
        var value1=100//自动推断类型
        var value2:Int=100//自己规定
    
        val  value3=200//同java常量
        val  value4="你好"
    
        //----------------
        value1=200
        println(value1)
        //value3=800   编译报错
    
    
        var result=1.to(10)
        println(result)//Range(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
        println(1 to 10)//结果同上
        println(1 until 10)//Range(1, 2, 3, 4, 5, 6, 7, 8, 9)
    
    
        var  value5="ABC".toLowerCase()
        println(value5)
        //如果括号没有副作用【理解如果该方法在此次使用中不需要填入参数,那么小括号可以省略】
        var value6="EHPD".toLowerCase
        println(value6)
    
    
        println(!true)//false
        println("he"+"llo"=="hello")//true
        println(1==1.0)//true   同Java
    
    
        //if表达式有值
        var result1=if (3>1)
          {
            println(111)
            1+2
            50+60//默认最后一行为返回值
          }
        else 200
        println(result1)//110
    
        var s=0
        if (3>1) s=100 else s=200
        println(s)
    
    
        var result2:Any=if (3>1) "adult" else 0
        println(result2)
    
    
        //理论上不满足条件,又没有else,会输出unit---表现形式()
        val result3=if (5<4) "你好"
        println(result3)//输出   ()
    
        //带c风格
        printf("Hello,%s! You are %d years old", "Fred", 42)//Hello,Fred! You are 42 years old
    
    
        //接收控制台输入
        //var name=readLine("请输入你的名字")
        //println(name)
    
    
        println()
        var  sum=0;
        while (sum<10){
          println("a")
          sum+=1//不能sum++
        }//a1a2a3a4a5a6a7a8a9a10
    
        var sum2=0
        do {
          println("b")
          sum2+=1
    
        }while(sum2<10)//b1b2b3b4b5b6b7b8b9b10
    
    
    
        for(i <- 1 to 9; j <- 1 to i) {
          var ret = i * j
          print(s"$i*$j=$ret	")//不带$默认都是字符串,带$表示取值
          if(i == j) {
            println
          }
        }
    println()
        for(i <- 1 to 9; j <- 1 to i if i!=j) {//if相当于给内层循环增加了条件【循环守卫】
          var ret = i * j
          print(s"$i*$j=$ret	")//不带$默认都是字符串,带$表示取值
          if(i == j) {
            println
          }
        }
    
    
        println("")
        println("------------------------------")
        import scala.util.control.Breaks._//导包的位置不定
        var n = 15
        breakable {
          for(c <- "Spark Scala Storm") {
            if(n == 10) {
              println()
              break
            } else {
              print(c)
            }
            n -= 1
          }
        }
    
    
    
    
        println("-----------------------------")
        //关键词yield记录迭代关键值--记录在一个数组中
         val ints = for (i<- 1 to 10 ) yield(i%2)
        println(ints)//Vector(1, 0, 1, 0, 1, 0, 1, 0, 1, 0)
        val array = for (i<- Array(1,2,3,4,6) ) yield(i+1)
        //返回一个数组 [I@52af6cff
        println(array)
        for (a<- array){
          println(a)//2
                    //3
                    //4
                    //5
                    //7
        }
        //让小弟yield在记录关键值后进行二次加工
    
    
    
        //异常的处理
        try{
    
          //1/0
          var arr=Array(1,2,3)
          println(arr(9))
        }catch {
          case e:ArithmeticException=>{println("除数不能为零"+e.getMessage)}
          //case e:Exception=>{println("有异常	"+e.getMessage)}
          case _=>{println("如果在异常列表找不到,就走这个case")
    
          }
    
        }
    
        finally {
          println("this is 必须要执行的语句")
        }
    
      }
    
    }

    函数

    package com.zy
    
    import scala.io.Source
    
    object test2 {
      //简约而不简单
      def main(args: Array[String]): Unit = {//Unit无返回值
        val vv= myFunction("小明",30)
        println(vv)
    
        val xxx = myFunction2("xxx")
    
        println(xxx)
    
        aa//无参函数
        //val aa=0//与函数名称相同时会报错,因为函数无参数时括号可省略
    
    
        val i = myFunction4(5)
        println("5的阶乘"+i)
    
    
        myFunction9("如花",num=60,age=90)//未命名的参数是排在前面
    
        myFunction10("aa","bb","cc")
        //实际可变参数传入的是一个Array,但是我们不能传数组
        val arr=Array("hh","jj","kk")
        myFunction10(arr:_*)//逐个传入数组的每个元素
    
    
        myFunction11
    
    
      }
    
      def myFunction(name:String,age:Int): Int ={
        println(name+"	"+age)
        10//默认找最后一行当作返回值
        //return 20
        //println("abcd")
        //30//写在return后面虽然不报错但不会返回
    
      }
    
      //单行函数
      def  myFunction2(name:String):Unit=println("你好")//返回值为()
    
      def aa():Unit={
        println("我是aa")
      }
    
      def myFunction3()={
        10
      }
    
      //递归函数必须指定返回值,不能让其自动推断
      def myFunction4(num:Int):Int={
        if (num==1){
          1
        }else{//在方法内部自己调用自己
          num*myFunction4(num-1)//根据阶乘的公式,推出来的代码逻辑【数学】
        }
      }
    
      def  myFunction5()="哈哈"//这个函数的返回值是String
      def  myFunction6(){"你好"}//这个函数无返回值
      def myFunction7():Unit={10}//这个函数无返回值
      def myFunction8()=println("haha")//这个函数无返回值
    
    
      //默认参数
      def  myFunction9(name:String,age:Int=100,num:Int=20): Unit ={
        println(name+"	"+age+"	"+num)
      }
    
      //可变参数【只允许最后一个参数可变长度】(0-n)
      def myFunction10(names:String*): Unit ={
        for (a<- names){
          println(a)
    
        }
    
      }
    
    
      //懒---褒义词--提升称许性能,节约资源---用到时才初始化
      def myFunction11():Unit={
      lazy val txt=Source.fromFile("C:\Users\a\Desktop\abc.txt").mkString
        println(1)
        println(1)
        println(1)
        println(1)
        println(txt)//没有这一句时不初始化,文件都不会去找
      }
    }
  • 相关阅读:
    Spring Boot邮件功能
    jenkins自动部署
    spring boot定时任务解析
    类的加载classload和类对象的生成
    排序算法
    Robbin负载均衡
    ActiveMQ消息中间件
    hystrix熔断器
    css3整理--calc()
    css3整理--media
  • 原文地址:https://www.cnblogs.com/qfdy123/p/11417770.html
Copyright © 2011-2022 走看看