参考链接: 在Java的数字中使用下划线
1 scala 底层是有一种隐式转换机制,比如对String类型,底层会转化Scala的StringOps类型
2 scala 的通用的化简规则:调方法时候,方法的参数列表只有一个,则方法的()可以省略
数字:
1 scala中没有基本变量,都是对象和方法
2 scala的int 表面是java的int 但是底层通过隐式转换,转成了scala的RichInt类型
to方法。用生成一个区间,一般用于for循环生成的范围
RichDouble RichFloat
3 scala的操作符优先同java
4 scala 会以方法的调用顺序来运算
5 前置操作符 加上空格 分别是+(正数) -(负数) !(布尔取反) ~(二进制)
6 scala在使用前置操作符可以通过unary_(+-)
1 scala 的if else 的用途和java一样
2 scala 的通用化简规则: 如果方法体{}中只有一行代码,则方法体{}可以省略
3 scala 的if else 和java的不同的地方在于 :if else 是有返回值 的 ,可以接 ,返回值的不同 ,返回值的类型是Any
4 scala的通用规则:scala会将方法体{}最后的一行代码当做返回值,不要return
5 scala的Unit类型 java的void ,空类型 Any ---java 的Object
6 println 的返回值类型是Unit
7 scala的while用法一样java
8 scala通过下标操作集合类型时 ,下标数字同java,使用(index),不同java [index]
for 循环
for(i<-1 to 9 ; j<-1 to i ; val sep =if(i==j) "\t\n" else "\t") print(j+"*"+i+"=" +i*j +sep)
1 scala 的集合是大的概论 ,包括: Array List Set Map Tuple Range
2 for yield 的作用,遍历一个集合,返回一个新的集合,指的是:遍历的是Array,返回时Array
3 声明 map(key -> value)
异常
1 scala在catch,捕获异常用的是case来匹配
2 scala的match机制类比于java的switch case
break 和count
1 scala使用break要导包 import util.control.Breaks. ,或是breakcable 包裹
2 breakcable在for循环外,是break的效果,在for循环内,是 continue效果
函数
1 scala通过def 关键字当以函数 def 函数名(参数列表):返回值类型={ 方法体}
匿名函数
1 没有函数名 连接符号 => 可以当做参数赋值 或传递
2 把匿名函数当参数进行传递,高阶函数
3 高阶函数允许将函数当参数进行传递
4 匿名函数通用化简规则:如果参数的类型可以推出,可以不写
5 如果匿名函数的参数只有一个,则参数的只有一个,则参数的()可以不写
6 可以通过_(占位符)
7 占位符指的是scala中的下划线_ ,可以用它当作一个或多个参数来使用 使用_占位符的前提要求:每个参数在函数仅出现一次。
递归函数
1 必须申明的数值的返回类型
2 写递归的技巧:a.找出递归的结束条件 b.找出函数关系
3 在scala,结束条件的返回值必须是return
1 lazy数值声明之后,并不是马上赋值的,调用时才赋值
2 lazy 只能常量val
3 scala底层支持颗粒化。允许接受多个参数转化
4 前面是普通参数,后面是匿名函数,叫自建立控制结构
集合
1 Array List Set Map Tuple Range Iterator
2 immutable :定长数组Array mutable :变长ArrayBuffer
以下是Array和List通用而且重要的方法 1.take 2.takeRight 3.drop 4.dropRight 5.head 6.last 7.mkString 8.intersect(交集) 9.union(并集) 10.diff(差集) 11.exists 12.count 13.filter(过滤) 14.sortBy(排序) 15.map(映射方法) 16.max 17.min 18.sum 19.reduce 20.reverse(反转) 21.dinstinct(去重) 22.mapValue(专用于映射Map类型的value) Array和List没有此方法
以上再重点掌握:1.filter 2.sortBy 3.map 4.reduce 5.mapValues
补充:掌握类型转换的技巧。比如一个方法,distinct,compactBuff类型, 但是List有,所以可以通过类型转化来实现