Scala基礎語法介紹
阿新 • • 發佈:2018-12-29
1.變數的定義
注意:在scala中沒有static的概念,在object這個關鍵字修飾的類中所有的方法和屬性都是static的。這裡的object類叫做伴生類,目前不涉及。
例:
object Test01{ def main(args: Array[String]): Unit = { //使用val定義的變數是不可變的,相當於java中的final修飾的 val v1=1 //使用var定義的變數的值是可變的,在scala中鼓勵使用的是val var v2=2 //在定義變數的時候,也可以在變數名前提供型別,如何不提供預設的是型別推斷 val v3:String ="zzy" //自定義型別 val v4="jj" //型別推斷 } }
2.scala的資料型別
scala和java一樣有7中資料型別:byte、char、short、int、long、float、double和boolean,但是無包裝型別,還有String。
例:
object Test01 { def main(args: Array[String]): Unit = { val v1: Int = 1 val v2: Double = 1.1 val v3: Float = 1.1f val v4: Char = 'c' val v5: Boolean = true val v6: String = "zzy" val va7:String="""aaa \t\t0""" //三個引號表示特殊字元不轉義 val va8: Byte = 0 //注意,如果在上面確定變數的資料型別,在下面則不能修改 val value1=1 value1="aaa" //這裡會報出語法錯誤 } }
如以上的圖所示:
Any:是所有類的父類,包括值型別AnyVal和引用型別AnyRef
AnyVal :是所有值型別的父類,包括 Int,Double,Boolean,Unit 等等
AnyRef :是所有引用型別的父類,包括 Null
Null :是所有引用型別的子類, Null 也只有一個例項,是 null,相當於 java 中的 null,能賦值給任何引用型別變數,不能賦值給值型別變數
Nothing : Nothing
Unit :型別只有一個例項,是(),相當於 java 中的 void,沒有任何的實質意義(在定義方法的返回值的時候使用)
3.scala的基本操作符
算數操作符:+ - * / %
關係運算符:> >= <= == !=
邏輯運算:&& || !
位運算:& | ^ >> << >>>
物件比較:1==1 “zy”==“zy” (判斷值相等)
4. 關鍵字
5.控制流程語句
(1) 選擇結構
object Test01 {
def main(args: Array[String]): Unit = {
val v1=5
//有返回值的判斷語句(if-else)
val result1=if(v1>5)"true" else "false"
//返回值為()的判斷語句(if-else if -else)
val result2=if(v1>3) "true" else if(v1>5) "false" else ()
}
}
(2) 塊表示式
object Test01 {
def main(args: Array[String]): Unit = {
/**
* 塊中的最後一個表示式的值就是這個快的返回值。
* 就算是賦值表示式,也有返回值,是空,Unit。
*/
val x=5
val y=10
val result1={
if(x>y){
"true"
}else{
"false"
}
}
val result2={
2+2
}
}
}
(3) 迴圈語句
for:
object Test01 {
def main(args: Array[String]): Unit = {
//for 迴圈
//1 to 10
for(i<- 1 to 10){
println(i) //列印1 ~ 10
}
//1 until 10
for(i<- 1 until 10){
println(i) //列印1 ~ 9
}
//遍歷可迭代物件
val arrs=Array("aa","bb","cc")
for(item <- arrs){
println(item)
}
//在遍歷是對每一個元素進行操作
var array:Array[Int]=Array(1,2,3,4)
//將陣列中的每一個元素都*5
val collect=for(i<- array) yield i*5
}
}
注意:to 和 until 也是可以有第二個引數的,比如 1 to (10,3) 第二個引數表示步長
while:
var i=1
while(i<=9){
println(i)
//i++ //注意這兩句話是錯誤的,在scala中沒有++ --
i+=1
}