Scala第一章节

Scala第一章节

scala总目录

章节目标

  1. 理解Scala的相关概述
  2. 掌握Scala的环境搭建
  3. 掌握Scala小案例: 做最好的自己

1. Scala简介

1.1 概述

​ Scala(斯嘎拉)这个名字来源于"Scalable Language(可伸缩的语言)", 它是一门基于JVM的多范式编程语言, 通俗的说: Scala是一种运行在JVM上的函数式的面向对象语言. 之所以这样命名, 是因为它的设计目标是: 随着用户的需求一起成长. Scala可被广泛应用于各种编程任务, 从编写小型的脚本到构建巨型系统, 它都能胜任. 正因如此, Scala得以提供一些出众的特性, 例如: 它集成了面向对象编程和面向函数式编程的各种特性, 以及更高层的并发模型.

​ 总而言之, Scala融汇了许多前所未有的特性, 而同时又运行于JVM之上, 随着开发者对Scala的兴趣日增, 以及越来越多的工具支持, 无疑Scala语言将成为你手上一门必不可少的工具.

基于JVM解释:Scala的运行环境和Java类似, 也是依赖JVM的.

多范式解释: Scala支持多种编程风格

1.2 Scala之父

Scala之父是: Martin·Odersky(马丁·奥德斯基), 他是EPFL(瑞士领先的技术大学)编程研究组的教授. 也是Typesafe公司(现已更名为: Lightbend公司)的联合创始人. 他在整个职业生涯中一直不断追求着一个目标:让写程序这样一个基础工作变得高效、简单、且令人愉悦. 他曾经就职于IBM研究院、耶鲁大学、卡尔斯鲁厄大学以及南澳大利亚大学. 在此之前,他在瑞士苏黎世联邦理工学院追随Pascal语言创始人Niklaus Wirth(1984年图灵奖获得者)学习,并于1989年获得博士学位.
请添加图片描述

1.3 语言特点
  • Scala是兼容的

    兼容Java,可以访问庞大的Java类库,例如:操作mysql、redis、freemarker、activemq等等

  • Scala是精简的

    Scala表达能力强,一行代码抵得上多行Java代码,开发速度快

  • Scala是高级的

    Scala可以让你的程序保持短小, 清晰, 看起来更简洁, 更优雅

  • Scala是静态类型的

    Scala拥有非常先进的静态类型系统, 支持: 类型推断和模式匹配等

  • Scala可以开发大数据应用程序

    例如: Spark程序、Flink程序等等...

2. Scala程序和Java程序对比

2.1 程序的执行流程对比

Java程序编译执行流程

请添加图片描述

Scala程序编译执行流程
请添加图片描述

2.2 代码对比

**需求: **

​ 定义一个学生类, 属性为: 姓名和年龄, 然后在测试类中创建对象并测试.

Java代码

//定义学生类
public class Student{private String name;		//姓名private int age;			//年龄//空参和全参构造public Student(){}public Student(String name, int age){this.name = name;this.age = age;}//getXxx()和setXxx()方法public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}
}//测试类
public class StudentDemo {public static void main(String[] args) {Student s1 = new Student("张三", 23);	//创建Student类型的对象s1, 并赋值System.out.println(s1);				 //打印对象, 查看结果.}
}

Scala代码

case class Student(var name:String, var age:Int)		//定义一个Student类
val s1 = Student("张三", 23)							  //创建Student类型的对象s1, 并赋值
println(s1)											   //打印对象, 查看结果.

3. Scala环境搭建

3.1 概述

scala程序运行需要依赖于Java类库,那么必须要有Java运行环境,scala才能正确执行. 所以要编译运行scala程序,需要:

  • JDK(JDK包含JVM)
  • Scala编译器(Scala SDK)

接下来,需要依次安装以下内容:

  • 安装JDK
  • 安装Scala SDK
  • 在IDEA中安装Scala插件
3.2 安装JDK

安装JDK 1.8 64位版本,并配置好环境变量, 此过程略.

3.3 安装Scala SDK

Scala SDK是scala语言的编译器,要开发scala程序,必须要先安装Scala SDK

本次安装的版本是: 2.11.12

步骤

  1. 下载Scala SDK.

    官方下载地址: scala-lang.org/download/

  2. 安装Scala SDK.

    2.1 双击scala-2.11.12.msi,将scala安装在指定目录, 傻瓜式安装, 下一步下一步即可.
    2.2 安装路径要合法, 不要出现中文, 空格等特殊符号.

  3. 测试是否安装成功

    打开控制台,输入: scala -version

3.4 安装IDEA scala插件

IDEA默认是不支持scala程序开发的,所以需要在IDEA中安装scala插件, 让它来支持scala语言。

步骤

3.4.1 下载指定版本IDEA scala插件.

1. 下载的Scala插件必须和你安装的IDEA版本一致

2. 官方下载地址: http://plugins.jetbrains.com/plugin/1347-scala

3.4.2 IDEA配置scala插件
  1. 选择配置 > 选择插件
    请添加图片描述

  2. 点击小齿轮 > 选择从本地安装插件
    请添加图片描述

  3. 找到下载的插件位置,点击OK
    请添加图片描述

    请添加图片描述

3.4.3 重新启动IDEA

请添加图片描述

4. Scala解释器

4.1 概述

​ 后续我们会使用scala解释器来学习scala基本语法,scala解释器像Linux命令一样,执行一条代码,马上就可以让我们看到执行结果,用来测试比较方便。

我们接下来学习:

  • 启动scala解释器
  • 在scala解释器中执行scala代码
  • 退出scala解释器
4.2 启动scala解释器

要启动scala解释器,只需要以下几步:

  • 按住windows键 + r
  • 输入scala即可

在这里插入图片描述

4.3 执行scala代码

在scala的命令提示窗口中输入println("hello, world"),回车执行.
在这里插入图片描述

4.4 退出解释器

方式一: 点击右上角的"×"
在这里插入图片描述

**方式二: 输入:quit退出 **
在这里插入图片描述

5. 案例: 做最好的自己.

5.1 需求

​ 提示用户录入他/她最想对自己说的一句话, 然后将这句话打印到控制台上.

5.2 目的

​ 测试Scala和Java之间可以无缝互调(即: Scala兼容Java,可以访问庞大的Java类库).

5.3 思路分析
1. 因为涉及到键盘录入了, 所以先导包.
2. 提示用户录入他/她最想对自己说的一句话.
3. 接收用户录入的内容, 并打印.
5.4 参考代码
//1. 导入Java中的Scanner类.							引入Java类库
import java.util.Scanner
//2. 提示用户录入他/她最想对自己说的一句话.			   Scala代码
println("请录入一句您最想对自己说的一句话: ")
//3. 打印用户录入的内容.								 Scala代码 + Java类库
//不忘初心, 方得始终, 做最好的自己!
println("我最想对自己说: " + new Scanner(System.in).nextLine())
5.5 小彩蛋

其实Scala中也有自己独有的接收用户键盘录入数据的功能, 远比上边的写法要简单的多, 要优雅的多. 这种写法在后续章节我们也会学习到, 预知后事如何, 且听下回分晓.

scala学习配套视频

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

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

相关文章

JAVAWeb业务层开发->普通和基于MP

普通方式业务层开发 service定义接口(主要实现逻辑层面的业务功能) serviceImpl实现该接口 注意事项: 逻辑判断的代码可以使用>号,使得返回结果为布尔类型。 小结:每一个接口写完都要写测试类去检测&#…

JMeter的详细使用及相关问题

一、中文乱码问题 如果出现乱码,需要修改编码集,(版本问题有的不需要修改,就不用管) 修改后保存重启就好了。 JMeter5.5版本的按照如下修改: 二、JMeter的启动 ①建议直接用ApacheJMeter.jar双击启动…

<一>Qt斗地主游戏开发:开发环境搭建--VS2019+Qt5.15.2

1. 开发环境概述 对于Qt的开发环境来说,主流编码IDE界面一般有两种:Qt Creator或VSQt。为了简单起见,这里的操作系统限定为windows,编译器也通用VS了。Qt版本的话自己选择就可以了,当然VS的版本也是依据Qt版本来选定的…

QT4.8.7安装详细教程

QT4.8.7安装详细教程(MinGW 4.8.2和QTCreator4.2.0) 1.下载及安装2.配置环境 此文是在下方链接博文的基础上,按自己的理解整理的https://blog.csdn.net/xiaowanzi199009/article/details/104119265 1.下载及安装 这三个文件,顺序是…

Swift SwiftUI CoreData 过滤数据 1

Xcode: Version 14.3.1 (14E300c) iOS: 16 预览&#xff1a; Code: import SwiftUI import CoreDatastruct TodosSearch: View {State private var search_title "测试"FetchRequest var todos_search: FetchedResults<Todo>init() {let request: NSFetchReq…

Cortex-A9 架构

一、Cortex-A 处理器运行模式 Cortex-A9处理器有 9中处理模式&#xff0c;如下表所示&#xff1a; 九种运行模式 在上表中&#xff0c;除了User(USR)用户模式以外&#xff0c;其它8种运行模式都是特权模式&#xff0c;在特权模式下&#xff0c;程序可以访问所有的系统资源。这…

在openwrt dnsmasq DHCP中为客户端分配不同的网关和DNS | 旁路由 禁止上网

环境&#xff1a;openwrt dnsmasq PS4/Switch 问题&#xff1a;为路由器下的设备分配不同的网关和DNS&#xff0c;禁止局域网设备上网 解决办法&#xff1a;修改dnsmasq配置文件 背景&#xff1a;Openwrt 的DHCP服务是使用dnsmasq实现的&#xff0c;他可以给内网的客户端设备…

网络安全工程师考证指南,不看就亏了!!

目前网络安全行业&#xff0c;国内都有哪些证书可以考&#xff1f; 一、CISP-PTE &#xff08;国家注册渗透测试工程师&#xff09; CISP-PTE即注册信息安全渗透测试工程师&#xff0c;该证书由中国信息安全测评中心颁发&#xff0c;证书是国内唯一认可的渗透测试认证&#x…

el-menu 导航栏学习(1)

最简单的导航栏学习跳转实例效果&#xff1a; &#xff08;1&#xff09;index.js路由配置&#xff1a; import Vue from vue import Router from vue-router import NavMenuDemo from /components/NavMenuDemo import test1 from /components/test1 import test2 from /c…

Redis中Hash类的操作

Redis中Hash类型是键值对的形式保存数据&#xff0c;其中键被称为字段&#xff08;field&#xff09;&#xff0c;值称为字段值&#xff08;value&#xff09;。在一个key中&#xff0c;字段不能重复&#xff0c;而值可以重复。无论是字段还是值都是无序的&#xff08;保存的次…

mysql双主+双从集群连接模式

架构图&#xff1a; 详细内容参考&#xff1a; 结果展示&#xff1a; 178.119.30.14(主) 178.119.30.15(主) 178.119.30.16(从) 178.119.30.17(从)

添加驱动模块到内核的两种方法

添加驱动模块到内核的两种方法 1. 放在内核源代码树中 步骤总结&#xff1a; 新建文件夹编写Makefile、编写Kconfig修改上层Kconfig执行make menuconfig执行make zImage 或 make modules 1.1 源码放入文件夹 例如&#xff1a;添加一个按键字符设备模块 在内核目录下的 dri…

【推荐系统】多任务学习模型

介绍一些多任务学习模型了解是如何处理多任务分支的。 ESSM, Entire Space Multi-Task Model 阿里提出的ESSM全称Entire Space Multi-Task Model&#xff0c;全样本空间的多任务模型&#xff0c;有效地解决了CVR建模&#xff08;转化率预估&#xff09;中存在的两个非常重要…

MATLAB中plot3函数用法

目录 语法 说明 向量和矩阵数据 表数据 其他选项 示例 绘制三维螺旋图 绘制多个线条 使用矩阵绘制多个线条 指定等间距刻度单位和轴标签 将点绘制为不带线的标记 自定义颜色和标记 指定线型 在绘图后修改线条 绘制表中的数据 在 x 和 y 轴上绘制多个表变量 指…

10.2 调试事件获取DLL装载

理解了如何通过调试事件输出当前进程中寄存器信息&#xff0c;那么实现加载DLL模块也会变得很容易实现&#xff0c;加载DLL模块主要使用LOAD_DLL_DEBUG_EVENT这个通知事件&#xff0c;该事件可检测进程加载的模块信息&#xff0c;一旦有新模块被加载或装入那么则会触发一个通知…

Qt扫盲-QSqlTableModel理论总结

QSqlTableModel理论总结 一、概述二、使用1. 与 view 视图绑定2. 做中间层&#xff0c;不显示 三、常用函数 一、概述 QSqlTableModel是用于从单个表读写数据库记录的高级接口。它构建在较低级的QSqlQuery之上&#xff0c;可用于向QTableView 等视图类提供数据。这个主要是对单…

苹果V3签名是什么?优势是什么?什么场合需要应用到?该怎么部署?

v3签名&#xff0c;或称为Apple Developer Program v3签名&#xff0c;是苹果公司在2021年6月推出的一种签名格式&#xff0c;用于对应用程序进行签名和验证。 它是取代了之前的v2签名格式&#xff0c;用于增强应用程序的安全性和完整性。 v3签名能够做到以下几点&#xff1a;…

【Linux基础】Linux发展史

&#x1f449;系列专栏&#xff1a;【Linux基础】 &#x1f648;个人主页&#xff1a;sunny-ll 一、前言 本篇主要介绍Linux的发展历史&#xff0c;这里并不需要我们掌握&#xff0c;但是作为一个合格的Linux学习者与操作者&#xff0c;这些东西是需要了解的&#xff0c;而且…

前端JavaScript入门到精通,javascript核心进阶ES6语法、API、js高级等基础知识和实战 —— Web APIs(五)

思维导图 Bom操作 一、Window对象 1.1 BOM(浏览器对象模型) <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"vi…

k8s集群-6(daemonset job cronjob控制器)

Daemonset 一个节点部署一个节点 当有节点DaemonSet 确保全部 (或者某些) 节点上运行一个 Pod 的副本。加入集群时&#xff0c;也会为他们新增一个 Pod 。当有节点从集群移除时&#xff0c;这些Pod 也会被回收。删除 DaemonSet 将会删除它创建的所有 Pod。 DaemonSet 的典型用…