scala习题精选100道
1、关于和Scala进行交互的基本方式REPL说法错误的是? C
A、R 读取(read)
B、E 求值(evaluate)
C、P 解析(Parse)
D、L 循环(Loop)
P不是解析,而是表示打印Print
2、不属于Scala7种数值类型的是? D
A、Char
B、Int
C、Float
D、LongLong
只有Long,没有longlong,scala支持的数据类型如下
Byte 8位有符号补码整数。数值区间为 -128 到 127
Short 16位有符号补码整数。数值区间为 -32768 到 32767
Int 32位有符号补码整数。数值区间为 -2147483648 到 2147483647
Long 64位有符号补码整数。数值区间为 -9223372036854775808 到 9223372036854775807,可以加L或l后缀
Float 32位IEEE754单精度浮点数,可以加F或f后缀
Double 64位IEEE754单精度浮点数
Char 16位无符号Unicode字符, 区间值为 U+0000 到 U+FFFF
String 字符序列
Boolean true或false,注意这里是小写
Unit 表示无值,和其他语言中void等同。用作不返回任何结果的方法的结果类型。Unit只有一个实例值,写成()。
Null null 或空引用
Nothing Nothing类型在Scala的类层级的最低端;它是任何其他类型的子类型。
Any Any是所有其他类的超类
AnyRef AnyRef类是Scala里所有引用类(reference class)的基类
3、如果需要使用scala库中的sqrt函数,如sqrt(2),下列引用包的方式错误的是? B
A、import scala.math._
B、import sqrt
C、import math._
D、import math.sqrt
导入库时候scala可以省略,但是下一级就不能再省略。默认情况下,Scala 总会引入 java.lang._ 、 scala._ 和 Predef._,这里也能解释,为什么以scala开头的包,在使用时都是省去scala.的。
4、Scala关于变量定义、赋值,错误的是?B
A、val a = 3
B、val a:String = 3
C、var b:Int = 3 ; b = 6
D、var b = "Hello World!" ; b = "123"
虽然scala会自己解析类型,但3这种明显不是string类型
5、在Scala中如何获取字符串”Hello”的首字符和尾字符?B
A、"Hello"(0),"Hello"(5)
B、"Hello".take(1),"Hello".reverse(0)
C、"Hello"(1),"Hello"(5)
D、"Hello".take(0), "Hello".takeRight(1)
应该是"Hello"(0),"Hello"(4)
"Hello".take(1)表示取左边开始1个字符,2表示取2个
Reverse表示取反,然后(0)表示头一个,
6、下面输出与其他不一致的是?D
A、println("Hello World")
B、print("Hello World\n")
C、printf("Hello %s", "World\n")
D、val w = "World" ; println("Hello $w")
val w = "World" ; println(s"Hello $w")才能打印正确
7、关于函数def sum(args:Int*) = {var r = 0 ; for(arg
5, “pen” -> 2, “sticker” -> 1)prices.getOrElse(goods, 0)
}
结果说法错误的是?D
A、getGoodsPrice("book") // 等于 5
B、getGoodsPrice("pen") // 等于 2
C、getGoodsPrice("sticker") // 等于 1
D、getGoodsPrice("sock") // 等于 “sock”
因为没有sock,所以getOrElse就走到0
14、对于元组val t = (1, 3.14, "Fred")说法错误的是?A
A、t_1 等于 1
B、t 的类型为 Tuple3[Int, Double, java.lang.String]
C、val (first, second, _) = t // second 等于 3.14
D、t._0无法访问, 会抛出异常
t_1缺了小数点如t._1,或者需要空格t _1
String是从java导入,不是scala自带的
val (first, second, _) = t也是一种模式匹配,对比_方式可读性更好
t._0返回空,不会异常
15、对于拉链操作val t1 = Array(1, 3); val t2 = Array(2,4) ; t1.zip(t2)返回结果正确的是?C
A、(1,2,3,4)
B、((1,3),(2,4))
C、((1,2),(3,4))
D、((1,4),(3,4))
也可以写成t1 zip t2
16、Scala允许你用数字去乘字符串—去REPL中试一下"crazy"*3。这个操作结果返回什么?C
A、”crazy”*3
B、ccrraazzyy
C、crazycrazycrazy
D、crazy