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 ...
随机推荐
- AsyncTaskMethodBuilder
AsyncTaskMethodBuilder Represents a builder for asynchronous methods that return a task. public stru ...
- Docker关键概念阐述
要了解Docker需要对其体系结构中的几个关键概念有所了解,主要包括image.container.service.swarm.stack等. 在介绍这几个概念时,会使用到一个测试环境,这个测试环境是 ...
- zeppelin 无法连接一个已有的standalone模式的spark集群
SparkInterpreter.java 这个文件里面读取master的属性有些问题: 原来代码中"master"属性的获取的地方应该是错了.设置和读取这个属性的对象不是同一个 ...
- weblogic性能调优
1.设置java参数: a) 编辑Weblogic Server启动脚本文件: /user_projects/domains/Domain_jgbs/bin/startWebLogic.sh /use ...
- 解决autowaired注入时机问题
package com.haiyisoft.loveLifeWeb.config; import javax.annotation.PostConstruct; import org.springfr ...
- [go]net/http
常用方法 r.Method == "GET" time.Now().Format("2006-01-02 15:04:05") //文件操作 os.Create ...
- [go]go环境安装-解决安装包不能访问golang.org问题
安装go和vscode vscode插件列表选择go,安装即可,其他插件暂不安装 手动安装一些vscode配套的调试工具等 直接vscode-go,然后点下面的go-tools就能找到 go get ...
- 什么是 AIDL 以及如何使用
①aidl 是 Android interface definition Language 的英文缩写,意思 Android 接口定义语言.②使用 aidl 可以帮助我们发布以及调用远程服务,实现跨进 ...
- 六十三:CSRF攻击与防御之系统准备之登录与转账功能
登录功能 在forms里面添加验证 class LoginForm(Form): email = StringField(validators=[Email(message='邮箱格式错误')]) p ...
- idea中git远程版本回退
idea中git远程版本回退 2017年10月15日 15:25:36 gomeplus 阅读数:19313 工作中遇到git远程仓库需要回退到历史版本的问题,根据网上的搜索结果结合自己的实践,整理了 ...