Scala 入门介绍和环境搭建

embedded/2024/10/21 23:07:09/

一、简介

  • Scala 是一门以 Java 虚拟机(JVM)为运行环境并将面向对象和函数式编程的最佳特性结合在一起的静态类型编程语言 (静态语言需要提前编译,如:Java、c、c++ 等,动态语言如:js)
  • Scala 是一门多范式的编程语言,Scala 支持面向对象和函数式编程 (多范式,即多种编程方法。有面向过程、面向对象、泛型、函数式四种程序设计方法)
  • Scala 源代码 .scala 会被编译成 Java 字节码 .class,然后运行于 JVM 之上,并可以调用现有的 Java 类库,实现两种语言的无缝对接
  • Scala 非常的简洁高效

二、Scala 和 Java 的关系

在这里插入图片描述

  • 在 Scala 代码中可以使用 Java 的类库和语法
  • Scala 和 Java 的源码文件都会被各自的编译器编译成 .class 文件运行在 JVM 上
  • Scala 的 SDK 中对 Java 的类库做了包装

三、Scala 环境搭建

以在 Windows 系统安装 Scala 2.12 版本为例

  • 官网下载地址:https://www.scala-lang.org

  • 首先要在 Windows 系统上安装 JDK 1.8 并配置环境变量

  • 进入官网下载 Scala 安装文件 scala-2.12.11.zip

  • 将安装文件解压到一个无中文和空格路径的目录 (如:D:\DevTools)

  • 配置 Scala 环境变量
    在这里插入图片描述

    SCALA_HOME=D:\DevTools\scala-2.12.11
    Path=.......;%SCALA_HOME%\bin
    
  • 打开 cmd 窗口运行 scala 命令检测安装结果

    scalaWelcome to Scala 2.12.11 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_212).
    Type in expressions for evaluation. Or try :help.scala>
    

四、HelloWorld 案例

  • 编写程序源码 HelloWorld.scala
    scala">object HelloWorld {def main(args:Array[String]) : Unit = {println("Hello World!")  }
    } 
    
  • 源码说明
    • object:关键字,用于声明一个单例对象,通常称为伴生对象;可以实现类似 Java 的 static 静态方法的功能
    • main 方法:程序的主入口
    • scala 方法组成:def 方法名称(参数名称:参数类型):返回值类型 = {方法体}
    • Unit 类型相当于 Java 的 void 类型
    • object HelloWorld 源码文件经过编译后会生成两个字节码文件,即两个类(class)
      • HelloWorld 类:程序的主入口,也是伴生对象(单例对象)的伴生类,伴生类的静态属性和方法可以在伴生对象中定义,全局只有一份
      • HelloWorld$ 类:程序的具体执行类,也是伴生对象的所属类 ,即伴生对象是该类的属性
  • 打开 CMD 使用 scalacscala 命令编译解释运行源码文件
    scalac HelloWorld.scala
    scala HelloWorld
    
  • 编译文件解析
    • 编译源文件会生成两个字节码文件:HelloWorld.classHelloWorld$.class
    • HelloWorld.class 文件是 main 方法的入口,内部调用的是 HelloWorld$ 类中自身静态对象(构造方法私有化,静态代码块创建对象)的 main 方法
    • HelloWorld$ 类中的 main 方法调用的是 Predef$ 类的 println 方法

http://www.ppmy.cn/embedded/43141.html

相关文章

WEB--NeDB

1.定义 NeDB is a lightweight document DBMS written in JavaScript. 全称:Node.js Embedded Database can be used both as embedded嵌入式(保存) and in-memory 内存式(不保存) It is a lightweight NoSQL data…

php爬虫之获取淘宝商品数据

爬取淘宝信息数据 首先需要先导入webdriver 1.from selenium import webdriver webdriver支持主流的浏览器,比如说:谷歌浏览器、火狐浏览器、IE浏览器等等 然后可以创建一个webdriver对象,通过这个对象就可以通过get方法请求网站 1.driver…

4-主窗口

4-主窗口 1、简介2 菜单栏、工具栏、状态栏2.1 菜单栏2.2 QAction2.3 工具栏2.4 状态栏 3 混合方式UI设计 1、简介 QMainWindow是一个为用户提供主窗口程序的类,包含一个菜单栏、多个工具栏、多个停靠控件、一个状态栏以及一个中心控件,是许多应用程序&…

CentOS 7安装prometheus

说明:本文介绍如何在CentOS操作系统上安装prometheus Step1:下载安装包 访问Github仓库,下载对应版本的prometheus安装包 https://github.com/prometheus/prometheus/releases 操作系统的版本信息,可通过下面这两个命令查看&am…

10.SpringBoot 统一处理功能

文章目录 1.拦截器1.1在代码中的应用1.1.1定义拦截器1.1.2注册配置拦截器 1.2拦截器的作用1.3拦截器的实现 2.统一数据返回格式2.1 为什么需要统⼀数据返回格式?2.2 统⼀数据返回格式的实现 3.统一异常处理4.SpringBoot专业版创建项目无Java8版本怎么办?…

C#面:当一个线程进入一个对象的方法后,其它线程是否可以进入该对象的方法?

一个线程在访问一个对象的一个synchronized方法时: 另一个线程可以同时访问这个对象的非同步方法。另一个线程不可以同时访问这个对象的普通同步方法。另一个线程可以同时访问这个对象的静态同步方法 ,即static synchronized修饰的方法 。另一个线程不可…

Java小抄(一)|Java中的List与Set转换

文章目录 List和Set的区别线程安全的区别相互转换List->SetSet->List List和Set的区别 在Java中,List和Set都是集合接口,它们之间有几个关键的区别: 重复元素: List允许重复元素,可以存储相同的元素多次。Set…

前端基础入门三大核心之JS篇:掌握数字魔法 ——「累加器与累乘器」的奥秘籍【含样例代码】

前端基础入门三大核心之JS篇:掌握数字魔法 ——「累加器与累乘器」的奥秘籍 🧙‍♂️ 基础概念:数字的魔杖与炼金术累加器(Accumulator)累乘器(Multiplier) 📚 实战演练:…