学习scala语言的硬性记录

这个是我自己的学习笔记,其他人不要看

 

学习scala的机械式记忆

1.创建main方法的类是object的类
2.val name:Leising = aaa
3.def sum(n1:Leixing,n2:Leixing):Leixing={
return n1+n2
}
4.var和val来定义变量,var=variable可变的,val=value不可变的
5.dog:Dog = new Dog 这里不需要括号
6.没有基础数据类型,都是对象;AnyVal和AnyRef都是对象
7.Unit Null Nothing
8.强制类型转换 (2.3).toInt
9.没有++ --的操作
10.没有三目运算符
11.控制台输入: StdIn.readLine()
StdIn.readInt()
StdIn.readDouble()
12.没有switch
13.for(i <- 1 to 3){} 这个是i从1到3的循环 不能用 in
1 to 3 是(1,2,3)
1 unit 3 是(1,2)
range(1,10) 和 1 unit 10 相同返回(1,2,3,4,5,6,7,8,9)
14.没有continue和break
有break()和breakable,需要引入util.control.Breaks._
用循环守卫或者if else实现continue功能
15.循环返回值用 yield
16.def f1(op:=>Unit):Unit{
op
}
表示f1是一个函数,传入的是一个函数op。 op就是执行这个函数
17. 将一个函数赋予一个变量中
var f1 = dog.sum _
var f2 = (n1:Int,n2:Int)=>{n1+n2}
18.声明一个函数
def f1(n1:Int,n2:Int):Int = {

}
19.惰性函数
lazy 修饰val变量
lazy不能修饰var变量
20.异常捕获
try{
}catch{
}finally{
}

catch{
case ex:Exception=>{
}
}
21.声明某个方法可以抛异常
@throws(classOf[NumberFormatException])
def f1()={
"abc".toInt
}
22.scala的类默认就是public
23.某个字段如果赋值为null,则必须添加类型;某个字段如果赋值为_,则必须添加类型
24.构造器 主构造器和辅助构造器;辅助构造器需要调用主构造器
class Person(pname:String,page:Int){
var name = pname
var age = page

def this(name:String){
this(name,0 )
}
}
25.注解@BeanProperty可以自动生成get和set方法
26.包对象 package object scala2
那么在scala2的类中都可以使用包对象定义的属性和方法
27.伴生类和伴生对象
伴生对象,可以访问伴生类的所有方法和属性
伴生对象,相当于定义的全都是静态的属性和方法
伴生类和伴生对象需要放在同一个文件中,且名字需要相同
伴生对象的apply方法生成对象
28.isInstanceOf asInstanceOf classOf
判断是不是某类,强转成某类,获得类的名字
29. trait 特质
class T1 extends T0 with T2 with T3 with T4 先构造T0再T2再T3再T4再T1
trait特质可以有抽象方法和具体实现
new T1 with T2 with T3 with T4 先T1再T2再T3再T4
30. 集合
immutable 不可变
mutable 可变
1.
定长数组是Array
边长数组是ArrayBuffer
toArray toBuffer是转换成定长,转换成边长
2.
Array.ofDim[Double](3,4) 创建 多维数组
3.
scala的数组和java的数组之间的转化
var arrList = new ProcessBuilder(arr).command()
4.List 不可变集合
31.元组
val tuple = (1,2,"hello")
for(i <- tuple.productIterator){

}
32. List 不可变list
ListBuffer 可变list
::运算符和:::运算符
33. list的map、flatMap、filter、reduceLeft、reduceRight、foldLeft、foldRight、scanLeft、scanRight、zip
collect(偏函数)

34. 11章没看

35.match case 模式匹配
oper match{
case '+'=>{println()}
case '-'=>{println()}
case _ if "a".equals("a"){}
case _=>{println()}
}

36.偏函数 partialFunction 里面需要重写两个方法 isDefinedAt 和 apply

37.匿名函数 val tro = (x:Int)=>{x+1}

38.函数作为入参
def f1(f:(Int,Int)=>Int,x1:Int,x2:Int){
f(x1,x2)
}

39. 并发编程模型AKKA

40.17章的泛型
[]    [_<: A]    [_>:A]

 

41.list中的各种操作符
package test
/**
* scala中的:: , +:, :+, :::, +++, 等操作;
*/
object listTest {
def main(args: Array[String]): Unit = {
val list = List(1,2,3)
// :: 用于的是向队列的头部追加数据,产生新的列表, x::list,x就会添加到list的头部
println(4 :: list) //输出: List(4, 1, 2, 3)
// .:: 这个是list的一个方法;作用和上面的一样,把元素添加到头部位置; list.::(x);
println( list.:: (5)) //输出: List(5, 1, 2, 3)
// :+ 用于在list尾部追加元素; list :+ x;
println(list :+ 6) //输出: List(1, 2, 3, 6)
// +: 用于在list的头部添加元素;
val list2 = "A"+:"B"+:Nil //Nil Nil是一个空的List,定义为List[Nothing]
println(list2) //输出: List(A, B)
// ::: 用于连接两个List类型的集合 list ::: list2
println(list ::: list2) //输出: List(1, 2, 3, A, B)
// ++ 用于连接两个集合,list ++ list2
println(list ++ list2) //输出: List(1, 2, 3, A, B)
}
}

posted @ 2022-08-12 14:32  纯丿乱  阅读(17)  评论(0编辑  收藏  举报