變數與資料型別
變數宣告
// var | val 變數名 :變數型別 = 變數值
// 用戶名稱
var username : String = "zhangsan" //可變變數 :值可以改變的變數
// 用戶密碼
val userpswd : String = "000000" //不可變變數 :值一旦初始化后無法改變的變數
變數的型別如果能夠通過變數值推斷出來,那么可以省略型別宣告
變數初始化(強制)
var username // Error
val username = "zhangsan" // OK
識別符號
1. 數字,字母,下劃線,$
2. 數字不能開頭
3. 不能使用關鍵字或保留字
4. 區分大小寫
5. 長度沒有限制
Scala 可以使用兩種形式的標志符,字符數字和符號,
- 字符數字使用字母或是下劃線開頭,后面可以接字母或是數字,符號"\("在 Scala 中也看作為字母,然而以"\)"開頭的識別符號為保留的 Scala 編譯器產生的標志符使用,應用程式應該避免使用"$"開始的識別符號,以免造成沖突,
- Scala 的命名規范采用和 Java 類似的 camel 命名規范,首字符小寫,比如 toString,類名的首字符還是使用大寫,此外也應該避免使用以下劃線結尾的標志符以避免沖突,
- Scala 內部實作時會使用轉義的標志符,比如:-> 使用 \(colon\)minus$greater 來表示這個符號,
字串
在 Scala 中,字串的型別實際上就是 Java中的 String類,它本身是沒有 String 類的,
在 Scala 中,String 是一個不可變的字串物件,所以該物件不可被修改,這就意味著你如果修改字串就會產生一個新的字串物件,
val name : String = "scala"
val subname : String = name.substring(0,2)
println("Hello " + name) // 字串連接
printf("name=%s\n", name) // 傳值字串(格式化字串)
println(s"name=${name}") // 插值字串 將變數值插入到字串
// 多行格式化字串
// 在封裝JSON或SQL時比較常用
// 豎線表示頂格符
val s =
"""
| Hello
Scala
|""".stripMargin('#')
val json =
s"""
| { "username":"${name}", "password":"${password}" }
|""".stripMargin
val sql = "select id from (select * from t_user where id = 1 order by id desc) a group by id"
val sql1 =
"""
| select
| id
| from
| (
| select
| *
| from t_user
| where id = 1
| order by id desc
|
| ) a
| group by id
|
|""".stripMargin
輸入與輸出
輸入
val age : Int = scala.io.StdIn.readInt() // 從控制臺輸入
scala.io.Source.fromFile("input/user.json").foreach(
line => {
print(line)
}
)
scala.io.Source.fromFile("input/user.json").getLines() // 從檔案中輸入
// 也可靜態匯入
輸出
val writer = new PrintWriter(new File("output/test.txt" ))
writer.write("Hello Scala")
writer.close()
網路
object TestServer {
def main(args: Array[String]): Unit = {
val server = new ServerSocket(9999)
while ( true ) {
val socket: Socket = server.accept()
val reader = new BufferedReader(
new InputStreamReader(
socket.getInputStream,
"UTF-8"
)
)
var s : String = ""
var flg = true
while ( flg ) {
s = reader.readLine()
if ( s != null ) {
println(s)
} else {
flg = false
}
}
}
}
}
...
object TestClient {
def main(args: Array[String]): Unit = {
val client = new Socket("localhost", 9999)
val out = new PrintWriter(
new OutputStreamWriter(
client.getOutputStream,
"UTF-8"
)
)
out.print("hello Scala")
out.flush()
out.close()
client.close()
}
}
資料型別

Scala是完全面向物件的語言,所以不存在基本資料型別的概念,有的只是任意值物件型別(AnyVal)和任意參考物件型別(AnyRef)
// Nothing是scala語言中特殊的型別,用于統一方法的例外和正常的回傳
}
def test(): Nothing = {
throw new Exception()
}
def test1(): String = {
throw new Exception()
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/508768.html
標籤:Scala
