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 * 6res0: Int = 48
scala> 8 * 6 +2res1: Int = 50
scala> 0.5 * res1res2: Double = 25.0
scala> "Hello," + res0res3: 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 + 2a: Int = 42
scala> 0.5 * ares4: Double = 21.0
scala> a = 0<console>:12: error: reassignment to val a = 0 ^

如果需要声明值可变的变量,用var关键字

scala> var c = 0c: 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 关于方法调用

方法在调用时,如果没有参数,可以省略括号

scala> "Bonjour".sorted    // 得到 bjnooru

一般的规则是无参的方法如果不修改对象,调用时则省略括号。

以上是关于01 Scala基础的主要内容,如果未能解决你的问题,请参考以下文章

Scala:基础知识01

01 Scala基础

scala学习01-scala基础语法

Scala基础学习01

Scala基础篇-01变量,数据类型

pyspark对应的scala代码PythonRDD对象