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.10http://www.scala-lang.org/download/2.10.4.html 

Ø 下载好后安装。双击msi包安装,记住安装的路径。

Ø 配置环境变量(和配置jdk一样)

新建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方法。

 

转载于:https://www.cnblogs.com/bigdata-stone/p/10856060.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值