Scala 入门介绍和环境搭建

一、简介

  • 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 命令检测安装结果

    scala
    
    Welcome 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
    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 方法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/643163.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

海康威视硬盘录像机NVR连接公网视频监控平台,注册失败,抓包发现有403 forbidden的问题解决

目录 一、问题描述 二、问题定位 1、查看DVR的配置 2、查看需要使用的端口是否开放 3、查看日志 4、抓包 (1)找出错误 (2)查看数据包内容 三、问题分析 1、国标28181中的域的概念 2、域应该如何定义 (1&am…

嵌入式学习——3——UDP TFTP简易文件传输

tftp协议概述 简单文件传输协议,适用于在网络上进行文件传输的一套标准协议,使用UDP传输 特点: 是应用层协议 基于UDP协议实现 数据传输模式 octet:二进制模式(常用) mail:已经不再支持 TFTP通信…

SPI通信(STM32)

一、SPI通信 1、SPI(Serial Peripheral Interface)是由Motorola公司开发的一种通用数据总线 2、四根通信线:SCK(Serial Clock)、MOSI(Master Output Slave Input)、MIS…

C语言之函数和函数库以及自己制作静态动态链接库并使用

一:函数的本质 1:C语言为什么会有函数 (1)整个程序分为多个源文件,一个文件分为多个函数,一个函数分成多个语句,这就是整个程序的组织形式。这样的组织好处在于:分化问题、、便于程序…

独享IP是原生IP吗?二者有何区别?

原生IP: 原生IP是指由Internet服务提供商(ISP)直接分配给用户的IP地址,这些IP地址通常反映了用户的实际地理位置和网络连接。原生IP是用户在其所在地区或国家使用的真实IP地址,与用户的物理位置直接相关。在跨境电商中…

2024年5月22日 (周三) 叶子游戏新闻

《奇星协力》Steam抢先体验开启 求生城市建造Leikir Studio工作室开发的一款求生城市建造新游《奇星协力》Steam抢先体验开启,限时九折优惠,本作支持中文,感兴趣的玩家可以关注下了。 《原神》预告4.7版本前瞻特别节目 5月24日播出5月22日&am…

韵搜坊 -- Elastic Stack快速入门

文章目录 现有问题Elastic Stack介绍(一套技术栈)安装ES安装KibanaElasticsearch概念倒排索引Mapping分词器IK分词器(ES插件)打分机制 ES的几种调用方式restful api调用(http 请求)kibana devtools客户端调…

00.OpenLayers快速开始

00OpenLayers快速开始 官方文档: 快速开始:https://openlayers.org/doc/quickstart.html 需要node环境 一、设置新项目 npm create ol-app my-app cd my-app npm start第一个命令将创建一个名为 my-app​ 的目录(如果您愿意,…

HarmonyOS鸿蒙应用开发——ArkTS的“内置组件 + 样式 + 循环和条件渲染”

一、内置组件是咩? 学过前端的都知道,一个组件就是由多个组件组成的,一个组件也可以是多个小组件组成的,组件就是一些什么导航栏、底部、按钮......啥的,但是组件分为【自定义组件】跟【内置组件】 【自定义组件】就…

Java生成Shp文件-点(Point)

Java生成Shp文件-点(Point) 生成面相关Shp: 使用Java生成shp文件-面(Polygon) 1. 使用的依赖和面相同 同上 2. 待处理的JSON数据格式 [ {"yield":"226.82","coordinates":[123.6705525,48.434689999999996],"wybm":"05011680…

C语言 变量的存储类型

今天 我们来说变量的存储类型 变量的存储类型是指系统为变量分配存储区域的方式。 决定着变量存储空间在哪里分配,和变量的生存期、作用域存在着一定联系。 动态存储 函数调用发生时系统根据函数定义的需要动态为其分配的一个栈区,函数调用结束时释放…

C# NetworkStream 流的详解与示例

文章目录 一、NetworkStream类的基本概念1.1 NetworkStream类概述1.2 NetworkStream类属性1.3 NetworkStream类方法 二、NetworkStream的连接方式三、NetworkStream的传输模式四、NetworkStream类示例服务器端代码:客户端代码: 五、总结 在C#中&#xff…

【C++算法】BFS解决单源最短路问题相关经典算法题

1.迷宫中离入口最近的出口 首先我们可以将这道题目简化一下,可以往我们这一章的主题上面来想想。 我们利层序遍历来解决最短路径问题,是最经典的做法。我们可以从起点开始层序遍历, 并组在遍历的过程中记录当前遍历的层数。这样就能在找到出口的时候&…

基于open3d对kitti数据集检测结果可视化

前言 KITTI数据集是自动驾驶和计算机视觉领域中一个广泛使用的基准数据集,它提供了丰富的传感器数据,包括激光雷达、相机和GPS等。Open3D是一个功能强大的3D数据处理和可视化库,支持多种3D数据格式。本文将介绍如何使用Open3D对KITTI数据集的…

html简述——part1

HTML概述 HTML(HyperText Markup Language)是一种用于创建网页的标准标记语言,具体指超文本标记语言。它不是一种编程语言,而是一种标记语言,用于描述网页的结构和内容。通过HTML,开发者可以定义网页的标题…

sky walking日志采集以及注意事项

文章目录 1,sky walking日志采集功能概述2,采集log4j2日志3,采集logback日志4,效果展示5,注意事项 1,sky walking日志采集功能概述 在介绍Sky walking日志采集功能之前,最好在系统学习一遍日志…

使用FP8加速PyTorch训练的两种方法总结

在PyTorch中,FP8(8-bit 浮点数)是一个较新的数据类型,用于实现高效的神经网络训练和推理。它主要被设计来降低模型运行时的内存占用,并加快计算速度,同时尽量保持训练和推理的准确性。虽然PyTorch官方在标准…

primeflex样式库笔记 Display相关的案例

回顾 宽度设置的基本总结 w-full:表示widtdh:100%;占满父容器的宽度。 w-screen:表示占满整个屏幕的宽度。 w-1到w-12,是按百分比划分宽度,数字越大,占据的比例就越大。 w-1rem到w-30rem&…

欧拉函数、快速幂、扩展欧几里得算法、中国剩余定理和高斯消元

欧拉函数 给定 n 个正整数 ai,请你求出每个数的欧拉函数。 欧拉函数的定义1∼N 中与 N 互质的数的个数被称为欧拉函数,记为 ϕ(N)。 若在算数基本定理中,Np1a11p2a2…pmm,则:ϕ(N) Np1−1/p1p2−1/p2…pm−1/pm 输…

WPF之打印与预览

目录 1,打印设置与管理。 1.1,引入程序集: 1.2,主要管理类介绍: 1.3,应用: 1.4,效果。 1.5,Demo链接。 2,打印。 2.1,主要参与打印的类与…