Scala初识

1.scala简介

是一种多范式的编程语言,其设计的初衷是要集成面向对象编程和函数式编程的各种特性。Scala运行于Java平台(Java虚拟机)并兼容现有的Java程序。

scala特点 

1.Scala是面向对象

Scala是一种纯粹的面向对象语言,每一个值都是对象。对象的数据类型以及行为由类和特征来描述,类抽象机制的扩展通过两种途径实现,一种是子类继承,另一种是混入机制,这两种途径都能够避免多重继承的问题。

2.Scala是函数式编程

Scala也是一种函数式语言,其函数可以作为值来使用。Scala提供了轻量级的语法用于定义匿名函数,支持高阶函数,允许嵌套多层函数,并支持柯里化。

3.Scala是静态类型(即类型一旦定义将无法改变)

Scala具备类型系统,通过编译时检查,保证代码的安全性和一致性。类型系统支持的特性包括泛型类、注释、类型上下限约束、类别和抽象类型作为对象成员、复合类型、引用自己时显示指定类型、视图、多态方法。    

4.Scala是可扩展的

在实际开发中,某个特定领域的应用程序开发往往需要特定领域的语言扩展。Scala提供了许多独特的语言机制,它以库的方式能够轻易无缝添加新的语言结构。

5.Scala是可以交互操作的

Scala旨在与流行的Java Runtime Environment(JRE)进行良好的交互操作。Scala用scalac编译器把源文件编译成Java的class文件(即在JVM上运行的字节码)。我们可以从Scala中调用所有的Java类库,也同样可以从Java应用程序中调用Scala的代码。

2.scala 环境搭建

增加Scala插件

在idea的左上角找到【File】->【settings】->【Plugins】,在右边搜索scala插件,点击安装,安装完毕后重启(如果需要)。

 创建一个项目,在其中加入以下依赖。

<dependency><groupId>org.scala-lang</groupId><artifactId>scala-library</artifactId><version>2.11.12</version>
</dependency><dependency><groupId>org.scala-lang</groupId><artifactId>scala-compiler</artifactId><version>2.11.12</version>
</dependency><dependency><groupId>org.scala-lang</groupId><artifactId>scala-reflect</artifactId><version>2.11.12</version>
</dependency>

并在build->plugins->plugin下加入编译Scala的插件

<plugin><groupId>org.scala-tools</groupId><artifactId>maven-scala-plugin</artifactId><version>2.15.2</version><executions><execution><goals><goal>compile</goal><goal>testCompile</goal></goals></execution></executions>
</plugin>

第一个scala程序

package com.bigdata.scala//在class定义的只是普通方法,需要用类的对象才能调用,即new
class Demo01HelloWorld {def printScala(): Unit = {println("Hello Scala3!!")}
}//在Scala里object里的方法是静态的,声明的是类对象,所以通过object直接运行,直接通过类对象进行调用
object Demo01HelloWorld{def printScala():Unit={println("Hello Scala2!!")}def main(args: Array[String]): Unit = {System.out.println("Hello Scala1!!")Demo01HelloWorld.printScala()  //静态方法直接调用val world = new Demo01HelloWorld()world.printScala()  //类的方法调用//在scala调用java类的对象,要放在同一个包下val value = new Demo01HelloWorldJava()value.printHello()}
}

在scala中,object中的方法,变量是静态的

class中的变量和方法都是普通变量。

java和scala之间的类可以相互调用。

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

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

相关文章

iOS 16描述文件升级方法 iOS 16升级描述文件下载

在6月7日凌晨&#xff0c;iOS 16正式发布了&#xff0c;而升级的方法&#xff0c;有些人准备用描述文件来升级&#xff0c;但不知道具体的升级方法&#xff0c;下面就为大家介绍iOS 16描述文件的具体升级方法。 iOS 16描述文件升级方法 iOS 16升级描述文件下载 一、使用描述文…

IOS项目证书,描述文件等生成和配置 整理

首先得描述一下各个证书的定位&#xff0c;作用&#xff0c;这样在制作的时候心中有谱&#xff0c;对整个流程的把握也会准确一些&#xff1b; 1、开发者证书&#xff08;分为开发和发布两种&#xff0c;类型为ios Development,ios Distribution&#xff09;&#xff0c;这个是…

C++ 遍历算法

&#x1f914;遍历算法&#xff1a; &#x1f642;1.for_each 遍历容器 &#x1f50d;介绍&#xff1a; 在C中&#xff0c;for_each是一个用于遍历容器元素并对它们进行操作的算法。它通常有三个参数&#xff1a; &#x1f4d6;1. 容器的起始位置&#xff08;iterator&am…

layui框架学习(25:弹出层模块_加载框询问框)

layui框架的弹出层模块layer中最重要的函数即layer.open&#xff0c;基于该函数&#xff0c;layer模块封装了很多常用弹出框&#xff0c;上文已介绍了消息框和提示框函数&#xff0c;本文学习加载框和询问框函数的基本用法&#xff0c;同时继续学习layer模块中基础参数的用法。…

【SpringCloud——Elasticsearch(上)】

一、什么是Elasticsearch elasticsearch是一款非常强大的开源搜索引擎&#xff0c;可以帮助我们从海量数据中快速找到需要的内容。 二、倒排索引 1、正向索引 2、倒排索引 3、总结 三、ES和MySQL的区别 四、操作索引库 1、基于Kibana&#xff08;WEB界面&#xff09; 以下操作…

代码随想录算法训练营第五十七天 | 回文

647. 回文子串 文档讲解&#xff1a;代码随想录 (programmercarl.com) 视频讲解&#xff1a;动态规划&#xff0c;字符串性质决定了DP数组的定义 | LeetCode&#xff1a;647.回文子串_哔哩哔哩_bilibili 状态&#xff1a;不会做。 思路 确定dp数组&#xff08;dp table&#xf…

驱动LSM6DS3TR-C实现高效运动检测与数据采集(3)----获取ID

概述 一旦传感器被正确初始化&#xff0c;可以通过SPI或I2C接口向传感器发送读取命令&#xff0c;并接收传感器返回的数据。这个读取过程包括获取LSM6DS3TR传感器提供的加速度计和陀螺仪数据&#xff0c;以及传感器对应的温度信息。 获取数据状态 STATUS_REG (1Eh)是该传感器…

chatgpt赋能python:Python中构造方法的介绍与应用

Python中构造方法的介绍与应用 在Python编程语言中&#xff0c;构造方法通常是类中的一个特殊方法&#xff0c;用于在对象创建时初始化其属性。构造方法使用__init__关键字来定义&#xff0c;而且通常会包含self参数&#xff0c;用于引用创建的新对象。在本文中&#xff0c;我…

木工专用计算机,木工做多功能电脑台带书柜架一体图片 自己打造电脑桌用实木还是生态木颗粒板...

黑色十字条纹状的书架&#xff0c;给人带来一种与众不同的感觉&#xff0c;褐色的实木地板铺贴在地面上&#xff0c;褐色的地面与整个橱柜形成了鲜明的对比。褐色给人一种灰溜溜的感觉&#xff0c;但是这种颜色很有古典美&#xff0c;而且褐色的地面又特别的耐脏&#xff0c;这…

python爬虫大众点评字体反爬

字形相同的字体反爬问题解析 问题所在&#xff1a;部分数据加载时使用网站自定义的字体&#xff0c;浏览器访问网页时字体文件会加载到浏览器中&#xff0c;爬虫访问时没有对应的自定义字体&#xff0c;所以就得不到那部分数据&#xff0c;如图1&#xff0c;加密的这部分数据在…

五笔字根语法口决

一、字根助记词 11G   王旁青头戋五一 12F   土士二干十寸雨 13D   大犬三&#xff08;羊&#xff09;古石厂 (“羊”指羊字底) 14S   木丁西 15A   工戈草头右框七   (“右框”即“匚”) 21H   目具上止卜虎皮   (“具”指具字的上部) 22J   日早…

字体反爬案例解析:大众点评

文章目录 字体反爬简介发送请求&#xff0c;获取网页源码提取字体信息&#xff0c;并将字体文件下载到本地建立基准字典引例提取需要字体反爬处理的信息提取不需要字体反爬的信息整理提取到的所有信息&#xff0c;并存入excel 字体反爬简介 什么是字体反爬&#xff1f; …

作文 我眼中的计算机1000字,我眼中的自己作文范文1000字(精选6篇)

我眼中的自己作文范文1000字(精选6篇) 在日常生活或是工作学习中&#xff0c;许多人都有过写作文的经历&#xff0c;对作文都不陌生吧&#xff0c;作文根据写作时限的不同可以分为限时作文和非限时作文。还是对作文一筹莫展吗&#xff1f;以下是小编为大家整理的我眼中的自己作…

基于深度学习的高精度家禽猪检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要&#xff1a;基于深度学习的高精度家禽猪检测识别系统可用于日常生活中或野外来检测与定位家禽猪目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的家禽猪目标检测识别&#xff0c;另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5目标检…

智能管理PoE交换机

在这个万物互联的时代&#xff0c;数据与数据之间的相互传输交流&#xff0c;显得尤为重要。那么要怎样才能使计算机与传统的物联设备相连接呢&#xff1f;这时&#xff0c;串口服务器这一媒介的作用就凸显出来了。那么&#xff0c;你知道什么是串口服务器吗&#xff1f;串口服…

chatgpt赋能python:Python中构造函数的名称

Python中构造函数的名称 作为一名有10年Python编程经验的工程师&#xff0c;我深知Python语言中构造函数的重要性。在本文中&#xff0c;我将着重介绍Python中构造函数的名称&#xff0c;并阐述其在Python编程中的作用。 什么是构造函数&#xff1f; 构造函数是一种特殊类型…

C++ stack容器介绍

&#x1f914;stack容器介绍&#xff1a; &#x1f4d6; stack是一种数据结构&#xff0c;也可以被称为堆栈。它是一个容器&#xff0c;只允许在最顶层进行插入和删除&#xff0c;并且只能访问最后一个插入的元素。这个元素称为栈顶。所有新插入的元素都被放置在栈顶上面&#…

Mysql source命令报错

Mysql source命令报错 情况一&#xff1a;目录包含中文 放到没有中文的路径再执行 情况二&#xff1a;不小心加了分号 mysql会将分号当做文件名的一部分 固然报错 情况三&#xff1a;没有选择数据库 使用 use加数据库名 选择数据库后再执行 执行成功画面

Linux中的source命令

Linux中的source命令 1、source命令是什么&#xff1f; source命令也称为“点命令”&#xff0c;也就是一个点符号&#xff08;.&#xff09;&#xff0c;是bash的内部命令。 注意&#xff1a;该命令通常用命令“.”来替代 2、source命令 功能&#xff08;能干什么&#xff0…

qsort函数排序举例

使用qsort函数快速排序应用举例 这篇博客是用qsort函数来快速排列float型数据&#xff0c;分别按照年龄&#xff08;int型&#xff09;、姓名&#xff08;char型&#xff09;排列结构体。看懂就看懂&#xff0c;看不懂我也不想解释了。 简略解释一下qsort函数&#xff1a; v…