学习scala笔记

scala文件编译
    scalac
    *.scala-->*.class

windos安装scala环境
     1.下载
     2.安装
     3.配置环境变量

ubuntuan安装*dep
dpkg -i解压安装

scala基础
    java常量
    final String sre ="hello"
    scala常量
    val v =100 //常量
    var v 100 = 100 //变量

    一、scala数据类型
        Byte
        Char
        Short
        Int
        Long
        Float
        Double
        Boolean
        不区分基本类型和class,都是class,因此可以直接访问方法

    二、调用函数和方法
         import scala.math._ //通配符==*,该包下定义函数
         import math._ //同上
        >>sqrt(2) //直接使用,不需要从类调用静态方法,开平方
        >>pow(2,3) //2的三次方
        >>min(3,4) //取最小值
        >>:paste //可以粘贴代码

    三、scala控制结构和函数
        ---循环
            while
            for(i<-1 to 100) //to的范围是闭区间[]
            for(i<- 1 unit 100) //to的范围是半开区间[)
            for(ch<- "abc") println(ch)//便利字符

            //scala没有break和continue语句
             1.使用boolean变量
             2.嵌套函数

        ---高级循环
            for(i<-1to 3;j<-1 to 3) print(i*j)//双重循环
            for(1<-1 to 3;j<-1 to 3 if i == j) println("i*j")//带条件的双重循环
            for(i<-1 to 3;from = 4-i;j<-from to 3) println(i*j)//借助变量
        ---函数
            //方法是在对象上,而函数不是
            //函数定义指定名称、参数和body
            //必须指定参数类型

            定义函数
            def Holloword()={
                println("hello world")
            }//无返回值
            def add(a:Int,b:Int):Int={
                var res = a+b
                 res//最后的表达式是函数的返回值
            }//有返回值
            //递归函数必须有返回值
            def fac(n:Int):Int={
                if(n<1) 1
                else n * fac(n-1)
            }
            //默认参数和命名参数
            def prefixStr(str:String,left:String="[")={
                var res = left + str
                println(res)
            }

            //变长参数
            def sum(args:Int*):Int={
                var r = 0
                for(arg<-args)
                    r+=arg
                r
            }
            val s = sum(1,2,3,4,5) //right
            val s = sum(1 to 5) //error
            val s = sum(1 to 5:_*) //right

            def sayHi(names:String*){
                for(name<-names)
                    println("hi, "+name)
            }


    四、scala异常处理和处理延时
        --Procedures 过程
            //过程和函数很像,没有返回值(其实是Unit),没有=指定
            def box(s:String){
                var border = "-"*s.length+"--\n"
                println(border+"|"+s+"|\n"+border)
            }

            def box(..):Unit={

            }

        ---Lazy Values
            //延迟初始化变量知道首次被访问

            lazy val r = scala.io.Source.formFile("x").mkString

        ---Exception 
            //scala没有被检异常,不用声明抛出语句
            //throw表达式的类型是Nothing,ifelse的类型不能是Nothing,因此就是不为Nothing的分支类型
            try{
            ...
            }catch{
                case_:MalformedURLException=>//不适用异常对象
                case ex:IOException => ex.printStackTrace()
            }finall{
             println("over")
            }

    五、scala数组相关操作
        ---定长数组
            >>val num = new Array[Int](10)//Array--声明数组 []--声明类型 ()--声明长度
            num: Array[Int] = Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
            >>val str = new Array[String](10)
            str: Array[String] = Array(null, null, null, null, null, null, null, null, null, null)
            >>val dou = Array[Double](10)
            dou: Array[Double] = Array(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
            //推断类型,有值不需要new
            val s = Array{"hello","world"}
            //使用()而不是[]访问数组
            s(1)


        ---变长数组(数组缓冲区)
            //初始化为0
            import scala.collection.mutable.ArrayBuffer
            val b = ArrayBuffer[Int]()
            //在末端添加一个元素
            b+=1
            //追加多个元素
            b+=(1,2,3)
            //追加一个集合
            b+=Array(2,3,4)
            //移除最后的5个元素
            b.trimEnd(5)
            //在“2”之前插入6
            b.insert(2,6)
            b.insert(2,78,9)
            //移除索引值为2后面的一个元素
            b.remove(2)
            //移除索引值为2后面的3个元素
            b.remove(2,3) 
            //将数组缓冲区编程数组
            b.toArray()
            //将数组转化为缓冲区
            b.toBuffer

        ---遍历数组和缓存区
            for(i<-0 until a.length)
              println(i +":"+a(i))
            //step 2
            0 until (a.length,2)
            //反序
            (0 until 10).reverse
            //遍历输出
            for(ele<-a)
              println(ele)
            //不修改原数组,产生新数组
            val a = Array(2,3,4)
            val r = for(ele<-a) yield 2*ele
            for(e<-a if e%2==0)yield 2*e

            //数组变换方法
            a.filter(_%2==0).map(2*_)
            //常用算法
            a.sum //
            a.max
            b.sorted(a)//

            + //操作一个值
            ++ //集合,数组
            = //改变原缓冲区,否则原缓冲区不变,生成新的buf
            : //以:结尾通常是前导操作
            - //
            /: //左包含 (1,2,3) (3)(_-_)
               //3-1-2-3=-1

            :\ //右包含 (1,2,3) (3)(_-_)
               //
   六、eclipse安装与卸载scala环境
        ---eclipse卸载scala环境
            1.eclipse-->help-->install new softwore
            2.already installed..
            3.进入installed software
            4.点击scala ide for eclipse
            5.点击uninstall ...
            6.重启eclipse
        ---eclipse安装scala环境
            1.eclipse -->help -->eclipse marketplace
            2.输入scala搜索
            3.installe
            4.eclipse ide 插件
            5.yes
            6.重启

    七、scala和java互操作
        import scala.collection.JavaConversions.bufferAsJavaList
        import scala.collection.mutable.ArrayBuffer

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值