zoukankan      html  css  js  c++  java
  • Scala---初探

    scala语言量大特性:面向对象+函数式编程

    Scala的类型

      val指的是引用不可变,而不是值。

    值类型

      • Byte
      • Char
      • Short
      • Int
      • Long
      • Float
      • Double

    引用类型

      • String
      • 自定义类型

    条件表达式

    val y=if(x>1) 1 else if(x=1) 1.2 else "1"

     可以返回不同类型,这是java 做不到的

    val a= if(x<1) 1

    最后a= AnyVal=(),在scala中所有类型的基类伟AnyVal,类比java中的Object对象

     

    循环

      1 to 10 等同于1.to(10)  返回一个1-10的Range对象

      for(i <-1 to 10){

        println(i)

      }

      循环访问一个数组

      val arr = Array("java","scala","C++")

      for(i <- arr){

        println(i)

      }

      

      循环嵌套

      for(i <- 1 to 3;j <- 1 to 3 if(i!=j) ) println(i*10+j)  输出结果是除了不满足条件的i j不输出之外其余的都会输出,这是不同于java的地方,java中如果循环中某一次条件不满足,那么就会直接跳出循环

      

      val res= for(i<-1 until 10) yield i

      res组中结果为:Vector(1,2,3,4,5,6,7,8,9)

    需要注意的是所有的数组类型、映射元组等两个包里面都有。一种是immutable一种是mutable,前者一旦初始化不能在变,后者可以变

    数组

    定长数组


    val arr1 =new Array[Int](3)或者val arr1 = Array(1,1,1)

    初始化之后arr1:Array[String] = Array(0,0,0)

    println (arr)将打印出引用,而不知数组的内容,如果要打印出数组的内容可以println(arr.toBuffer)

    变长数组

    val arr3=ArrayBuffer[Int]()

    数组追加定长元素:arr3 +=(2,3,4)

    数组追加变长数组:arr3 ++= ArrayBuffer(1,2,3)

    数组中插入数据:arr3.insert(0,1,2,3),在第零个元素前面插入1,2,3

    数组删除元素:arr3.remove(2,3),在下标为2的元素开始删除,删除三个元素;

     

    映射

      实际上就是一个map,常见的声明方式有下面几种:

      val map1 =Map("scala"->1,"java"->2, "python"->3)

      val map2 =Map(("scala",1),("java",2),("python",3))

      获取Map的值:map1("scala")

      修改Map的值:map1(“scala”)=6  (前提是map被声明为可变的类型,也就是上面说的mutable)

      获取map的值:map1.getOrElse(“C”,-1),如果没有的话,就获取到一个默认值。

    元组

      元组就是用一组值,可以有不同的类型,而且可以嵌套,元组的下标是从1开始的,这是和数组不同之处。

      val t=("scala",100L,3.14, ("spark",1))

      读取: t._1        scala

          t._4._1   spark

    二元组数组转换成map

    val t = Array({"scala",1},{"spring",2},{"java",3})

    val maparr = t.toMap()

    集合三大类 sequence、set、map

    不可变list

      val list1 = List(1,2,3)

      前追加:val list2 = 0 ::list1

         val list3 = list1.::(0)

            val list4 = 0+:list1

         val list5 = list1.+:(0)

      后追加:val list6 = list1:+4

      合并:val list7 = List(5,6,7)

           val list8 = list1 ++ list7

           val list9 = list1:::list7

           val list10 = list1++:list7

    可变list

      val list1=ListBuffer(1,2,3)

      追加:list1+=4

           list1.append(5)

         val list2 = ListBuffer(6,7,8)

          list1++=list2

    不可变Set

      val set1 =new Hashset[Int]()

      val set2 = set1 +1

      val set3 = set2++ Set(2,3,4)

    可变Set

      val set1 = new HashSet[Int]()

      追加:set1+=1

        set1.add(3)

        set1 ++=Set(4,5,6)

      删除:

        set1-=1

        set1.remove(2)

    不可变Map

      val map1 = new HashMap[String,Int]()

      添加元素

        map1("scala") = 1

        map1+=(("java",2))

        map1.put("python",3)

      删除元素:

        map1-=java

        map1.remove(python)

      

      

  • 相关阅读:
    高级语言是面向用户的
    汇编语言指令是机器指令的符号化
    程序设计语言具有心理工程及技术
    语言的种类成分
    程序设计方法和过程
    程序设计的基本概念
    结构化程序设计与非结构化程序设计之分
    常见语言计算机语言
    语言的基础是一组记号和一组规则
    面向对象的基本概念
  • 原文地址:https://www.cnblogs.com/maxigang/p/9816978.html
Copyright © 2011-2022 走看看