类、对象、基础类型、操作(Scala)

类和对象

在类定义中,有字段filed和方法method,统称为成员member,通过val和var定义字段指定对象的变量。通过def定义方法。(和Python一样)实例一个类后,会指派一些内存来保存对象的状态图。个人理解对通过地址间映射,有一块内存保存值。

对字段声明私有。在var、val前加。不加,就是共有public。

class Checksum {
    private var sum = 0
}

单例对象

Scala的类不允许有静态成员static。对此类使用场景,Scala提供了单例对象。将class关键字替换成object。当单例对象和某个类共用同一个名字时,称作这个类的伴生对象。类又叫作这个单例对象的伴生类,可以互相访问对方的私有成员。可以把单例对象当作用于安置Java编写的静态方法。

应用程序

没有同名的伴生类的单例对象成为孤立对象。孤立对象的作用:将工具方法归集在一起,或定义Scala应用程序的入口。

要运行一个Scala程序,必须提供一个独立对象的名称。这个独立对象要包含main方法,该方法接收一个Array[String]作为参数,结果类型为Unit。

import ChecksumAccumulator.calculate
//calculate是单例对象ChecksumAccumulator的一个方法,不用实例,直接调用

object Summer {
    def main(args : Array[String]) = {
        for (arg <- args)
            println(arg + ":" + calculate(arg))
    }
}

Scala和Java的区别之一,Java要求你将公共的类放入跟类同名的文件中,Scala可以任意命名.scala文件。

基础类型和操作

Scala的基础类型和Java对应的类型取值区间完全相同。

整数字面量

0X十六进制,没有其他修饰就是十进制,以L结尾就是LONG型。

浮点数中,没有其他修饰就是double类型,如果以f结尾就是float类型。

字符中,字符字面量由一对单引号和中间的任意Unicode字符组成。转义字符\。

val a = ‘A‘
val a = ‘\u0041‘

字符串由双引号里的字符组成。可以用""" """来表示原生字符串。

整体上,和Java相似,没有什么不同。

字符串插值

val name = "reader"
println(s"Hello, $name!")

s出现在首个双引号前,Scala将使用s这个字符串插值器来处理该字面量,对内嵌的每个表达式求值,对求值结果调用toString。
共有三种字符串插值器,s、f和raw。

操作符

Int包含多个重载的+方法,分别接收不同的参数类型。

位运算操作

&按位与,|按位或,^按位异或,~位补码操作(对每一位取反)。<<左移,>>右移,>>>无符号右移。

==

Scala的==和Java不同,对于引用类型,Java的==比较的是引用相等性,即两个变量指向JVM堆上的同一个对象。

相关推荐