scala和java的区别
1、面向函数编程
2、都是基于jvm的编程语言
3、scala和java可以相互兼容,语法不兼容
变量
val
常量,不能再指向其他对象
var
变量,只有在必须的情况下使用
String、基本数据类型
和java中一样
函数
scala可以在任何位置定义函数
类中定义函数:需要通过类的对象调用,object中定义函数可以直接通过类名调用,函数中定义的函数可以直接通过函数名调用
简写
1、如果最后一行最为返回值,return可以省略
2、如果代码只有一行括号可以省略
3、返回值类型可以省略,scala会更具返回值自动推断
4、如果参数为空,小括号可以省略
lambda表达式
(s:String )=>s.toInt
=> 左边是参数。=> 右边是返回值,返回值类型会自动推断
map函数
一个一个的处理数组中的元素,循环数组中的元素,一个一个传给后面的函数,最终返回一个新的数组
面向函数编程
将一个函数作为参数
需要明确函数的类型,函数的类型和参数、返回值有关,和函数名,方法体无关
将一个函数作为返回值
list
有序,不唯一,不可变
常用方法
mkString
mkString 将数组或者集合按照一个分隔符拼接成一个字符串
head
取第一个元素
last
取最后一个元素
take(3)
取前几个元素
size
length
distinct
去重
reverse
反转集合,返回一个新的集合
tail
返回不包含第一个元素所有的元素
min
max
sum
子主题 1
listBuffer
可变集合
toList
隐式转换
隐式转换方法
和方法名无关,和参数类型返回值类型有关。可以隐式的将参数类型转换成返回值类型,在同一个作用域中只能有一个参数类型和返回值类型一样的隐式转换方法
隐式转换类
可以将构造函数参数的类型隐式转换当前类
隐式转换变量