初探Scala

news2024/9/20 22:49:13

目录

Scala介绍

Scala 环境搭建

IDEA新建Maven工程

创建执行输出Hello Scala

Scala中main方法语法的详细解读

class 和 object 说明

Scala介绍

一般来说,学 Scala 的人,都会 Java ,而 Scala 是基于 Java 的,因此我们需要将 Scala 和 Java 以及 JVM 之间的关系搞清楚。

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 这门语言。

Scala 环境搭建

(1)首先确保 JDK1.8 安装成功
(2)下载对应的 Scala 安装文件 scala-2.12.11.zip
(3)解压 scala-2.12.11.zip,我这里解压到 D:\Tools
(4)配置 Scala 的环境变量

 测试环境

 IDEA新建Maven工程

新建工程选择JDK版本

 设置项目名

 添加scala依赖

 下载scala依赖

新建一个scala目录

给目录定义含义

添加框架支持

鼠标右键单击项目目录

点击进入勾选scala的框架支持

 添加完成即可在目录中创建Scala Class文件



创建执行输出Hello Scala

创建一个名为HelloScalal的object文件(单例对象)

 直接在main方法中写入println输出内容

 

因为Scala是基于Java的 所以Scala中也能执行Java的代码语法

所以依旧能够照常执行

 

Scala中main方法语法的详细解读

 并且与java相比分号在代码中省略不写,当然写出来也是可以执行的

class object 说明

  1. main方法名:小括号表示参数列表
  2. 参数声明方式:java-〉类型参数名
  3. scala -→>参数名:类型
  4. public修饰符:scala中没有public关键字,如果不声明访问权限,那么就是公共的。
  5. static修饰符: scala中没有静态语法,所以没有static关键字。
  6. void关键字:表示返回值,但是不遴循面向对象语法,所以scala中没有,但是有Unit类型,表示没有返回值
  7. scala中:方法名(参数列表):返回值类型
  8. scala中声明方法必颈采用关键字def声明
  9. scala中方法实观肤值给方法声明,所以中间需要等号连接
  10. Scala是一个完全面向对象的语言,所以没有静态语法,为了能调用静态语法(模仿静态语法),
  11. 采用件生对象单色的方式调用方法:def main(args: Array[String]): Unit = {}

 Scala完全面向对象,故Scala去掉了Java中非面向对象的元素,static关键字,void类型

1、static
Scala static 关键字 ,由 object 实现类似静态方法的功能 (类名 . 方法名)。
2、void
对于无返回值的函数, Scala 定义其返回值类型为 Unit
class 关键字和 Java 中的 class 关键字作用相同,用来定义一个类;

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

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

相关文章

CSS基础总结(五)定位

文章目录 1.为什么需要定位 2.定位的组成 2.1公式 2.2定位模式 2.2.1静态定位static 2.2.2相对定位relative 2.2.3绝对定位absolute 2.2.4固定定位fixed 2.2.5粘性定位sticky 总结 2.3边偏移 3.定位叠放次序 4.定位拓展 4.1子绝父相布局法 4.2固定于版心右侧位置方…

read and write

read and write The read and write methods both perform a similar task, that is, copying data from and to application code. Therefore, their prototypes are pretty similar, and its worth introducing them at the same time: read 和 write 方法都执行类似的任务&…

Java开发 - 常用算法深度讲解,让你再也不会忘记

目录 前言 冒泡排序 原理 选择排序 原理 插入排序 原理 二分查找排序 原理 结语 前言 经常会有一些算法,我们说常用不常用,说不用也偶尔会用,当时看记住了,过几天提起来又忘记了,这是为什么呢?以…

Spring Security:PasswordEncoder密码加密匹配操作

目录 PasswordEncoder SpringBoot:注入BSryptPasswordEncoder实例 BSryptPasswordEncoder详解 父接口PasswordEncoder BSryptPasswordEncoder及其使用 成员方法 SecurityUtils安全服务工具类 测试代码 PasswordEncoder PasswordEncoder是Spring Security框架…

51单片机学习笔记_4 IO扩展:LED 点阵

IO 扩展(串转并)-74HC595 前面接的一些输入输出设备都是直接连接的单片机 IO 口,单片机仅有的 IO 口非常有限。而使用 IO 扩展可以大量增加可使用的端口。比如后面要使用的 LED 点阵,8*8个格子,使用扩展 IO 输入就更为合适。如果多级联一个&…

20230102单独编译原厂RK3588开发板的开发板rk3588-evb1-lp4-v10的Android12的内核2

20230102单独编译原厂RK3588开发板的开发板rk3588-evb1-lp4-v10的Android12的内核2 2023/1/2 21:01 《RK3588_Android12_SDK_Developer_Guide_CN.pdf》 原厂的开发板rk3588-evb1-lp4-v10单独编译内核的方式: cd kernel-5.10 export PATH../prebuilts/clang/host/lin…

educoder数据结构与算法 队列 第1关:实现一个顺序存储的队列

本文已收录于专栏 🌲《educoder数据结构与算法_大耳朵宋宋的博客-CSDN博客》🌲 目录 任务描述 相关知识 编程要求 测试说明 AC_Code 任务描述 本关任务:实现 step1/SeqQueue.cpp 中的SQ_IsEmpty、SQ_IsFull、SQ_Length、SQ_In和SQ_Out…

ceph集群搭建

一、环境准备 1.1、服务器准备 操作系统服务器IP服务器规格centos7.6192.168.161.114C/8Gcentos7.6192.168.161.124C/8Gcentos7.6192.168.161.134C/8G 1.2、服务器环境准备 1.2.1 更改主机名并添加映射 更改主机名 [rootlocalhost ~]# hostnamectl set-hostname ceph01 ##或…

内存池算法简单剖析

为什么要引入内存池算法? 我们知道C/C 语言中通过 malloc 调用 sbrk 和 mmap 这两个系统调用,向操作系统申请堆内存。但是,sbrk 和 mmap 这两个系统调用分配内存效率比较低,因为,执行系统调用是要进入内核态的,这样内…

区块链知识系列 - Oracle预言机

Oracle 预言机 区块链外信息写入区块链内的机制,一般被称为预言机(oracle mechanism)。 借助预言机外界的数据得以灌入链内, 使得DApp的玩法更多样. 比如DApp倚重的随机数, 可以考虑让一个硬件产生真随机数, 通过Oracle,定时灌入, 这将更公…

单机Docker部署应用Kraft模式的Kafka集群

单机Docker部署应用Kraft模式的Kafka集群1 Docker镜像准备1.1 下载Kafka1.2 配置容器1.3 修改kafka配置2 部署Kafka集群2.1 启动节点容器2.2 生成一个 Cluster ID2.3 格式化存储目录2.4 启动kafka服务3 知识3.1 控制器服务器3.2 进程角色3.3 仲裁投票者3.4 Kafka存储工具3.5 缺…

久泰新材料在港上市申请失效:年亏损超2亿元,崔轶钧为董事长

近日,贝多财经从港交所了解到,内蒙古久泰新材料科技股份有限公司(下称“久泰集团”或“久泰新材料”)在港交所的上市申请材料(招股书)已“失效”,目前已经无法正常查看或下载。 其中&#xff0c…

Hack the Box CTF 网络流量分析 中等难度 Penetrated | Wireshark

这是一道Hack the Box网络流量分析题,中等难度,题目本身就是一个 pcap 包。 1. 题目: 原文件链接如下,有兴趣可以自己先看一看: 链接: https://pan.baidu.com/s/16KLwQuoYA1AfEwuK78bBWg 提取码: 8864 Flag 格式&am…

Nginx内存管理源码剖析注解

文章目录Nginx内存池总览内存池中变量类型定义创建内存池&#xff1a;ngx_create_pool内存池分配空间&#xff1a;ngx_palloc小块内存空间分配&#xff1a;ngx_palloc_small创建小块内存池&#xff1a;ngx_palloc_block大块内存空间分配&#xff1a;ngx_palloc_large<br /&g…

【电动车】主动配电网多源协同运行优化研究——大规模电动汽车的蒙特卡洛模拟(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

TiDB问题排查

TiDB 集群问题导图 1. 服务不可用 1.1 客户端报 "Region is Unavailable" 错误 1.1.1 "Region is Unavailable" 一般是由于 region 在一段时间不可用导致&#xff08;可能会遇到 "TiKV server is busy" 或者发送给 TiKV 的请求由于 not leader…

JMM内存模型

借鉴&#xff1a; 一文带你搞懂JMM内存模型和JVM内存区域_Apple_Web的博客-CSDN博客_jmm内存模型和jvm内存模型的区别 面试官问我什么是JMM_java技术爱好者_R的博客-CSDN博客_jmm Java内存模型 概述 Java内存模型(即Java Memory Model&#xff0c;简称JMM)本身是一种抽象的…

箭头函数带来的this变化实例

1.不使用箭头函数时 let Lesson {site: 后盾人,lists:[js,css,mysql],show: function (param) { console.log(this);// {site: 后盾人, lists: Array(3), show: ƒ}return this.lists.map(function(title){console.log(this);// Window {window: Window, self: Window, docume…

17. 老板让我手动控制网页渲染速度,说这能反爬虫?我信了。

手动数据延迟加载&#xff0c;真的可以反爬虫 爬虫训练场项目&#xff0c;加速更新中&#xff0c;专栏清单参考 pachong.vip 本次案例需要的代码量特别小&#xff0c;所以咱们再 Nginx 中也进行一下相关配置 文章目录页面逻辑实现接口逻辑实现延迟实现&#xff0c;time.sleep()…

2022年需求最大8种编程语言!(详细解读)

DevJobsScanner 在过去的 14 个月&#xff08;从 2021 年 10 月到 2022 年 11 月&#xff09;中分析了超过 1200 万个开发人员职位需求&#xff0c;并从其中挑选了明确需要编程语言的工作机会&#xff0c;得到了 2022 年最受欢迎的 8 种编程语言。 目前市场中需求最高的前八位…