Scala(第一章Scala入门)

news2024/12/22 22:13:51

文章目录

    • 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 操作。
在这里插入图片描述

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Arch Linux 使用桥接模式上网

如果我们想要将虚拟机与物理主机同一网段,并且像物理机器一样被其他设备访问,则需要以桥接模式上网,这个时候,物理主机就必须配置为使用网桥上网了。 注意:这里我们使用了 NetworkManager 网络管理工具中的 nmcli 来进…

File 类和 InputStream, OutputStream 的用法总结

目录 一、File 类 1.File类属性 2.构造方法 3.普通方法 二、InputStream 1.方法 2.FileInputStream 三、OutputStream 1.方法 2.FileOutputStream 四、针对字符流对象进行读写操作 一、File 类 1.File类属性 修饰符及类型属性说明static StringpathSeparator依赖于系统的路…

【T3】金蝶kis凭证数据转换到畅捷通T3软件中。

【问题需求】 将金蝶软件中的账套转换到畅捷通T3软件中。 由于金蝶老版本使用的是非sql server数据库。 进而需要将其数据导入到sql中,在转换到T3。 【转换环境】 金蝶中数据:凭证;科目无项目核算。 1、金蝶的数据文件后缀为.AIS; 2、安装office2003全版软件; 3、安装sq…

SpringBoot3文件管理

标签:上传.下载.Excel.导入.导出; 一、简介 在项目中,文件管理是常见的复杂功能; 首先文件的类型比较多样,处理起来比较复杂,其次文件涉及大量的IO操作,容易引发内存溢出; 不同的…

Codeforces Round 890 (Div. 2) C. To Become Max(二分 补写法 二分套二分)

题目 给定一个长度为n(n<1e3)的数组&#xff0c; 在一次操作里&#xff0c;你可以选择一个满足a[i]<a[i1]的下标i(1<i<n-1)&#xff0c;对a[i]加一 问&#xff0c;你最多操作k次的情况下&#xff0c;数组的最大值是多少&#xff0c;输出最大值 思路来源 Submi…

【C++精华铺】5.C++类和对象(中)类的六个默认成员函数

目录 1. 六个默认成员函数 2. 构造函数 2.1 概念 2.2 默认构造 2.2.1 系统生成的默认构造 2.2.2 自定义默认构造函数 2.3 构造函数的重载 3. 析构函数 3.1 概念 3.2 系统生成的析构函数 3.3 自定义析构函数 4. 拷贝构造 4.1 概念 4.2 默认生成的拷贝构造&#xff08;浅…

解锁滴滴ES的性能潜力:JDK 17和ZGC的升级之路

前文介绍了滴滴自研的ES强一致性多活是如何实现的&#xff0c;其中也提到为了提升查询性能和解决查询毛刺问题&#xff0c;滴滴ES原地升级JDK17和ZGC&#xff0c;在这个过程中我们遇到了哪些问题&#xff0c;怎样解决的&#xff0c;以及最终上线效果如何&#xff0c;这篇文章就…

云计算技术——多GPU渲染的云渲染服务

多GPU渲染的云渲染服务&#xff0c;是一种利用云计算技术&#xff0c;将多个图形处理器&#xff08;GPU&#xff09;集成在一起&#xff0c;为用户提供高效、便捷、低成本的渲染解决方案的服务。本文将从多GPU渲染的概念、优势、应用场景&#xff0c;云渲染服务的特点、优势&am…

【C++】初阶 --- 内联函数(inline)

文章目录 &#x1f95e;内联函数&#x1f35f;1、C语言实现"宏函数"&#x1f35f;2、内联函数的概念&#x1f35f;3、内联函数的特性&#x1f35f;4、总结 &#x1f95e;内联函数 &#x1f35f;1、C语言实现"宏函数" &#x1f970;用C语言先来实现普通的…

并发——volatile 关键字

文章目录 1. CPU 缓存模型2. 讲一下 JMM(Java 内存模型)3. 并发编程的三个重要特性4. 说说 synchronized 关键字和 volatile 关键字的区别 我们先要从 CPU 缓存模型 说起&#xff01; 1. CPU 缓存模型 为什么要弄一个 CPU 高速缓存呢&#xff1f; 类比我们开发网站后台系统使…

分布式 - 服务器Nginx:一小时入门系列之静态网页配置

文章目录 1. 静态文件配置2. nginx listen 命令解析3. nginx server_name 命令解析4. nginx server 端口重复5. nginx location 命令 1. 静态文件配置 在 /home 文件下配置一个静态的AdminLTE后台管理系统&#xff1a; [rootnginx-dev conf.d]# cd /home [rootnginx-dev home…

flutter项目给安卓打正式包 和升级版本号

1.首先把flutter项目里的android目录整个拖进android studo里,运行一下看看是否能运行 2.Build->Generate Signed Bundle/APK… 点击APK->Next 如果没有key酒店及Create new…就生成新的key 点击Key store path:右边的图标选择保存路径 选择保存的路径,并且在Save…

【雕爷学编程】Arduino动手做(01)---干簧管传感器模块4

37款传感器与模块的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&#x…

logo一键生成的操作,没有设计经验也无妨

您可能会担心&#xff0c;没有设计经验如何设计一个独特而专业的标志&#xff08;Logo&#xff09;。但是&#xff0c;随着技术的进步&#xff0c;现在有许多一键生成操作的设计工具可供使用&#xff0c;使人们更容易创建自己的Logo。 什么是一键生成操作&#xff1f; 一键生成…

若依vue -【 100 ~ 更 】

100 主子表代码生成详解 1 新建数据库表结构&#xff08;主子表&#xff09; -- ---------------------------- -- 客户表 -- ---------------------------- drop table if exists sys_customer; create table sys_customer (customer_id bigint(20) not null…

《大型网站技术架构》第二篇 架构-高可用

高可用在公司中的重要性 对公司而言&#xff0c;可用性关系网站的生死存亡。对个人而言&#xff0c;可用性关系到自己的绩效升迁。 工程师对架构做了许多优化、对代码做了很多重构&#xff0c;对性能、扩展性、伸缩性做了很多改善&#xff0c;但别人未必能直观地感受到&#…

字节编码学习

字节编码学习 文章目录 字节编码学习01_字节与ASCII码表02_每个国家都有独特的码表03_国际化UTF-804_编码本和解码本不一致&#xff0c;乱码 01_字节与ASCII码表 public class Demo01 {public static void main(String[] args) {// 计算机的底层全部都是字节 ---- ----// 一个…

Android Studio实现简单ListView

效果图 MainActivity package com.example.listviewtest;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle; import android.widget.ListView;import com.example.listviewtest.adapter.PartAdapter; import com.example.listviewtest.bean.PartB…

多目标优化之MOEA-D算法,MATLAB代码,免费获取

今天给大家分享一期MOEA/D算法。1 引言 基于分解的多目标进化算法(MOEA/D)的核心思想将多目标优化问题被转化为一系列单目标优化子问题或者是多个多目标的子问题&#xff0c;然后利用子问题之间的邻域关系&#xff0c;采用协作的方式对这些子问题同时进行优化。从而向整个Paret…

大麦订单截图 一键生成订单截图

新版付款图样式展示 这个样式图就是在大麦刚付款完的一个订单截图&#xff0c;它的状态是等待卖家发货 下滑下载源码 下载源码&#xff1a;https://pan.baidu.com/s/16lN3gvRIZm7pqhvVMYYecQ?pwd6zw3