scala part1 黑马

scala是基于JVM的多范式编程语言(函数式的面向对象语言)

兼容java(可以访问java类库)

静态类型,支持类型推断和模式匹配

环境

java版本 1.8

scala版本 2.11.12(下载地址:https://www.scala-lang.org/download/2.11.12.html

IDEA 版本2020.3.2(要下载和IDEA版本一致的scala插件)

scala定义变量

val/var 变量名:变量类型 = 初始值(用val的,不可重新赋值,用var可以)(或者使用类型推断来定义变量(val/var 变量名 = 初始值))

插值表达式(s"name = ${name}")

"""中间的内容,换行,空格也可以"""

惰性赋值(lazy val/var 变量名 = 表达式)

当有一些变量保存的数据较大,而且这些数据又不需要马上加载到JVM中,就用惰性赋值(用到时加载)

(数据类型 Unit 相当于java的void,Nothing是所有类型的子类,一般结合异常来使用)

接受键盘输入(stdIn.readxxx)

scala的条件表达式有返回值,java没有(val result = if(condition == 1) 1 else 0)

块表达式

val a = {

   print("1+1")

   1+1 //最后一行作为a的值

}

for循环

val num = 1 to 10

for(i <- num, j <- 1 to 5){

}

守卫

for(i <- 2 to 12 if i%3==0) print(i) //打印能被三整除

for推导式,yield生成集合

val name = for(i<-1 to 10) yeild i * 10

如果要使用break,continue,需要引用相应的包

break:

breakable{
   for(i <- 1 to 10)
      if(i == 5) break() else print(i)
}

continue

for(i <- 1 to 10){
   breakable{
      if(i == 5) break() else print(i)
   }
}

方法

def 方法名(参数名:参数类型,参数名:参数类型) : [return type] = {
方法体
}

lazy 不能修饰var

函数

val getSum = (a:Int,b:Int) => a + b
val res = getSum(1,2)

伴生对象和伴生类实现了静态方法和普通方法等的分离

当object修饰的单例对象名和类名重复时,他就是伴生对象

apply免new

单例对象可以继承类

变量重写时不能重写var修饰的变量

方法重写

scala除了抽象方法,还有抽象字段

猜你喜欢

转载自blog.csdn.net/qq_40473204/article/details/113810181