Scala是基于jvm的静态语言。
在定义函数的时候,后面的=的作用:如果函数有返回值的时候必须有“=”,如果没有返回值的时候可以不带“=”。如果没有显示的指定返回值类型,默认Unit.
def add(a:Int,b:Int):Int={ a+b } for循环支持这种格式for(i <- 1 to 10 if i%2==0){ println(i) } ================================================================================================= 类在new出一个对象的时候,会首先执行一遍主类的语句(在new Person的时候会首先执行两个println的语句)。~~~~~持续更新中~~~~~~class Person(var name:String,var age:Int){ println("this is the person class") println("name:"+this.name+" age:"+this.age) }在主构造方法中定义变量的时候,需要带var/val,默认是private(this)。
在继承Person的时候,主构造方法不需要带var/val.class Student(name:String,age:Int,var bj:String) extends Person(name,age){ override def toString="tostring method" } 在重写父类的方法或变量时,需要用关键字overwrite。 case class的使用:abstract class Animal; case class Cat(name:String) extends Animal; case class Dog(name:String) extends Animal; object FourDemo extends App{ def findAnimal(a:Animal){ a match { case Cat(_) => println("this is a cat") case Dog(_) => println("this is a dog") case _ => println("other") } } findAnimal(Cat("kk"))} ======================================================================================== 集合: List集合由head和tail组成。val list = List(1,2,3,4) println(list.head) //1 println(list.tail) //2,3,4 集合都有可变和不可变两种,可变的集合都在scala.collection.mutable包下面,对list来说。 是ListBuffer。 对可变集合的操作要区分+/-/++/--是会创造一个新的Set,而+=/++=/-=/--=是不会创造一个新 的集合的。 集合中重要的方法: map/filter/foreach/reduce/flatten/flatMap/sum/max/minval list = List(1,2,3,4) println(list.map(_*2)) //List(2, 4, 6, 8) println(list.map(_*2).filter(_>2)) //List(4, 6, 8) list.map(_*2).filter(_>2).foreach(println) //468 println(list.map(_*2).filter(_>2).reduce(_+_)) val list2=List("a","b","c") println(list zip list2) //List((1,a), (2,b), (3,c)) val list3=List(List(1,2),List(3,4),List(5)) println(list3.flatten) //List(1, 2, 3, 4, 5) println(list3.flatMap(_.map(_*2))) // List(2, 4, 6, 8, 10)println(list.sum) //10