Scala小结

Java和Scala区别?
①scala与java都有7中数值类型:int、short、long、byte、float、double、boolean这7种,但是scala中这7种值类型是类,在java中属于基本类型,java中,数据类型分成基本类型和引用类型,scala中不区分。
②scala中的变量或函数的类型总是写在变量或者函数名的后面
③scala中的操作符与java中的操作符没有什么不同,但是在scala中,操作符是方法,在java中操作符不是方法,且在scala中,除了字母数字之外的其他特殊字符也可以作为方法
④scala中的通配符是_,java中的通配符是*
⑤scala中的unit相当于java中的void
⑥scala中的if/else的表达式与java中的差不多,但是scala中有值
⑦scala中没有static,但是可以用object来达到java中相同的效果,scala中的object可以实现单例对象

Scala中val和var的区别是什么?如果使用val修饰数组,数组中的值可变吗?修饰List呢?
val表示值,不可修改;var表示变量,可修改
可以

trait(特质)和abstract class(抽象类)的区别?
你可以定义一个抽象类,它定义了一些方法但没有实现他们。取而代之的是有扩展抽象类的子类定义这些方法。不能创建抽象类的实例;特质是一些字段和行为的集合,可以扩展或混入(mixin)你的类中,通过with关键字,一个类可以扩展多个特质。
①优先使用特质。一个类扩展多个特质是很方便的,但却只能扩展一个抽象类。
②如果你需要构造函数参数,使用抽象类。因为抽象类可以定义带参数的构造函数,而特质不行

Scala数据类型有哪些?Any和AnyRef区别?
Byte Short Int Long Char Float Double Boolean String
AnyVal
AnyVal 所有值类型的基类, 它描述的是值,而不是代表一个对象。
AnyRef
是所有引用类型的基类。除了值类型,所有类型都继承自AnyRef

谈谈Scala的柯里化?能够举一个例子
柯里化(Currying)指的是将原来接受两个参数的函数变成新的接受一个参数的函数的过程。新的函数返回一个以原有第二个参数为参数的函数
首先我们定义一个函数:
def add(x:Int,y:Int)=x+y
那么我们应用的时候,应该是这样用:add(1,2)
现在我们把这个函数变一下形:
def add(x:Int)(y:Int) = x + y
那么我们应用的时候,应该是这样用:add(1)(2),最后结果都一样是3,这种方式(过程)就叫柯里化

Scala中的隐式函数? 能否举例说明?

定义函数:def doSquare(f:Int=>Int,p:Int)=f§
def square(x:Int):Int=xx
doSquare(square,square(3)) ,该函数的运行结果是多少?,并写出分析计算过程 ,请不要使用IDEA计算
Square(3)=3
3=9
doSquare(square,square(3))=9*9=81

对于操作val t1 = Array(1, 3); val t2 = Array(2,4) ; t1.zip(t2)返回结果是什么? 请写出分析计算过程,请不要使用IDEA计算
Array((1,2),(3,4))
Zip()函数是将两个数组的第一个值取出作为结果数组的第一个元素,将数组的第二个值取出作为第二个元素

使用scala代码写一个九九乘法表
object 九九乘法表 {
def main(args:Array[String]): Unit ={
for(i <- 1 to 9;j <- 1 to i){
print(i+""+j+"="+(ij)+"\t")
if(i==j)println()
}
for(a <- 1 to 9; b <- 1 to a)
printf("%d*%d=%d%s", a, b, a*b, if(a == b) “\n” else “\t”)
}
}

定义了case class Student(name:String,age:Int) 这样一个样例类,以及下面的方法,
def matchTest(x: Student)= x match {
case Student(name,19) => println(name)
case Student(“Tom”,age) => println(age)
case Student(name,age) => println(name,age)
case _ => println(“no matches”)
}
matchTest(Student(“zhangsan”,20))
上述程序运行的结果是什么?请写出分析过程
(zhangsan,20)
模式匹配,第一个case中的19与20false
第二个case中的”Tom”与”zhangsan”false
第三个满足条件
返回Student结果(zhangsan,20)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值