Scala语言本质上和java没有区别,本质上都是基于jvm的语言,只不过是语法不同而已,最终的运行和原理都是一样的,所以java里面的所有内容在Scala中都可以使用,例如jdbc等,但是Scala也有自己特殊的语法,例如样例类。
Scala和Java的区别
Java是面向对象编程
Scala是面向函数编程(这里面的函数就是方法的意思)(在高级语言中称方法为函数)
面向对象编程
面向对象编程就是将对象传来传去:
- 将对象作为参数
- 将对象作为返回值
所以面向对象编程需要明确对象的类型
面向函数编程
面向函数编程就是将函数传来传去
- 可以将一个函数作为参数
- 可以将一个函数作为返回值
所以面向函数编程需要明确每一个函数的类型
Scala中函数的定义
1、可以在Object中创建,通过对象名直接调用
2、可以在类中创建,需要创建类的对象才可以调用
3、可以在任何代码块中创建,可以直接在后面调用
//创建函数
def fun1(): Unit = {
println("fun1")
}
//调用函数
fun1()
fun1()
函数的基本要素
1、函数名
2、函数的参数
3、函数的返回值
4、函数体
函数类型的定义
1、函数的类型和函数的参数,函数的返回值有关系
//这是一个参数为Int类型,返回值为Int类型的函数
def add(i: Int): Int ={
i+1
}
val j: Int = add(100)
println(j)
//这是一个参数为String 返回值为Int类型的函数
def fun2(str: String): Int = {
str.toInt
}
//这是一个参数为String没有返回值的函数
def fun3(str: String): Unit = {
println(str)
}
函数的简写
1、如果函数体只有一行 {} 可以省略
2、如果最后一行作为返回值return可以省略
3、如果没有参数,() 可以省略
4、返回值类型可以省略,会自动推断
def fun4(str: String): Unit = println(str)
lambda表达式 — 匿名函数
(str: String) => str.toInt
=> : 左边是参数
=> :右边是函数体
//这是一个参数为String 返回值为Int类型的函数
val fun5: String => Int = (str: String) => str.toInt
val k: Int = fun5("10004")