1.Scala怎样声明变量与常量?
var a =0 //变量
val b =0 //常量
2.Scala数据类型有哪些?
基本类型:
Byte, Short,Int,Long,Float,Double,Boolean,Char;它们和java的区别,他们都是类
var 变量名: 类型 = 值
例如:var a2: Short =1
3.String 对象是可变还是不可变?假如要创建一个可以修改的字符串,应该使用哪个类?
(1)String对象不可变
(2) StringBuilder可变
4.转义字符用什么符号?
\开头,例如:\t, \n 等
5.IF...ELSE 语法是什么?
expr是boolean型表达式
if (expr) {
//TODO
}else {
//TOD
}
6.循环语句哪三种,分别语法是什么?怎样退出循环?
(1)for, while, do while
for (i <-1.to(3)) {
println(i)
}
var i =1
while (i <3) {
//TODO
println(i)
i = i +1
}
var j =1
do {
//TODO
println(j)
j = j +1
}while (j <1)
(2)scala中没有break和continue这种语法,需要借助 Breaks对象
breakable {
for (i <-1 to5) {
println(i)
break
}
}
7.函数中 Unit是什么意思?
表示空,类似于java中的void,不同的是它的值是()
8.Scala怎样定义一个不带入参,不返回值的函数
def test {}
9.Scala怎样定义一个带入参,返回值的函数
def test(param: Int): Int = {
100
}
10.什么是闭包?
闭包是由代码 + 用到的非全局变量组成
scala> var y=10
y: Int = 10
scala> val sum= (x:Int) => x+y
sum: Int => Int = <function1>
scala> sum(10)
res6: Int = 20
11.val a = 10,怎样将a转为double类型、String类型?
a.toDouble和a.toString
例如:
val a =10
var b: Double = a.toDouble
var c:String = a.toString
12.Scala函数中是把方法体的最后一行作为返回值,需不需要显示调用return?
不需要
13.怎样定义一个字符串数组?下标是从1开始的吗
(1) var array1 =new Array[String](10) 或者 var array2 =Array("a","b")
(2) 下标从0开始
14.1 to 10 ==> 1.to(10),10包含不包含?
包含,to 是 [ ]闭区间,until 是左闭右开[ )
15.Range(1, 10),10包含不包含?
不包含,是左闭右开[ )
补充:下面代码包含不包含10?
for( a <- 1 until 10){
println( "Value of a: " + a );
}
也不包含10, until也是左闭右开[ )
16.Scala 模式匹配语法是什么?
xx match {
case value => ...
}
例如:
var name ="lisi"
namematch {
case "zhangsan" =>println("zhangsan")
case "lisi" =>println("lisi")
case _ =>println("no name match")
}
17.异常报错是语法?
try {
//TODO
}catch {
case e :Exception=> //TODO
}finally {
//TODO
}
例如:
try {
var i =1 /0
}catch {
case e1:NumberFormatException =>print(e1)
case _:Exception =>print("other exception")
}finally {
//TODO
}
18.Array、ArrayBuffer,谁是定长?谁是变长?
Array定长, ArrayBuffer变长
19.什么是隐式转换函数?什么场景下用?怎样定义?
(1)以implicit关键字声明的带有单个参数的函数
(2)(需要将值从一种类型转成另外的时候)类型转换
(3) implicit def intToChar(value: Int) = value.toChar
//下面代码如果把intToChar函数注释掉,编译会报错
val max: Char = math.max(1,2)
print(max)
补充 什么是 隐式转换 和 显示转换:
一般情况下,数据的类型的转换通常是由编译系统自动进行的,不需要人工干预,所以被称为隐式类型转换。但如果程序要求一定要将某一类型的数据转换为另外一种类型,则可以利用强制类型转换运算符进行转换,这种强制转换过程称为显式转换。显示类型转换格式为:
(强制的类型名)表达式
用于强行将“表达式”的值转换成“类型名”所表示的数据类型。例如,(int)4.2的结果是4;强制类型转换的目的是使表达式的值的数据类型发生改变,从而使不同类型数据之间的运算能够进行下去。
自动类型转换,也称隐式类型转换,是指不需要书写代码,由系统自动完成的类型转换。
转换规则为:
从存储范围小的类型到存储范围大的类型。
具体规则为:
short(char)→int→long→float→double
也就是说int类型的变量可以自动转换为long类型,示例代码:
int b = 10;long l = b;
20.Scala面向对象,三大特性是什么?什么区别?
封装:属性、方法
继承:父和子的关系
多态:父类引用指向子类对象
21.Scala 基本语法需要注意点?
和java一样,用驼峰命名法
(1)类名 - 对于所有的类名的第一个字母要大写
(2)方法名称 - 所有的方法名称的第一个字母用小写
22.对象是什么?类是什么?怎样在IDEA创建文件?
(1)类:具有相同属性和方法的一组对象的集合,是抽象的描述
实例:是一个具体的实体
类是对象的模板,对象是类的实例。
(2)File -> new
23.变长数组ArrayBuffer的系列问题
var c = new ArrayBuffer[Int]();
1. 在尾部添加一个元素
c+=1
2. 在尾部添加多个元素
c+=(2,3)
3. 追加集合
c++=Array(4,5)
4. 指定位置添加元素
c.insert(1,9) //1是下标,子啊指定下标前插入
5. 移除尾部n个元素
c.trimEnd(3) //移除尾部3个元素
6. 移除开头n个元素
c.trimEnd(n)
7. 移除某个位置的元素
c.remove(1)
8. 移除从下标为n开始(包括n)的count个元素
c.remove(n, count)
9. ArrayBuffer 转 Array
toArray
10. Array 转 ArrayBuffer
toBuffer
网友评论