Scala基础--关键字,数据类型,函数

857

基础语法

注意点

  • Scala 区分大小写
  • 类名类似于Java
  • 方法名命名类似于Java

老规矩,先上Hello World

object Demo {

  def main(args: Array[String]): Unit = {
    println("hello world")
  }

}

关键字

abstractcasecatchclass
defdoelseextends
falsefinalfinallyfor
forSomeifimplicitimport
lazymatchnewnull
objectoverridepackageprivate
protectedreturnsealedsuper
thisthrowtraittry
truetypevalvar
whilewithyield
-:==>
<-<:<%>:
#@

注释

注释也和Java类似

object Demo {
  
  /**
   * 注释
   * @param args
   */
  def main(args: Array[String]): Unit = {
    //注释
    println("hello world")
  }

}

导包

import scala.xml._

与Java不同的是,Scala导入包内的所有类用的是下划线而不是星号

import scala.collection.mutable.HashMap

导入类

import scala.collection.immutable.{TreeMap, TreeSet}

导入包中的几个类,用花括号括起来,而不必像Java中一样得写N行

数据类型

数据类型描述
Byte8位有符号值。范围从-128到127
Short16位有符号值。范围从-32768至32767
Int32 位有符号值。范围从 -2147483648 to 2147483647
Long64位有符号值。 从-9223372036854775808到9223372036854775807
Float32位IEEE754单精度浮点数
Double64位IEEE754双精度浮点数
Char16位无符号Unicode字符。范围由U+0000至U+FFFF
String字符序列
Boolean无论是字面true或false字面
Unit对应于没有值
Null空或空引用
Nothing每一个其他类型的子类型; 包括无值
AnyAny类型的超类型;任何对象是任何类型
AnyRef任何引用类型的超类型
def base(): Unit ={
    val a:Int = 1
    val b:Short = 2
    val c:Long = 2L
    val d:Float = 0.02F
    val f:Double = 0.223D
    val e:Char = '2'
    val g:String = "hello"
    //....
  }

变量

关键词var和val,var表示可变变量,val表示常量(一旦初始化,其值不可更改)

var lily:String = "Lily"
lily = "ss"
val bob:String = "Bob"
bob = "ss"//会便宜报错

访问修饰符

Scala 访问修饰符有private 、protected

函数

object Test {
   def main(args: Array[String]) {
        println( "Returned Value : " + addInt(5,7) );
   }
    
   //函数,类似于Java方法
   //高阶用法后面再说
   def addInt( a:Int, b:Int ) : Int = {
      var sum:Int = 0
      sum = a + b
      return sum
   }
}

Scala允许参数以非定义顺序传递

object Demo {
    
    def printS(a:Int,b:Int): Unit = {
        println(a)
        println(b)
  	}
    
    def main(args: Array[String]) {
        printS(b=3,a=4)
   }
    
}

结果

4
3

可变参数传参

object Test {
   def main(args: Array[String]) {
        printStrings("Hello", "Scala", "Python");
   }
   def printStrings( args:String* ) = {
      var i : Int = 0;
      for( arg <- args ){
         println("Arg value[" + i + "] = " + arg );
         i = i + 1;
      }
   }
}

结果

Arg value[0] = Hello
Arg value[1] = Scala
Arg value[2] = Python

默认参数值

这点和python差不多

def addInt( a:Int=5, b:Int=7 ) : Int = {
    a+b
}

调用的时候

  • 可以不传入参数
  • 传入的参数从左开始赋值,如果add(3),则输出值10