01 Scala基础
Posted 起风了哈
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了01 Scala基础相关的知识,希望对你有一定的参考价值。
使用Scala解释器
用varl和val定义变量
数字类型
使用操作符合函数
浏览Scaladoc
1.1 Scala解释器
REPL(read-eval-print-loop):读取-求值-打印-循环
从技术上讲,scala并不是一个解释器,实际上你输入的内容被快速的编译成字节码,然后字节码交给Java虚拟机执行。
scala> :help
scala> 8 * 6
res0: Int = 48
scala> 8 * 6 +2
res1: Int = 50
scala> 0.5 * res1
res2: Double = 25.0
scala> "Hello," + res0
res3: String = Hello,48
scala> :warnings // 显示编译器最近警告详情
scala> :w // 显示编译器最近警告详情
// 调用方法时,用tab键补全
scala> 1.<tab>
!= >> isInfinite min toInt
% >>> isInfinity round toLong
& ^ isNaN self toOctalString
* abs isNegInfinity shortValue toRadians
+ byteValue isPosInfinity signum toShort
- ceil isValidByte to unary_+
/ compare isValidChar toBinaryString unary_-
< compareTo isValidInt toByte unary_~
<< doubleValue isValidLong toChar underlying
<= floatValue isValidShort toDegrees until
== floor isWhole toDouble |
> getClass longValue toFloat
>= intValue max toHexString
1.2 声明值和变量
val声明的值为不可变类型,不可修改
scala> val a = 8 * 5 + 2
a: Int = 42
scala> 0.5 * a
res4: Double = 21.0
scala> a = 0
<console>:12: error: reassignment to val
a = 0
^
如果需要声明值可变的变量,用var关键字
scala> var c = 0
c: Int = 0
scala> c = 2 // 没毛病
c: Int = 2
实际开发过程中,除非必需var类型,否则尽可能使用val
1.3 常用类型
Scala有七种数据类型:Byte,Char,Short,Int,Long,Float,Double,Boolean。与Java不同的是这些类型是类,且Scala不刻意区分基本类型和引用类型。
scala> 1.toString // 得到字符串"1"
scala> 1.to(10) // 得到Range(1,2,3,4,5,6,7,8,9,10)
在Scala中不需要包装类型,基本类型和包装类型的转换是Scala编译器的工作,Scala中字符串使用java.lang.String类来表示字符串,不过StringOps给字符串追加了上百种操作。
scala> "Hello".intersect("World") // 得到"lo"
上例中,字符串"Hello"被转换成一个StringOps对象,接着StringOps类的intersect方法被应用。同样的Scala还提供了RichInt,RichDouble,RichChar等。分别对应Scala中的Int,Double,Char。
scala> 1.to(10) // Int被转换为RichInt,在调用Rich的to方法
BigInt,BigDecimal类对应任意大小(有穷)的数字,分别对应java.math.BigInteger和java.math.BigDecimal
1.4 算术和操作符重载
Scala中的算术操作符和Java或C中的效果一样。
算术运算符:+ - * / %
位操作符:& | ^ >> <<
但区别在于:
scala> a + b //实际对应的是a.+(b) 符号是一个方法
a 方法 b a.方法(b)
这里的方法是带有两个参数的方法(一个显示,一个隐式),如:
scala> 1.to(10) // 可改写为
scala> 1 to 10
Scala中不提供++和--操作,需要使用+=,-=
1.5 关于方法调用
方法在调用时,如果没有参数,可以省略括号
"Bonjour".sorted // 得到 bjnooru
一般的规则是无参的方法如果不修改对象,调用时则省略括号。
以上是关于01 Scala基础的主要内容,如果未能解决你的问题,请参考以下文章