日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Scala变量和常用数据类型

發布時間:2025/3/8 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Scala变量和常用数据类型 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、 聲明值和變量

Scala聲明變量有兩種方式,一個用val,一個用var。

聲明方式:val / var 變量名 : 變量類型 = 變量值

val定義的值是不可變的,它不是一個常量,是不可變量,或稱之為只讀變量。

val示例:

scala> val a1 = 10 scala> a1 = 20(此處會報錯,因為val不允許初始化后再次修改a1變量的引用)12

var示例:

scala> var a2 = 10 scala> a2 = 2012

1、scala默認為匿名變量分配val
2、val定義的變量雖然不能改變其引用的內存地址,但是可以改變其引用的對象的內部的其他屬性值。
3、為了減少可變性引起的bug,應該盡可能地使用不可變變量。變量類型可以省略,解析器會根據值進行推斷。val和var聲明變量時都必須初始化。

二、常用數據類型

常用類型介紹

同Java一樣,Scala也有8種基本數據類型:Byte、Char、Short、Int、Long、Float、Double以及Boolean。

類型介紹
Booleantrue 或者 false
Byte8位, 有符號
Short16位, 有符號
Int32位, 有符號
Long64位, 有符號
Char16位, 無符號
Float32位, 單精度浮點數
Double64位, 雙精度浮點數
String由Char數組組成

與Java中的數據類型不同,Scala并不區分基本類型和引用類型,所以這些類型都是對象,可以調用相對應的方法。

其中,String直接使用的是java.lang.String. 不過,由于String實際是一系列Char的不可變的集合,Scala中大部分針對集合的操作,都可以用于String,具體來說,String的這些方法存在于類scala.collection.immutable.StringOps中。

由于String在需要時能隱式轉換為StringOps,因此不需要任何額外的轉換,String就可以使用這些方法。

每一種數據類型都有對應的Rich* 類型,如RichInt、RichChar等,為基本類型提供了更多的有用操作。

三、Scala類型層次結構

java的除了原始類型的所有類都有一個默認的父類Object,那么scala的統一父類是什么呢?

在Scala中,所有的值都有類型,包括數值和函數。

1、Any、AnyVal、AnyFloat

Any是所有類型的超類型,也稱為頂級類 型。它定義了一些通用的方法如equals、hashCode和toString。Any有兩個直接子類:AnyVal和AnyRef。

AnyVal代表值類型。有9個預定義的非空的值類型分別是:Double、Float、Long、Int、Short、Byte、Char、Unit和Boolean。Unit是不帶任何意義的值類型,它僅有一個實例可以像這樣聲明:()。所有的函數必須有返回,所以說有時候Unit也是有用的返回類型。

AnyRef代表引用類型。所有非值類型都被定義為引用類型。在Scala中,每個用戶自定義的類型都是AnyRef的子類型。如果Scala被應用在Java的運行環境中,AnyRef相當于java.lang.Object。

2、Nothing和Null

Nothing是所有類型的子類型,也稱為底部類型。沒有一個值是Nothing類型的。它的用途之一是給出非正常終止的信號,如拋出異常、程序退出或者一個無限循環(可以理解為它是一個不對值進行定義的表達式的類型,或者是一個不能正常返回的方法)。

Null是所有引用類型的子類型(即AnyRef的任意子類型)。它有一個單例值由關鍵字null所定義。Null主要是使得Scala滿足和其他JVM語言的互操作性,但是幾乎不應該在Scala代碼中使用。我們將在后面的章節中介紹null的替代方案。

四、 option類型

Scala為單個值提供了對象的包裝器,表示為那種可能存在也可能不存在的值。他只有兩個有效的子類對象,一個是Some,表示某個值,另外一個是None,表示為空,通過Option的使用,避免了使用null、空字符串等方式來表示缺少某個值的做法。
如:

val map1 = Map("Alice" -> 20, "Bob" -> 30) println(map1.get("Alice")) println(map1.get("Jone"))

五、拓展——Scala中的加減乘除

"+-*/%"可以完成和Java中相同的工作,但是有一點區別,他們都是方法。幾乎可以用任何符號來為方法命名。

Scala中沒有++、–操作符,需要通過+=、-=來實現同樣的效果。

總結

以上是生活随笔為你收集整理的Scala变量和常用数据类型的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。