1. 程式人生 > >Scala-Unit-2-Scala基礎語法1

Scala-Unit-2-Scala基礎語法1

一、Scala程式的開始->HelloScala

  這裡的操作如同java的helloworld程式,直接放程式碼!

object HelloScala{
    def main(args:Array[String]){
       println("HelloScala")        
    }  
}

  在命令列操作中輸入命令:

  scalac HelloScala.scala

  scala HelloScala

 

二、Scala的資料型別

  Scala與java相同,有八種基本資料型別:

  Byte/Char/Short/Int/Long/Float/Double/Boolean

  還有Unit型別(與java中void相似),表示無值,主要用於不返回任何結果的結果型別

  注意:Scala中沒有包裝類

 

三、Scala定義變數

  兩個關鍵字:val、var

  val:定義的變數值是不可變的

  var:定義的變數值是可變的

  eg.  val a:Long = 1    var b:String = "我很帥"

  注意:Scala編譯器會自動的推斷資料型別!!

  eg.  val a = 1 (a自動為Int型別)

      var s = "you are ugly" (s自動為String型別)

         val h = println("cool")  (h自動為Unit型別)

 

四、條件表示式(一下命令都是在windows命令列操作中執行的)

  if語句:

  val x = 2

  val y = if(x>0) 1 esle 2

  val m = if(x<0) -1 if(x>1) 1 else 0

  混合型別:

  val z = if(x>0) "true" else 1

  輸出語句為: z:Any = "true"

  注意:Any相當於Java中的object基類,它包含Anyval和AnyRef

       Anyval:包含scala所有型別、AnyRef:包含Scala clsaaes與Java classes

 

五、塊表示式

  相當於java中的程式快,在Scala中用{}包裹的一些列表達式及塊表示式,塊中最後一個表示式的值就是塊的值。

  可以在idea中建立Scala工程展示

  sbt版本:1.1.0  scala版本:2.11.8

  建立Scala類注意,kind型別選擇object

 

六、迴圈(一下是在Windows命令列操作中執行,其中”<-“相當於java中for迴圈變數的意思)

  val rs = 1 to 10  //Scala會建立一個包含從1到10的10個元素的陣列rs

  for (x <- rs) println(x)  //便利陣列rs,並輸出每個元素

 

  val arr = Array(1,3,5)  //建立不可變陣列arr,包含1,3,5三個元素

  for (i <- arr) println(i)  //便利陣列arr並輸出每個元素

 

  高階for迴圈:

  for(i <- 1 to 5 ;j <- 1 to 10 if i != j) print((10 * i + j) + " ")

  

  for(i <- 1 to 10) yield i*10    //關鍵字yield:生成一個新的集合

  val ab = for(i <- 1 to 10;if(i % 2 == 0)) yeild i

  

  注意:1 to 10  同 1.to(10) 表達的意思是一樣的,to是一個方法,在Scala中可以省略“.”

  1.to(10).map(_*100)    //建立一個元素為1到10的集合並將每個元素都乘以100

  map:取出元素  _:代表集合中的元素

 

七、運算子

  在Scala中,+、-、*、/、%的作用和Java中是一樣的,但特別的是他們都是方法

  eg.  1 + 2  和  1.+(2)  的結果是一樣的

object ScalaDemo2{
    def mian(args:Array[String]):unit={
          println(m1(1,6))
          println(m2(3,6))
    }

    def m1(a:Int,b:Int):Int={
        a+b
    }

    def m2(a:Int,b:Int):Int=a*b 
  
}