scala學習02-類與對象,類型與操作
阿新 • • 發佈:2018-07-18
calculate bool 手動 精確 args () 字面量 run 前綴和
Scala類與對象,類型與操作
類的聲明
class MyClass{ private var num = 0 // 如果想要不對外開放,使用private,如果不寫,默認就是public //方法 //花括號前沒有=號,這種情況下,返回值類型一定是Unit,也就是空,所以如果想有返回值,一定要加=號 def add(b:Byte){ num += b } //如果計算表達式只有一行,可以省略掉花括號 def add1(b:Byte):Unit = num += b //有返回值的正常方法: def checkSum(): Int = ~(num & OxFF) + 1 }
Singleton對象
普通類中不能定義靜態成員,要定義靜態成員,就定義在一個單例類中
//定義位置:如果與普通類的名字一樣,那麽成為普通類的伴生對象,要定義在同一個源文件中
//類和伴生對象可以互相訪問其私有成員
object MyClass{
//類中的成員和普通類一樣
def calculate(s:String):Int = {
//TODO...
}
}
//類似於java中的靜態方法工具類
//使用方式也是類名點方法名
MyClass.calculate("a")
Scala程序運行
需要一個main函數
//在單例對象中定義main函數 object Summer{ def main(args:Array[String]){ //TODO.. } }
需要編譯執行
編譯:
scalac MyClass.scala Summer.scala
執行:
scala Summer of love
Application特質
讓單例對象繼承Application,然後把要寫在main函數裏面的函數體,直接寫在花括號中,不用寫main了,因為Application已經提供了
object Summer extends Application{
//TODO..
for(season <- List("fall","winter","spring"))
println(season)
}
基本類型
包括String和值類型。
值類型包括:
- Byte
- Short
- Int
- Long
- Char
- String
- Float
- Double
- Boolean
String 在java.lang包下
其他值類型在scala包下
可以直接用字面量,也就是,直接使用具體的值,而不需要使用引用。
符號字面量
//語法: ‘symbol
val a = ‘hello
a: Symbol = ‘hello
//例如方法:
def updateRecordByName(r:Symbol,value Any){
//TODO..
}
操作符和方法
+-*/ 這些符號其實都是方法名。
以上的幾個是中綴操作符
//例如:
val a = 3 + 5 // +號是中綴操作符,實際上是 3.+(5)
val b = "hello"
val c = b indexOf ‘o‘//這個indexOf也是中綴操作符,實際上是 b.indexOf(‘o‘)
任何方法都可以是操作符
除了中綴操作符,還有前綴和後綴操作符
//前綴操作符只有 + - ! ~ 四種
val a = -3.0 //前綴操作符,實際上Scala調用了(3.0).unary_- ,就是給操作符加上“unary_”的前綴
//如果給類定義了 unary_*方法,也不能使用*p
//後綴操作符,就是不用點和括號調用的不帶參數的方法,比如:
val s = "Hello"
val s1 = s toLowerCase//toLowerCase就成了後綴操作符了
數學運算和關系運算和位運算
與java類似
相等性判斷
直接使用 == 或者 !=
因為 == 已經被仔細加工過了,在大多數情況下都可以實現合適的相等性比較
//比較規則是:首先檢查左側是否為null,如果不是,調用左操作數的equals方法。而精確的比較取決於做操作數的equals方法定義。由於有了自動的null檢查,因此不需要手動再檢查一遍了。
scala> 1 == 1.0
res3: Boolean = true
scala> List(1,2,3) == null
res4: Boolean = false
基本類型有對應的富包裝類
富包裝類提供了更多的操作,通過隱式轉換可以直接使用
基本類型 | 富包裝 |
---|---|
Byte | scala.runtime.RichByte |
Short | scala.runtime.RichShort |
Int | scala.runtime.RichInt |
Long | scala.runtime.RichLong |
Char | scala.runtime.RichChar |
String | scala.runtime.RichString |
Float | scala.runtime.RichFloat |
Double | scala.runtime.RichDouble |
Boolean | scala.runtime.RichBoolean |
scala學習02-類與對象,類型與操作