object
object 是只有一个实例的类。它的定义与Java中的class类似,如:
// 单例对象
object AppEntry {
def main(args: Array[String]): Unit = {
print("Hello World!")
}
}
其中有main方法,它与脚本运行方式不同,需要先编译(scalac),后运行,与java类似:
App
运行object,除了使用main方法,还可以直接继承trait(类似于Java中的接口)--App:
object AppEntry1 extends App {
print("Hello World, by extends App!")
}
伴生对象
与类同名的对象称为伴生对象。相反,该类是对象的伴生类。伴生类或对象可以访问其伴随的私有成员。将伴生对象用于方法和值,这些方法和值不是特定于伴生类的实例。
import scala.math._
case class Circle(radius: Double) {
import Circle._
def area: Double = calculateArea(radius)
}
object Circle extends App {
private def calculateArea(radius: Double): Double = Pi * pow(radius, 2.0)
val circle1 = new Circle(5.0)
print(circle1.area)
}
基本类
object BasicType extends App{
//1、基本类型
val int = 1
val short: Short = 2
val byte: Byte = 3
val long = 3L
val double = 3.23
val float = 3.23F
val boolean = false
val char = 'c'
//2、String类型
val string = "this is a string" //sequence of char
println(s"Hello, $string")
println(s"The answer is ${6 * 7}")
println(raw"No\\escape!") // No\\escape!
println(s"Has\\escape!") // Has\escape!
println(f"${math.Pi}%.5f") //3.14159
val pi = "Pi"
println(f"$pi is approximately ${math.Pi}%.8f.")
//3、scala中的操作符(operator)和方法(method)
//scala中的基本类型提供了很多的操作符(比如1 + 2中的+),这些操作符实际上是方法
1 + 2
1.+(2)
1.+(2L) //方法 + 的重载
//4、方法的调用与操作符
val s = "Hello, world!"
s.indexOf('o') //这里的indexOf是方法
s indexOf 'o' //这里的indexOf是操作符
s indexOf ('o', 5)
//基本类型的部分操作符就是方法,在scala中,所有的方法都可以是操作符
//是方法还是操作符取决于你怎么用
//如果s.indexOf('o')这样用,那么indexOf是方法
//如果s indexOf 'o'这样用,那么indexOf是操作符
s.substring(1)
s substring (1,2)
//prefix操作符
-2.0
(2.0).unary_- //等于-2.0
//postfix操作符
s toLowerCase
//4、基本类型的其他的操作符
//4.1 数学运算 + - * / %
//4.2 关系运算 < > <= >= =
//4.3 逻辑运算 || && !
//4.4 位运算 & | ^ ~
}