Scala(第一章Scala入门)

文章目录

    • 1.1 概述
      • 1.1.1 为什么学习Scala
      • 1.1.2 Scala发展历史
      • 1.1.3 Scala和Java关系
      • 1.1.4 Scala语言特点
    • 1.2 Scala环境搭建
    • 1.3 Scala插件安装
    • 1.4 HelloWorld案例
      • 1.4.1 创建IDEA项目工程
      • 1.4.2 class和object说明
      • 1.4.3 Scala程序反编译
    • 1.5 关联Scala源码
    • 1.6官方编程指南

1.1 概述

1.1.1 为什么学习Scala

1、Spark------新一代内存级大数据计算框架,是大数据的重要内容。
2、Spark就是使用Scala编写的。因此为了更好的学习Spark,需要掌握Scala这门语言。
3、Spark的兴起,带动Scala语言的发展。

1.1.2 Scala发展历史

1、马丁.奥德斯基 基于java语言的特性,想编写一门更容易上手、语法更简单的语言,于是就发明了两种语言(Pizza&Scala)。
2、JDK5.0和JDK8.0的编译器就是马丁.奥德斯基写的。
3、Pizza和Scala极大地推动了Java编程语言的发展。比如JDK5.0 的泛型、增 强for循 环、自动类型转换等,都是从Pizza引入的新特性。JDK8.0 的类型推断、Lambda表达式就是从Scala引入的特性。

1.1.3 Scala和Java关系

1、一般来说,学习Scala的人,都会Java,而Scala是基于Java的,因此我们需要将Scala和Java以及JVM之间的关系搞清楚,否则学习Scala你会蒙圈。
2、Scala和Java及JVM的关系图
在这里插入图片描述

1.1.4 Scala语言特点

Scala是一门以Java虚拟机(JVM)为运行环境并将面向对象和函数式编程的最佳特性结合在一起的静态类型编程语言(静态语言需要提前编译的如:Java、c、c++等,动态语言如:js)
1、Scala是一门多范式的编程语言,Scala支持面向对象和函数式编程。(多范式,就是多多种编程方法的意思。有面向过程、面向对象、泛型、函数式四种程序设计方法。)
2、Scala源代码(.scala)会被编译成Java字节码(.class),然后运行于JVM之上,并可以调用现有的Java类库,实现两种语言的无缝对接。
3、Scala单作为一门语言来看,非常的简洁高效。
4、Scala在设计时,马丁·奥德斯基是参考了Java的设计思想,可以说Scala是源于Java,同时马丁·奥德斯基也加入了自己的思想,将函数式编程语言的特点融合到Java中,因此,对于学习过Java的同学,只要在学习Scala的过程中,搞清楚Scala和Java相同点和不同点,就可以快速的掌握Scala这门语言。

1.2 Scala环境搭建

(1)安装步骤

1、首先确保JDK1.8安装成功
2、下载对应的Scala安装文件scala-2.12.11.zip
3、解压scala-2.12.11.zip,我这里解压到D:\soft
4、配置Scala的环境变量
在这里插入图片描述
在这里插入图片描述
ps:1、解压路径不能有任何中文路径,最好不要有空格。
2、环境变量要大写SCALA_HOME

(2)测试

需求:计算两数a和b的和。
步骤:
(1)在键盘上同时按win + r 键,并在运行窗口输入cmd命令。
在这里插入图片描述

(2)输入scala并按回车键,启动scala环境。然后定义两个变量,并计算求和。
在这里插入图片描述

1.3 Scala插件安装

默认情况下IDEA不支持Scala的开发,需要安装Scala插件。
(1)插件离线安装步骤

(1)建议将该插件 scala-intellij-bin-2017.2.6.zip 文件,放到 Scala 的安装目录
D:\Tools\scala-2.12.11 下,方便管理。
(2)打开 IDEA,在左上角找到 File->在下拉菜单中点击 Setting… ->点击 Plugins->点击
右 下 角 Install plugin from disk… , 找 到 插 件 存 储 路 径
D:\Tools\scala-2.12.11\scala-intellij-bin-2017.2.6.zip,最后点击 ok。
在这里插入图片描述

(2)插件在线安装(可选)

(1)在搜索插件框里面输入 Scala->点击 Install->点击 ok->点击 apply。
在这里插入图片描述
(2)重启IDEA,再次来到Scala插件页面,已经变成installed。
在这里插入图片描述

1.4 HelloWorld案例

1.4.1 创建IDEA项目工程

(1)打开IDEA -> 点击左侧的File -> 选择New -> 选择Project…
在这里插入图片描述
(2)创建一个Maven工程,并点击next
在这里插入图片描述
(3)GroupId输入com.itcast -> ArtifactId输入Scala -> 点击next -> 点击Finish
注意:工程存储路径一定不要有中文和空格。
在这里插入图片描述
(4)指定项目工作目录空间
在这里插入图片描述
(5)默认下,Maven不支持Scala的开发,需要引入Scala框架。
在scala0513项目上,点击右键-> Add Framework Support… ->选择 Scala->点击 OK
在这里插入图片描述
注意:如果是第一次引入框架,Use libary看不到,需要选择你的Scala安装目录后工具就会自动识别,就会显示user libary。

(6)创建项目的源文件目录

1、右键点击 main 目录->New->点击 Diretory -> 写个名字(比如 scala)。
2、右键点击 scala 目录->Mark Directory as->选择 Sources root,观察文件夹颜色发生变化。
在这里插入图片描述

(7)在scala包下,创建包com.itcast.chapter01包名和Hello类名

1、右键点击 scala 目录->New->Package->输入 com.itcast.chapter01->点击 OK。
2、右键点击 com.itcast.chapter01->New->Scala Class->Kind 项选择 Object->Name 项输入Hello。
在这里插入图片描述

(8)编写输出Hello Scala案例

1、在类中中输入 main,然后回车可以快速生成 main 方法;
2、在 main 方法中输入 println(“hello scala”)
在这里插入图片描述
运行后,观察控制台打印输出:
hello scala
hello scala
说明:Java中部分代码也是可以在Scala中运行。

1.4.2 class和object说明

在这里插入图片描述
在这里插入图片描述

1.4.3 Scala程序反编译

1、在项目的target目录Hello文件上点击右键 -> Show in Explorer -> 看到object底层生成Hello$.class和Hello.class两个文件
2、采用Java反编译工具jd-gui.exe反编译代码,将Hello.class拖到jd-gui.exe页面

在这里插入图片描述
在这里插入图片描述

1.5 关联Scala源码

在使用Scala过程中,为了搞清楚Scala底层的机制,需要查看源码,下面看看如何关联和查看Scala的源码包。
1、查看源码
例如查看Array源码,按住ctrl键 -> 点击Array -> 右上角Attach Sources…
在这里插入图片描述
2、关联源码
(1)将我们的源码包 scala-sources-2.12.11.tar.gz 拷贝到 D:\Tools\scala-2.12.11\lib 文件夹下,并解压为 scala-sources-2.12.11 文件夹
(2)点击 Attach Sources…->选择 D:\Tools\scala-2.12.11\lib\scala-sources-2.12.11,这个文件夹,就可以看到源码了
在这里插入图片描述

1.6官方编程指南

1、在线查看:https://www.scala-lang.org/
2、离线查看:解压 scala-docs-2.11.8.zip,可以获得 Scala 的 API 操作。
在这里插入图片描述

下一章(第二章) 变量和数据类型

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

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

相关文章

【云原生】Docker 详解(一):从虚拟机到容器

Docker 详解(一):从虚拟机到容器 1.虚拟化 要解释清楚 Docker,首先要解释清楚 容器(Container)的概念。要解释容器的话,就需要从操作系统说起。操作系统太底层,细说的话一两本书都说…

C#实现SqlServer数据库同步

实现效果: 设计思路: 1. 开启数据库及表的cdc,定时查询cdc表数据,封装sql语句(通过执行类型,主键;修改类型的cdc数据只取最后更新的记录),添加到离线数据表; 2. 线程定时查询离线数据表&#xf…

IoT 物联网安全事件的持续检测和监控解决方案

对于IoT物联网安全事件的持续检测和监控,可以采用以下解决方案: 设备管理和漏洞修复:确保设备的固件和软件及时更新,并修补已知的漏洞。建立一个设备清单,并定期审查和更新其中的设备。 流量分析和异常检测&#xff1a…

Java EE 突击 9 - Spring Boot 日志文件

Spring Boot 日志文件 学习目标一 . 日志有什么用1.1 日志格式说明 二 . 自定义日志打印2.1 得到日志对象2.2 使用日志对象提供的方法 , 输出自定义的日志内容2.3 日志的级别 三 . 日志持久化3.1 在配置文件里面设置日志名称3.2 设置日志的保存目录 四 . 日志级别的设置五 . 简…

Dockerfile定制Tomcat镜像

Dockerfile中的打包命令 FROM : 以某个基础镜像作为此镜像的基础 RUN : RUN后面跟着linux常用命令,如RUN echo xxx >> xxx,注意,RUN 不能用于执行命令,因为每个RUN都是独立运行的,RUN 的cd对镜像中的…

【玩转pandas系列】pandas加载数据,分箱操作和时间序列,绘制图形

知识目录 前言一、加载数据1 - 加载CSV文件2 - 加载Excel文件3 - 加载数据库数据 二、分箱1 - 等宽分箱2 - 等频分箱 三、时间序列1 - Timestamp和Period的创建2 - 索引和切片3 - 属性和移动4 - 频率转换5 - 数据聚合 四、pandas绘制图形1 - 折线图2 - 柱状图3 - 直方图4 - 饼图…

uniapp微信小程序 401时重复弹出登录弹框问题

APP.vue 登陆成功后,保存登陆信息 if (res.code 200) {uni.setStorageSync(loginResult, res)uni.setStorageSync(token, res.token);uni.setStorageSync(login,false);uni.navigateTo({url: "/pages/learning/learning"}) }退出登录 toLogout: func…

基于微信小程序的传染病酒店隔离平台设计与实现(Java+spring boot+MySQL+微信小程序)

获取源码或者论文请私信博主 演示视频: 基于微信小程序的传染病酒店隔离平台设计与实现(Javaspring bootMySQL微信小程序) 使用技术: 前端:html css javascript jQuery ajax thymeleaf 微信小程序 后端:…

Vue3 表单输入绑定简单应用

去官网学习→表单输入绑定 | Vue.js 运行示例&#xff1a; 代码&#xff1a;HelloWorld.vue <template><div class"hello"><h1>Vue 表单输入绑定</h1><input type"text" placeholder"输入框" v-model"msg"…

github pages 用法详解 发布自己的网站

github pages 基础用法 URL 规则 假设你的 github 帐号为 mygithub&#xff0c;需要发布的仓库名为 myrepo&#xff0c;那么 pages 的 URL 为&#xff1a; https://mygithub.github.io/myrepo 添加内容 用任意编辑器写好&#xff08;或者生成&#xff09;标准的网页内容&a…

/proc directory in linux

Its zero-length files are neither binary nor text, yet you can examine and display themUnder Linux, everything is managed as a file; even devices are accessed as files (in the /dev directory). Although you might think that “normal” files are either text …

由于目标计算机积极拒绝,无法连接。 Could not connect to Redis at 127.0.0.1:6379

项目在启动时候报出redis连接异常 然后查看是redis 连接被计算机拒绝 解决方法 打开redis安装文件夹 先打开redis-servce.exe挂着&#xff0c;再打开redis-cli.exe 也不会弹出被拒接的问题了。而且此方法不用每次都去cmd里输入命令。

nginx负载均衡(反向代理)

nginx负载均衡 负载均衡&#xff1a;由反向代理来实现。 nginx的七层代理和四层代理&#xff1a; 七层是最常用的反向代理方式&#xff0c;只能配置在nginx配置文件的http模块当中&#xff0c;而且配置方法名称&#xff1a;upstream模块&#xff0c;不能写在server模块中&#…

如何搭建个人的GPT网页服务

写在前面 在创建个人的 GPT网页之前&#xff0c;我登录了 Git 并尝试了一些开源项目&#xff0c;但是没有找到满足我个性化需求的设计。虽然许多收费的 GPT网页提供了一些免费额度&#xff0c;足够我使用&#xff0c;但是公司的安全策略会屏蔽这些网页。因此&#xff0c;我决定…

volatile,解决内存可见性引起的问题,wait和notify

补充&#xff1a;synchronized&#xff08;务必会读&#xff08;辛可肉耐子&#xff09;会写&#xff09;&#xff0c;要搭配一个对象的时候&#xff0c;不一定非要是访问的this成员 synchronized(锁对象&#xff09;{ 代码块} public synchronized static void func(){} 静态方…

木马免杀(篇一)基础知识学习

木马免杀&#xff08;篇一&#xff09;基础知识学习 ———— 简单的木马就是一个 exe 文件&#xff0c;比如今年hw流传的一张图&#xff1a;某可疑 exe 文件正在加载。当然木马还可能伪造成各式各样的文件&#xff0c;dll动态链接库文件、lnk快捷方式文件等&#xff0c;也可能…

.net core的Knife4jUI,让swagger更精致

要在 .NET Core 中使用 IGeekFan.AspNetCore.Knife4jUI&#xff0c;您可以按照以下步骤进行配置&#xff1a; 首先&#xff0c;安装 IGeekFan.AspNetCore.Knife4jUI NuGet 包。可以通过 Visual Studio 的 NuGet 包管理器或者 .NET CLI 进行安装。 在 Startup.cs 文件的 Config…

电脑数据怎么加密?电脑数据加密软件有哪些?

在生活和工作中&#xff0c;我们总离不开电脑&#xff0c;而电脑中那些重要的数据&#xff0c;需要我们加密保护。那么电脑数据该怎么加密呢&#xff1f;电脑数据加密软件又有哪些呢&#xff1f;下面我们就来了解一下吧。 电脑数据加密软件 一般来说&#xff0c;常见的电脑加密…

【从零学习python 】10.Python条件语句和if嵌套详解

文章目录 elif一、 elif的功能二、注意点if嵌套想一想&#xff1a; 一、if嵌套的格式二、if嵌套的应用为什么结果3和结果4相同&#xff1f;&#xff1f;&#xff1f; 猜拳游戏运行效果:参考代码: if补充内容三、自动类型转换进阶案例 elif 如果有这样一种情况&#xff1a;当条件…

Electron学习1 安装环境与第一个程序

Electron学习1 安装环境与第一个程序 一、 Electron 简介二、安装 nvm三、安装nodejs四、安装nrm五、安装electron1. npm 初始化2. 创建 package.json3. 安装electron4. 创建一个页面5. 创建文件main.js6. 创建预加载器文件 preload.js7. 启动程序 六、打包 一、 Electron 简介…