scala變量與變量類型

1.6 變量與類型(重點)
1.6.1 變量推斷
1.6.2 多變量定義
1.6.3 var和val的區別

1.6.3.1 是否可變

1.6.3.2 延遲加載
1.6 變量與類型重點

val修飾的變量,相當于Java中final修飾的變量;

// 定義常量s1,使用字符串"1"賦值,自動推斷為String類型,值不可變
val s1 = "1"
// 定義常量s2,手動指定類型為String,此時需要保證所賦值類型匹配
val s2: String = "2"
// 使用val定義基本數據類型時,值不可變,可以使用val重新定義

變量聲明一定要初始化

1.6.1 變量推斷

含義:聲明變量時,可以不指定變量類型,編譯器會根據賦值內容自動推斷當前變量的類型。

// 定義變量a1,使用1賦值,自動推斷為Int類型
var i1 = 1
print(i1.isInstanceOf[Int])
//類型確定后,就不能再賦值的類型
i1 = 1.1
1.6.2 多變量定義
//Java中支持一行同時定義多個同類變量:
String a = "Hello", c = "hello"; ?
int x = 5, y = 5; ?
//scala中的多個變量的初始化:
val (a, b, c) = (1, 2, "a")
// 定義變量a3,a4,同時賦值為10
var i3,i4 = 10;
1.6.3 var和val的區別
# val和var的區別
?
- 是否可變
- 是否可以有lazy修飾:延遲加載
1.6.3.1 是否可變

使用val聲明一個常量或值:val修飾的變量是不可變的,注意不可變的是引用,而不是內容,val修飾的變量在編譯后,等同于加上final。

使用var 聲明一個變量:var修飾的變量,內容和引用都可變

(擴展一下什么是值類型,什么是引用類型,可以使用數組舉例,引用不可變,變的是內容。)

/**可變和不可變?
可變和不可變,指的是變量本身存的內容,值類型變量存的是數據本身,而引用類型變量存的是數據的引用,
?
值類型和引用類型?
值類型與引用類型區別:
存儲方式:直接存儲數據本身 vs 存儲的是數據的引用,數據存儲在數據堆中
內存分配:分配在棧中 vs 分配在堆中
效率:效率高,不需要地址轉換 vs 效率較低,需要進行地址轉換
內存回收: 使用完后立即回收 vs 使用完后不立即回收,而是交給GC處理回收
*/
scala> val arr = Array(1,2,3,4,5)
arr: Array[Int] = Array(1, 2, 3, 4, 5)
scala> arr = Array(1,2,3)
<console>:8: error: reassignment to valarr = Array(1,2,3)
scala> arr(0)=10
scala> arr
res1: Array[Int] = Array(10, 2, 3, 4, 5)
1.6.3.2 延遲加載

只有val修飾的變量才能被lazy修飾,使用lazy定義變量后,只有在調用該變量時才會實例化這個變量的值,類似方法,先聲明,后調用。

scala> val a = 10
a: Int = 10
scala> lazy val b = 100
b: Int = <lazy>
scala> b
res2: Int = 100
scala> var c = 10
c: Int = 10
scala> lazy var d = 100
<console>:1: error: lazy not allowed here. Only vals can be lazylazy var d = 100^
scala> def e = 1000
e: Int
scala> e
res3: Int = 1000

使用val 還是var?

# 官方推薦val,使用val的好處:
- 更安全
- 代碼可讀性更高
- 資源回收更快,方法執行完,val所定義的變量即回收

代碼

package com.qianfeng.scala
?
/**
* 變量必須賦值或者是使用占位符初始化
* val 變量名稱[:類型] = 值 ? : 不可變 ,相當于java的final修飾
* var 變量名稱[:類型] = 值 ? : 可變
* lazy val 變量名稱[:類型] = 值  懶加載,必須使用val
*
* 注意:
* 1、官方推薦我們使用val
* 2、類型自動推斷
*/
object Demo02_Variable {def main(args: Array[String]): Unit = {val a = 100val b:String = "abc"println(a)//修改a的值//a = 200  //報錯:不能改變值
?var c = 100println(c)c = 200println(c)
?lazy val d = 1000println(d)
?//lazy var dd = 1000 ? //報錯:lazy只能修飾val變量
?//多變量val (aa,cc,dd) = (1,2,"hello")println(aa,dd)val i1,i2 = 10println(i1,i2)}
}
?

?scala下載安裝地址:

scala安裝使用教程_一篇搞定!-CSDN博客?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/212099.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/212099.shtml
英文地址,請注明出處:http://en.pswp.cn/news/212099.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[每周一更]-(第76期):Go源碼閱讀與分析的方式

讀源碼可以深層理解Go的編寫方式&#xff0c;理解作者們的思維方式&#xff1b;也有助于對Go語法用法深刻的理解&#xff0c;我們從這一篇說一下如何讀源碼&#xff0c;從哪些源碼著手&#xff0c;從 簡單到深入的方式學習源碼&#xff1b; 學習源碼也是一個修煉過程&#xff0…

「斗破年番」卡點俠蕭炎又卡點救人,四長老毒氣攻心,黑皇城尋寶

Hello,小伙伴們&#xff0c;我是拾荒君。 《斗破蒼穹年番》第74集如約而至&#xff0c;帶給觀眾們更多的驚喜與感動。這一集中&#xff0c;蕭炎的體內魔毒斑暫時被厄難毒體所壓制&#xff0c;他決定回到迦南學院&#xff0c;尋求斗尊強者的幫助解決這個問題。然而&#xff0c;…

深入理解 Flask 中的 Session 和 Cookies

在構建 web 應用時,管理用戶的狀態和數據是至關重要的。Flask,作為一個靈活的微型 web 框架,提供了會話(Session)和 Cookies 管理的能力。本文將深入探討 Flask 中的會話和 Cookies 的概念、工作機制以及應用實例,為讀者提供全面而詳細的理解。 會話和 Cookies 的基本概…

【LeetCode熱題100】【滑動窗口】找到字符串中所有字母異位詞

給定兩個字符串 s 和 p&#xff0c;找到 s 中所有 p 的 異位詞 的子串&#xff0c;返回這些子串的起始索引。不考慮答案輸出的順序。 異位詞 指由相同字母重排列形成的字符串&#xff08;包括相同的字符串&#xff09;。 示例 1: 輸入: s "cbaebabacd", p "…

611.有效的三角形個數

1.題目解析 給定一個包含非負整數的數組 nums &#xff0c;返回其中可以組成三角形三條邊的三元組個數。 補充&#xff1a; 1.三角形的判斷&#xff1a;假設有三條邊按大小排序&#xff1a; 2.題目示例 示例 1: 輸入: nums [2,2,3,4] 輸出: 3 解釋:有效的組合是: 2,3,4 (使用…

P1161 開燈題解

題目 在一條無限長的路上&#xff0c;有一排無限長的路燈&#xff0c;編號為1,2,3,4,…。 每一盞燈只有兩種可能的狀態&#xff0c;開或者關。如果按一下某一盞燈的開關&#xff0c;那么這盞燈的狀態將發生改變。如果原來是開&#xff0c;將變成關。如果原來是關&#xff0c;…

C現代方法(第27章)筆記——C99對數學計算的新增支持

文章目錄 第27章 C99對數學計算的新增支持27.1 <stdint.h>: 整數類型(C99)27.1.1 <stdint.h>類型27.1.2 對指定寬度整數類型的限制27.1.3 對其他整數類型的限制27.1.4 用于整型常量的宏 27.2 <inttype.h>: 整數類型的格式轉換(C99)27.2.1 用于格式指定符的宏…

人工智能與自然語言處理

人工智能&#xff08;AI&#xff09;與自然語言處理&#xff08;NLP&#xff09;是當前科技領域的兩大熱門話題。人工智能通過模擬人類的思維過程和智能行為&#xff0c;使計算機具備了一定的智能和自學能力。而自然語言處理則是指計算機對人類語言進行理解、處理和生成的技術。…

PCIe MPS參數介紹及如何更改

目錄 1.簡介 2.主要功能作用 3.MPS控制策略 4.如何更改 1.簡介 MPS 該參數含義是一個TLP包里攜帶的有效凈荷的最大值是多少字節&#xff08;該限制條件同時適用于寫操作和讀操作&#xff09;。 MRRS 該參數含義是一個TLP讀請求包&#xff0c;一次最多能向接收端請求讀出…

計算機畢業設計JAVA+SSM+springboot養老院管理系統

設計了養老院管理系統&#xff0c;該系統包括管理員&#xff0c;醫護人員和老人三部分。同時還能為用戶提供一個方便實用的養老院管理系統&#xff0c;管理員在使用本系統時&#xff0c;可以通過系統管理員界面管理用戶的信息&#xff0c;也可以進行個人中心&#xff0c;醫護等…

LeetCode 108. 將有序數組轉換為二叉搜索樹

對于算法題&#xff0c;按題型類別刷題才會更有成效&#xff0c;因此我這里在網上搜索并參考了下 “&#x1f525; LeetCode 熱題 HOT 100” 的題型歸類&#xff0c;并在其基礎上做了一定的完善&#xff0c;希望能夠記錄自己的刷題歷程&#xff0c;有所收獲&#xff01;點擊下發…

點滴生活記錄2

我從小跟著我爺爺奶奶&#xff0c;小學六年級轉到縣城上小學&#xff0c;就沒跟我奶奶他們住一起了。十一回家&#xff0c;把奶奶接到我這住&#xff0c;細想&#xff0c;自六年級之后&#xff0c;就很少跟奶奶住一起了。 奶奶&#xff08;間歇性&#xff09;耳聾&#xff0c;為…

104. 二叉樹的最大深度

給定一個二叉樹 root &#xff0c;返回其最大深度。二叉樹的最大深度 是指從根節點到最遠葉子節點的最長路徑上的節點數。 深度就是在層序遍歷的基礎上&#xff0c;每層遍歷一次&#xff0c;就增加一次深度&#xff01; import java.util.ArrayList; import java.util.LinkedL…

軟件測試相關

軟件測試是什么&#xff1f; 使用人工和自動手段來運行或測試某個系統的過程&#xff0c;其目的在于驗證它是否滿足規定的需求或弄清預期結果與實際結果的差別。 為什么做軟件測試&#xff1f;目的是什么&#xff1f; 發現軟件存在的代碼或業務邏輯錯誤 檢驗產品是否符合用戶需…

堅鵬:中國郵政儲蓄銀行數字化轉型戰略、方法與案例培訓

中國郵政儲蓄銀行擁有優良的資產質量和顯著的成長潛力&#xff0c;是中國領先的大型零售銀行。2016年9月在香港聯交所掛牌上市&#xff0c;2019年12月在上交所掛牌上市。中國郵政儲蓄銀行擁有近4萬個營業網點&#xff0c;服務個人客戶超6.5億戶。2022年&#xff0c;在《銀行家》…

算法Day24 不專心開車

不專心開車 Description 小碩開車經過一條公路&#xff0c;這條路線總共由n 1個不同海拔的點組成。小碩從海拔為0的點0開始騎行。 給小碩一個長度為n的整數數組arr&#xff0c;其中arr[i]是點i和點i 1的凈海拔高度差&#xff08;0≤i < n&#xff09;。請你返回最高點的海…

【LeetCode刷題-二叉樹】--110.平衡二叉樹

110.平衡二叉樹 方法一&#xff1a;自頂向下遞歸 對于當前遍歷到的節點&#xff0c;首先計算左右子樹的高度&#xff0c;如果左右子樹的高度差是否不超過 111&#xff0c;再分別遞歸地遍歷左右子節點&#xff0c;并判斷左子樹和右子樹是否平衡。這是一個自頂向下的遞歸的過程。…

力扣:197. 上升的溫度(Python3)

題目&#xff1a; 表&#xff1a; Weather ------------------------ | Column Name | Type | ------------------------ | id | int | | recordDate | date | | temperature | int | ------------------------ id 是該表具有唯一值的列。 該表…

[NAND Flash] 1.1 閃存(NAND Flash) 學習指南

依公知及經驗整理&#xff0c;原創保護&#xff0c;禁止轉載。 專欄 《深入理解NAND Flash》 ? 回首 漠然回首&#xff0c;從事存儲芯片行業已多年&#xff0c;這些年寶貴的青春都獻給了閃存。 我剛入行的時候&#xff0c;也是萌新一個&#xff0c;彷佛大學學的都沒有和這相…

Kubernetes簡介與部署

一、Kubernetes 簡介 1、概念&#xff1a; Kubernetes 又稱 k8s&#xff0c;是一個可移植、可擴展的開源平臺&#xff0c;用于管理容器化應用和服務&#xff0c;通過 Kubernetes 能夠進行應用的自動化部署和擴縮容。(k8s不是容器&#xff0c;而是一套容器編排系統) 官網&…