学习链接:https://www.bilibili.com/video/BV1Xh411S7bP?spm_id_from=333.999.0.0


1 概述

1.1 优点

  • Scala基于JVM,和Java完全兼容,同样跨平台、可移植性好、方便垃圾回收
  • Scala比Java更加面向对象
  • Scala是一门函数式编程语言
  • Scala更适合大数据的处理,内存级大数据计算框架,对集合类型数据处理有非常好的支持

    1.2 Scala和Java的关系

    QQ截图20220523163734.png

    1.3 Scala语言特点

    以Java虚拟机为运行环境并将面向对象和函数式编程的最佳特性结合在一起的静态类型编程语言

  • Scala是一门多范式的编程语言,Scala支持面向对象和函数式编程。(多范式,就是多种编程方法。有面向过程、面向对象、泛型、函数式四种程序设计方法。)

  • Scala源代码(.scala)会被编译成Java字节码(.class),然后运行于JVM之上,并可以调用现有的Java类库,实现两种语言的无缝对接。
  • Scala单作为一门语言来看,非常的简洁高效。
  • Scala在设计时,参考了Java的设计思想

    2 Scala环境搭建

  1. 安装JDK1.8
  2. 下载对应的Scala安装文件 scala-lang.org
  3. 解压zip
  4. 配置环境变量

QQ截图20220523164945.png
QQ截图20220523165007.png

  1. 测试

QQ截图20220523165121.png
做a+b
QQ截图20220523165255.png
退出
QQ截图20220523165543.png

  1. 编译运行Scala程序

    1. object HelloScala{
    2. def main(args: Array[String]): Unit = {
    3. println("hello scala")
    4. }
    5. }
    C:\Users\ace\Desktop> scalac HelloScala.scala
    

    QQ截图20220523172022.png生成了两个字节码文件

    C:\Users\ace\Desktop>scala HelloScala
    hello scala
    

    3 IDEA中Scala插件安装

    QQ截图20220523184737.png

    4 HelloWorld案例

  2. 在IDEA中创建Maven

  3. main目录下创建scala目录,右键->Mark Directory as->Sources RootQQ截图20220523185719.png
  4. 对于当前项目,右键-> Add Frameworks Support->选中scala
  5. scala目录下创建一个package,hello

QQ截图20220523190338.png

  1. 创建一个Object,HelloWorld ```scala package hello

object HelloWorld { def main(args: Array[String]): Unit = { println(“hello world”) } }

    也可以调Java的类库
```scala
package hello

object HelloWorld {
  def main(args: Array[String]): Unit = {
    println("hello world")
    System.out.println("hello scala for java")
  }
}
  • object:关键字,声明一个单例对象(伴生对象)
  • main方法:从外部可以直接调用执行的方法

def 方法名称 (参数名称:参数类型): 返回值类型 = { 方法体 }

package hello

class Student(name: String, age: Int) {
  def printInfo(): Unit = {
    // school这个属性在Java中是static的,全局只有一份
    println(name + " " + age + " " + Student.school)
  }
}


// 引入伴生对象
object Student {
  val school: String = "aaa"

  def main(args: Array[String]): Unit = {
    val aaaa = new Student("aaaa", 20)
    val bbbb = new Student("bbbb", 21)
    aaaa.printInfo()
    bbbb.printInfo()
  }
}

QQ截图20220523192510.png

5 关联源码

  1. 从官网中下载源码包

QQ截图20220523193220.png

  1. 拷贝到安装路径下的lib文件夹,解压
  2. 点Attach Source -> 选择刚才的文件夹