scala基礎

一些基礎

變量和常量
( 1)聲明變量時,類型可以省略,編譯器自動推導,即類型推導
( 2)類型確定后,就不能修改,說明 Scala 是強數(shù)據類型語言。
( 3)變量聲明時,必須要有初始值
( 4)在聲明/定義一個變量時,可以使用 var 或者 val 來修飾, var 修飾的變量可改變,
val 修飾的變量不可改。
(5) var 修飾的對象引用可以改變, val 修飾的對象則不可改變,但對象的狀態(tài)(值)卻是可以改變的。(比如:自定義對象、數(shù)組、集合等等)
注:反引號包括的任意字符串都可以作為變量名稱,關鍵字也可以

數(shù)據類型

1.java數(shù)據類型:Java有基本數(shù)據類型,而且基本數(shù)據類型不是真正意義的對象,即使后面產生了基本數(shù)據類型的包裝類,但仍然存在基本數(shù)據類型,所以Java語言并不是真正意思的面向對象。
注:java中基本類型和引用類型沒有共同的祖先。

2.scala數(shù)據類型:

1)一切數(shù)據皆對象,都是Any的子類
2)scala數(shù)據類型分為兩大類:數(shù)值類型(AnyVal)、引用類型(AnyRef),不管是值類型還是引用類型都是對象。
3)scala中StringOps是對Java中的String的增強
4)Unit對應java中的void,但unit是一個數(shù)據類型,只有一個對象就是(),而void是一個關鍵字
5)Null是一個類型,只有一個對象就是null。它是所有引用類型的子類
6)Nothing:所有數(shù)據類型的子類,主要用在一個函數(shù)沒有明確返回值時使用,因為這樣可以把拋出的返回值返回給任何變量或者函數(shù)。

   def test4() : Nothing = {
      throw new Exception
    }
    test4()

隱式類型轉換

1.自動提升原則:有多種類型的數(shù)據混合運算時,系統(tǒng)首先自動將所有數(shù)據轉換成精度大的那種數(shù)據類型,然后再進行計算。
2.把精度大的數(shù)值類型賦值給精度小的數(shù)值類型時,就會報錯,反之就會進行自動類型轉換
3.( byte, short)和 char 之間不會相互自動轉換。

    def test5(double: Double): Unit ={
      println(double)
    }
    val a:Char = 'A'
    test5(a)
圖片.png

強制類型轉換

var num : Int = 2.7.toInt
注:var n5:Int = "12.6".toInt 會出現(xiàn) NumberFormatException 異常

流程語句

if

val v:Any = if(true){
  "hehe"
}else{
  "haha"
}

for

scala為for提供很多特性,這些for循環(huán)特性被稱為for推導式或for表達式

def forDemo3(): Unit ={
  //1,3,5,7,9
  //by表示步長
  for (i<- 1 to 10 by 2){
    print(i)
  }
}
def forDemo4(): Unit ={
  for{
    i<- 1 to 3
    j<- 4 to 4+i
  }{
    println(i,j)
  }
  //等價于
  for (i<-1 to 3){
    for (j<-4 to 4+i){
      println(i,j)
    }
  }
}

def forDemo5(): Unit ={
  for (i <- 1 to 10 reverse){
    println(i)
  }
}
def forDemo6(): Unit ={
  val ints: Any = for (i<- 1 to 10) yield{
    i*2
  }
  println(ints)
}

break

  def breadDemo1(): Unit ={
   try{
     for (i<- 1 to 10){
       println(i)
       if (i == 5){
         throw new StackOverflowError
       }
     }
   }catch {
     case e => println(e)
   }
    println("結束結束")
  }
  def breakDemo2: Unit ={
    //breakable
    Breaks.breakable(
      for (elem <- 1 to 10){
        println(elem)
        if (elem==5){
          //break
          Breaks.break
        }
      }
    )
    println("循環(huán)結束")
  }
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容