Scala 学习(1)之「变量,数据类型,if 表达式,循环」

@

变量

可变变量(var):赋值后可以改变,生命周期中可以被多次赋值。语法:var 变量名称: 类型 = xxx

不可变变量(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 0

类型推断

当 if 和 else 子句的值类型不同时,此时 Scala 会自动进行推断,取两个类型的公共父类型。
例如:if (age > 18) "adult" else 0,此时 if 和 else 的值分别是 String 和 Int ,则表达式的值是 Any , Any 是 String 和 Int 的公共父类型。

将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
}

块表达式

指的是 {} 中的值,其中可以包含多条语句,最后一个语句的值就是表达式的返回值。

循环

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




在这里插入图片描述
欢迎关注,本号将持续分享本人在编程路上的各种见闻。

posted @ 2020-01-14 18:56  0的幂方  阅读(270)  评论(0编辑  收藏  举报