码迷,mamicode.com
首页 > 其他好文 > 详细

scala学习笔记1

时间:2016-07-25 00:05:57      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:

一、REPL

scala解释器读到一个表达式,对它进行求值,将它的打印出来,接着再继续读下一个表达式。这个过程被称作 读取-打印-循环,即REPL。

从技术上讲,scala程序并不是一个解释器。实际发生的是,你输入的内容被快速的编译成字节码,然后这段字节码交由java虚拟机执行。正因如此,大多数scala程序员更倾向将它称作REPL。

二、声明值

2.1val定义的值实际上是一个常量,你无法改变它的内容。

scala> val result = 8*2
result: Int = 16

scala> result = 0
<console>:11: error: reassignment to val
       result = 0
              ^

scala鼓励使用val

你需要给出值或者变量的类型,声明值或者变量但不做初始化会报错。

在必要的时候,你也可以指定类型

scala> val result = 8*2
result: Int = 16

scala> result = 0
<console>:11: error: reassignment to val
       result = 0
              ^

三、scala常用类型

3.1基本数据类型

scala和java中的数据类型一样有8种,但是在scala中并不刻意区分基本类型和引用类型。你可以对一个对数字执行方法,例如

scala> 1.toString()

res1: String = 1

在scala中我们不需要包装类型,在基本类型和包装类型之间的转换是scala编译器的工作。

BigInt和BigDecimal类,用于任意大小的数字。这些类背后分别对应的是java.math.BigInteger和java.math.BigDecimal。他们用起来更加方便,你可以用常规的数学操作符来操作他们。

3.2字符串类型

scala用底层的java.lang.String类来表示字符串。不过,他通过StringOps类给字符串追加了上百种操作。

intersect方法输出两个字符串共同的一组字符

scala> "hello".intersect("world")
res0: String = lo

在这个表达式中,String对象被隐式的转换为了StringOps对象,接着StringOps类的intersect方法被调用。

同样的scala还提供了RichInt、RichDouble、RichChar等。他们提供了Int,Double,Char所不具备的快捷方法。我们前面用到的1.toString就是RichInt类中的方法。首先1被转换成了RichInt,然后再应用头方法。

3.3类型转换

在scala中我们使用方法而不是强制类型转换。

scala> 99.44.toInt
res3: Int = 99

scala> 99.toChar
res4: Char = c

scala> "99.44".toDouble
res5: Double = 99.44

scala学习笔记1

标签:

原文地址:http://www.cnblogs.com/dongdone/p/5701992.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!