Scala 學習(1)之「變量,數據類型,if 表達式,循環」

變量

可變變量(var):賦值後能夠改變,生命週期中能夠被屢次賦值。語法:var 變量名稱: 類型 = xxxshell

不可變變量(val):賦值後不可變,相似於 Java 中的 final 變量,值一旦初始化了就不能再改變。語法:val 變量名稱: 類型 = xxx編程

大多數狀況下推薦使用 val 來聲明變量,由於能夠防止變量的值被錯誤修改,提升程序的健壯性和安全性。安全

數據類型

Byte		// 8 位有符號值,範圍從 -128 至 127
Short		// 16 位有符號值,範圍從 -32768 至 32767
Int			// 32 位有符號值,範圍從 -2147483648至 2147483647
Long		// 64 位有符號值,範圍從 -9223372036854775808 至 9223372036854775807
Float		// 32 位IEEE 754 單精度浮點值
Double		// 64 位IEEE 754 雙精度浮點值
Char		// 16 位無符號 Unicode 字符。範圍從 U+0000 到 U+FFFF
String		//一個 Char 類型序列
Boolean		//文字值 true 或文字值 false

Unit		//表示無值,和其餘語言中 void 等同。用做不返回任何結果的方法的結果類型。Unit 只有一個實例值,寫成()
Null		// null 或空引用
Nothing		// Nothing 類型在 Scala 的類層級的最低端:它是任何其餘類型的子類型
Any			// Any 是全部其餘類的超類
AnyRef		// AnyRef 類是 Scala 裏全部的引用類(reference class)的基類

類型轉換

// 強制轉換成Double類型
var i = 10.asInstanceOf[Double]

類型判斷

// 判斷是否爲Int類型
val b = 10.isInstanceOf[Int]

if表達式

在 Scala 中,if表達式是有值的,能夠將 if 表達式賦予一個變量. 例如:val isAdult = if(age > 18) 1 else 0scala

類型推斷

當 if 和 else 子句的值類型不一樣時,此時 Scala 會自動進行推斷,取兩個類型的公共父類型。 例如:if (age > 18) "adult" else 0,此時 if 和 else 的值分別是 String 和 Int ,則表達式的值是 Any , Any 是 String 和 Int 的公共父類型。code

將if語句放在多行中

shell 端能夠使用 :paste 進入多行模式,寫完代碼以後按 ctrl+D 退出多行模式。生命週期

一行放多條語句

默認狀況下:Scala 不須要語句終結符,默認將每一行做爲一個語句,若是要實現一行放多條語句,則可以使用下面的方式來實現 示例:var a, b, c = 0; if(a < b) {b = b + 1; c = c + 1} 或採用花括號的方式圖片

if (a < b) {
	b = b + 1
	c = c + 1
}

塊表達式

指的是 {} 中的值,其中能夠包含多條語句,最後一個語句的值就是表達式的返回值。it

循環

while do

// 當變量 n 大於 0 的時候,輸出並減一,不然,跳出循環
var n = 10
while(n > 0) {
	println(n)
	n -= 1
}

簡易for循環

var n = 10
for (i <- 1 to n) println(i)
for (c <- "Hello World") println(c)

until

//該表達式的值達不到上限
for (i <- 1 until n) println(i)

跳出循環語句

import scala.until.control.Breaks._

breakable {
	var n = 10
	for(c <- "Hello World") {
		if(n == 5) break;
		print(c)
		n -= 1
	}
}

多重for循環

// 九九乘法表
for (i <- 1 to 9; j <- 1 to 9){
	if(j == 9){
		println(i * j)
	} else {
		print(i * j + " ")
	}
}

if守衛

// 取出偶數
for (i <- 1 to 100 if i % 2 == 0){
	println(i)
}

for推導式

// 將輸出的值生成一個集合
for (i <- 1 to 10) yield i

在這裏插入圖片描述

歡迎關注,本號將持續分享本人在編程路上的各類見聞。for循環

相關文章
相關標籤/搜索