最新消息:XAMPP默认安装之后是很不安全的,我们只需要点击左方菜单的 "安全"选项,按照向导操作即可完成安全设置。

Scala day 4 (Basic Types)

XAMPP下载 admin 626浏览 0评论
 Basic Types
Byte,Short,Int,Long,Char 稱為 integral types.
integral types 再加上 Float,Double 稱為 numeric types.
只有 String 是在 java.lang 的 package 裡.
基本型態的大小 :
QQ截图20181016155043
 Literals
Literals 想翻成中文還真模糊,看了一堆資料感覺還是不知道該怎麼解釋比較好,但可以透過一些例子來了解一下它的觀念.目前了解 literals 的概念大概是指的是指說可以直接寫一個常數值在程式碼裡,編譯器會根據程式寫的常數對應到該對應的型態.

Integer literals
Long、Double
轉成 Long 或 Double,Long 在後面加上 L 或 l ,Double 在後面加上 D 或 d.0x 開頭是16進位.

scala> val hexNum = 0x1aFL
hexNum: Long = 431

scala> val hexNum = 168d
hexNum: Double = 168.0
Byte、Short
Byte 及 Short 在宣告變數時加上型態,compiler 時會檢查 value 是否超過大小 :
像 Byte 的範圍是 -2^7 ~ 2^7 – 1

scala> val num : Byte = 127
num: Byte = 127

scala> val num : Byte = -128
num: Byte = -128

scala> val num : Short = 127
num: Short = 127

hexadecimal literals
16進位(hexadecimal),開頭要寫 0x 或 0X,內容為數字1~9、大小寫字母a~f.
順便複習一下16進位轉10進位的算法 :
1AF(16進位)
-> 1 * 16^2 + 10 * 16^1 + 15 * 16^0
-> 1 * 16 * 16 + 10 * 16 + 15 * 1 = 256 + 160 + 15 = 431(10進位)

scala> val hexNum = 0x1aF
hexNum: Int = 431
octal literals
這裡使用的 scala 版本是 2.12.4,所以已經將 8 進位(octal)的 literals 移掉了.
Remove octal number literals : SI-7618

scala> val num = 035
<console>:1: error: Decimal integer literals may not have a leading zero. (Octal syntax is obsolete.)
val num = 035
^

要轉8進位時,scala 有提供一個 BigInt 的物件,可以轉任何進位 :

scala> val num1 = BigInt(“35” , 10)
num1: scala.math.BigInt = 35

scala> val num1 = BigInt(“35” , 8)
num1: scala.math.BigInt = 29

scala> val num1 = BigInt(“35” , 16)
num1: scala.math.BigInt = 53

Character literals
用單引號包起來的 Unicode 字元 :

scala> val c = ‘A’
c: Char = A

scala> val c = ‘\u0041’
c: Char = A

scala> val c = ‘\\’
c: Char = \
跳脫字元

QQ截图20181016155057
 要用 unicode 來表示會有一些規則要注意,真的要用到時再查一下,這邊先列幾個例子 :

scala> val c = ‘\u000A’
c: Char =

scala> val s = c + “Hi”
s: String =

Hi”

scala> val c = ‘\u0022’
c: Char = ”

scala> val c = ‘\u005C\u0027’
c: Char = ‘

scala> val c = ‘\u005C\u005C’
c: Char = \
String literals
用雙引號包多個字元組成的字串 :

scala> val msg = “Hello \”Daniel\””
msg: String = Hello “Daniel”

Scala 還提供了一個很方便的功能叫 raw strings,是使用三個雙引號包起來的字串,
裡面的字串都會被當成純文字,不會被跳脫字元影響 :

scala> val msg = “””Hello \”Daniel\””””
msg: String = Hello \”Daniel\”
Boolean literals
就是 true 跟 false

scala> val check = true
check: Boolean = true
Symbol literals
scala 還有一個比較特別的是 Symbol literals,可以用 .name 取出內容 :

scala> val s = ‘Daniel
s: Symbol = ‘Daniel

scala> s.name

res0: String = Daniel

scala> def sayHi(names: Symbol) = “Hi ” + names.name

sayHi: (names: Symbol)String

scala> sayHi(‘Daniel)
res5: String = Hi Daniel

scala> sayHi(‘Sam)
res6: String = Hi Sam
總結
基本型別使用上感覺跟其他語言差不多,但覺得 String literals 的 raw strings (“”” “””)真的很方便,不用想跳脫字元的問題.

转载请注明:XAMPP中文组官网 » Scala day 4 (Basic Types)

您必须 登录 才能发表评论!