Scala新版本学习(1):
1.进官网:https://www.scala-lang.org/

上面就是进入Scala社区后的一个画面,官方对Scala的简单介绍是:Scala将面向对象和函数式编程集合在一个简洁的高级语言中,Scala的静态类型有助于避免复杂应用程序中的错误。Scala既有动态语言那样灵活简洁,同时又保留了静态类型带来的安全保障和执行效率,加上其强大的抽象能力,既能够处理脚本化的临时任务,又能处理高并发场景下的分布式互联网大数据应用。
2.Scala六个特性。
(1)可以和java无缝整合,即在Scala中可以调用java包中的类,或者在Java中也可以调用Scala包中的类。Scala也是运行在JVM上的,因此Java和Scala堆栈可以自由混合以实现完全无缝集成。
(2)类型推断。类型系统不会那么静止。不适用于类型系统。让类型系统来适应你。Scala中,val只能修饰常量,不可变;var是变量的修饰符。定义变量或者常量只能用var或者val。在定义之后,系统会自动的进行类型的推断。
(3)并行和分布式
对集合使用数据并行操作,使用actors(类似于线程)进行并行和分布式。
(4)特质:将Java风格的界面的灵活性与类的强大功能相结合。考虑有原则的多重继承。
(5)模式匹配:匹配值,匹配类型。
(6)高阶函数:方法中的参数可以是另一个方法。函数式编程的一个体现。
3.安装/配置环境变量
1. windows安装,配置环境变量
Ø 官网下载scala2.10:http://www.scala-lang.org/download/2.10.4.html
Ø 下载好后安装。双击msi包安装,记住安装的路径。
Ø 配置环境变量(和配置jdk一样)
l 新建SCALA_HOME

上个步骤完成后,编辑Path变量,在后面追加如下:
;%SCALA_HOME%\bin;%SCALA_HOME%\jre\bin

- 打开cmd,输入:scala - version 看是否显示版本号,确定是否安装成功
4. REPL:读取--->求值--->打印--->循环。Scala解释器读取到一个表达式,对它进行求值,将它打印出来,接着继续读取下一个表达式。发生的过程是,输入的内容被快速的编译成字节码,然后这段字节码交由Java虚拟机执行。
5.声明值和变量
(1)val 定义的值实际上是一个常亮,无法改变其内容。如下:

(2)var可以声明变量类型的值

(3)在赋值的时候,不需要给出值或者变量的类型,这个信息可以从你用来初始化它的表达式推断出来。
(4)在必要的时候也可以指定数据的类型:

从上面可以看到,变量或者函数的类型总是在变量或者函数名称的后面。
(5)在变量声明或者赋值语句之后,并没有用分号,仅当同一行代码中存在多条语句的时候才需要用分号隔开。

6.常用类型:
(1)Scala7种数值类型+1个Boolean类型。Scala并不可以区分基本类型和引用类型。可以对数字执行如下的方法:
如下图中,可以将int类型的1转换为字符串"1"

1.to(10),将会产出range(1,2,3,4,5,6,7,8,9,10),Int值首先被转换成RichInt,然后再应用to方法

(2)Scala中基本类型和包装类型之间的转换是Scala编译器的工作。比如创建一个Int[]数组,最终在虚拟机上得到的是一个int[]数组。Scala用底层的java.lang.String类表示字符串,不过其通过StringOps类给字符串追加了上百种操作。
"Hello".intersect("Wolrd") //输出"lo"。在这个表达式中,java.lang.String对象"Hello"被隐式地转换成了一个StringOps对象,接着StringOps类的intersect()方法被应用。

(3)BigInt对应于java.math.BigInteger,BigDecimal对应于java.math.BigDecimal。
在Scala中,我们用方法而不是强制类型转换,来做数值类型之间的转换。例如:99.44.toInt得到99,99.toChar得到'C',toString将任意的对象转换为字符串。要将包含数字的字符串转换成数值,使用toInt或者toDouble。例如

(4)a.+(b)。这里的+是方法名。Scala可以用几乎任何方法来为方法命名。
通常可以用a 方法 b《======》a.方法(b)。这里的方法是一个带有两个参数的方法(一个是显式的一个是隐式的)
如1 to 10 <===> 1.to(10)
(5)Scala没有提供++和--操作符,取而代之的是+=1或者-=1。
7.调用函数的方法。
(1)scala.math中定义的函数,sqrt(2),pow(2,4),min(3,Pi),在使用函数的之前,先要引入相应的包。
import scala.math._ //在Scala中,_字符是“通配符”,类似java中的*。
(2)Scala没有静态方法,但是它有个类似的特性,叫做单例对象。通常一个类应该有个伴生对象,其方法和Java的静态方法是一样的。
8.apply方法
(1)如果s是一个字符串,那么s(i)是该字符串中的第i个字符。如下图所示:

(2)def apply(n:Int):Char
也即是:"Hello".apply(4)等价于"Hello"(4)

(3)将字符串转换为BigInt的apply方法,会产生一个新的的BigInt对象,不需要使用new关键字

(4)使用伴生对象的apply方法是Scala创建对象的常用方法。如Array(1,4,9,16)返回一个数组,就是Array伴生对象的apply方法。
Scala新版本学习(1):的更多相关文章
- scala新版本学习(3)
1.REPL:读取->求值->打印->循环.Scala程序将输入的内容快速的编译成为字节码,然后字节码文件交给Java虚拟机进行执行. 2.val是值不可变,var值可变.在变量声明 ...
- Scala新版本学习(2):
1.本章要点; (1)if表达式有值: (2)块也有值,是它最后一个表达式的值 (3)Scala的for循环就像是"增强版的"Java for循环 (4)分号不是必须的 (5)vo ...
- Scala入门学习笔记三--数组使用
前言 本篇主要讲Scala的Array.BufferArray.List,更多教程请参考:Scala教程 本篇知识点概括 若长度固定则使用Array,若长度可能有 变化则使用ArrayBuffer 提 ...
- Scala学习(一)--Scala基础学习
Scala基础学习 摘要: 在篇主要内容:如何把Scala当做工业级的便携计算器使用,如何用Scala处理数字以及其他算术操作.在这个过程中,我们将介绍一系列重要的Scala概念和惯用法.同时你还将学 ...
- Scala 递归学习的例子
为了学习Spark,我开始了学习Scala.加油! 递归的一个题目: 代码: // Why x is Float, but when we use 3.0 for example, it return ...
- scala基础学习(一)
scala学习 scala与java的不同之处: 1.scala中任何一个操作符都是一个方法. s = 1+2; 可以写作:s=(1).+(2) 2.异常捕获采用模式匹配的方式. try { v ...
- Scala系统学习(四):Scala变量
变量是保存存储值的内存位置的名称.这意味着当创建变量时,可以在内存中保留一些空间. 根据变量的数据类型,编译器分配内存并决定可以存储在预留内存中的内容.因此,通过为变量分配不同的数据类型,可以在这些变 ...
- Scala系统学习(三):Scala基础语法
如果您熟悉Java语言语法和编程,那么学习Scala将会很容易.Scala和Java之间最大的句法差异在于行结束字符的分号(;) 是可选的. 当编写Scala程序时,它可以被定义为通过调用彼此的方法进 ...
- Scala入门学习随笔
推荐学习视频:慕课网http://www.imooc.com/learn/613,讲师:辰风 ScalaAPI:http://www.scala-lang.org/api/current/#packa ...
随机推荐
- Linux 解压小全
.gz 解压1:gunzip FileName.gz 解压2:gzip -d FileName.gz 压缩:gzip FileName .zip 解压:unzip FileName.zip 压缩:zi ...
- LeetCode 260. 只出现一次的数字 III(Single Number III)
题目描述 给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次. 找出只出现一次的那两个元素. 示例 : 输入: [1,2,1,3,2,5] 输出: [3,5] 注意: 结 ...
- Python——语言基础
1.数据类型 1.1.字符串 1.1.1.变量声明 1.1.2.相关函数 1.2.布尔类型 1.2.1.变量声明 1.2.2.相关函数 1.3.数字类型 1.3.1.变量声明 1.3.2.相关函数 1 ...
- CentOS 7下使用Apache2部署Django项目,解决文件名中含有中文报错的问题
系统版本: CentOS 7.3Apache 2.4 Django 1.11 问题描述 Django项目涉及上传操作,上传文件名称含有中文,若使用runserver启动服务,没有问题!若将Django ...
- Mybaits和Spring的那点事
前言 在spring中使用mybaits简直不要太简单,只需要几个配置,一个DAO接口和一个mapper.xml就可以完成一次数据库交互.但是简单背后往往是复杂的实现,现在我们来探讨一下里面的一点原理 ...
- PHP安装 (结合之前的nginx安装与mysql安装组合为lnmp)
检查安装PHP所需的lib库 yum -y install zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-de ...
- 手动部署 OpenStack Rocky 双节点
目录 文章目录 目录 前言 OpenStack 架构 Conceptual architecture Logical architecture 网络选型 Networking Option 1: Pr ...
- kubernetes系列:(三)、helm的安装和使用
一.helm简介 kubernetes : 解决了容器维护的难题,通过yaml编写,比如deployment,job,statefulset.configmap等等,通过控制循环,让容器镜像便于管理, ...
- SD相关号码范围IMG设定
一.定义项目建议的号码范围——OVZA.VN01 二.免费货物的号码范围——WC07 三.定义销售文件的号码范围——VN01 四.金额契约产品建议模组的号码范围——WSN1 五.定义出口.进口的号码范 ...
- gin框架教程三:JWT的使用
JWT介绍 JWT (JSON Web Token) 是一种规范.这个规范允许我们使用JWT在用户和服务器之间安全传递信息. JWT的组成: jwt分3个部分,Header 头部.Payload 载荷 ...