知识点:(1)apply方法的作用是在对象做初始化的时候,如果出现对象中缺少一些标志或标识符,scala会自动调用该类下面的apply方法
(2)注意:如果一个object中的main方法不能运行的时候,检查一下包和所在的包结构的包是否一致
(3)scala中也有listBuffer,StringBuffer
(4)在scala中只要见到=>就是函数,_ 前面这个符号代表任意元素
(5)集合中的常用方法:foreach()方法遍历集合中的元素 distinct()方法消除冗余去重的 sortBy()根据什么排序 filter()过滤,()里加条件,满足条件的保留
1.数组:
var array1 =new Array(2);//定长数组,在创建的时候就制定了长度(2)
array1(0) = 4 //添加数据
array1(1) = 5
for(i <- array1){ //循环
println(i)
}
var array2 = Array(1,2,3)//变长数组
for(i <- 0 to array2.length-1){ //长度减1,否则报数组下标越界
println(array2(i))
}
//冒泡排序
var array3 = Array(1,8,2,4,6,5);
var temp = 0
for(i <- 0 to array3.length-1){
for(j <- 0 to array3.length-1){
if(array3(i)<array3(j)){
temp = array3(i)
array3(i) = array3(j)
array3(j) = temp
}
}
}
for(i <- 0 to array3.length-1){
println(array3(i))
}
可变的数组:
var a = new ArrayBuffer[Int]()
a.+=(1)
2.scala中object和class的区别
(1)在scala中由于没有static这个关键字,规定只要是写在object中的属性或方法都是static的
(2)如果想要一个class运行,必须有一个object,规定如果object的名称和class的名称是一致的,我们将该object称之为这个class的伴生对象
(3)一个类必须要有一个伴生对象
(4)当class和object里都有apply方法,我们在新建对象的时候:如果var a = 类名,没有new关键字,那么调用的是object里的apply的方法,如果有则是class里的apply方法
3.implicit是隐式的意思,见到这个就是隐式转换
例:如果是int类型的话的话,在程序运行的时候predef这个类会将int转换成runtime下的richInt,然后richInt里有to方法,int里没哟to方法,这样int类型的值就可以点出来to方法
4.元祖
var a = (1,2,3) 下标从1开始
println(a._1) 输出元祖的下标为1的数也就是1
var list = List((1,2,3),(4,5,6),(7,8,9)) //list集合中每一个元素都是元祖
5.继承和实现
(1)scala中继承之后重写的方法必须添加override关键字
(2)scala中没有接口,提供trait(特性)相当于接口所以第一个必须用extends,之后在需要实现其他的类的话,用with关键字
09-02