Scala创建对象方式:
①new:用new关键字创建类的对象;
②伴生对象:使用object关键字创建一个单例对象;
③apply:apply是一个方法,需要在伴生对象中实现这个方法。
判断对象所属类:
( 1 ) getClass:使用反射机制判断Scala对象所属的类。假设判断对象A和对象B是否属于同一个类,通过A.getClass == B.getClass的方式判断是否相等,A.getClass表示A对象所对应类的反射对象,B.getClass表示B对象所对应类的反射对象。如果这两个对象的反射对象所属类型和示例对象相等,那么这两个对象一定属于同一个类。
( 2 ) isInstanceof:判断对象是否属于某一个类型,A.isInstanceof [ B ]表示判断对象A是否属于类型B,实际上是判断A是否是B或者B的子对象。如果返回true,则表示A是B的子对象;如果返回false,则表示A不是B的子对象。使用isInstanceof进行判断时,A表示对象,B表示类型。
对象相等性判断:
( 1 ) equal方法:相当于Java中的equals方法。
( 2 ) == 与 !=:相当于Java中的equals方法。
( 3 ) eq 与 ne:相当于Java中的引用(使用 == 判断引用)。
覆写(重写)equals方法时,应满足:
①方法的姓名不可改变;
②参数列表一定要相同,参数类型是Ang类型;
③重写方法时需要使用override关键字。
格式:
override def equals(other: Any) : boolean = {
true/false
}
覆写原则:(1)反射性:在比较对象 × 和对象 y 是否相等时,对象x调用 equals方法与自身相比时,结果一定返回 true,即 x.equals(x)的结果是 true。(2)对称性:如果 x.equals(y)的结果为true,那么 y.equals(x)的结果一定也是 true。(3) 过渡性:如果 x.equals(y)=true, y.equals(z)=true,那么 x.equals(z)=true。(4) 非空性:如果x是一个非空的元素,那么x.equals(null) 结果返回 false。
元组类型:
元组:一种特殊的数据类型,可与很多不同类型的数据组合在一起。
定义一个元组:
var s1 = (1,“string”false)
获取元素
名称._N: 名称就是元组名,N表示第几个元素
eg:println(s1._1)
特殊类型——Nothing:
Nothing是一个抽象类,可赋值给任何类型
把异常定义为Nothing类型可帮助推断返回值类型
函数定义:
def关键字开头,用来定义函数,Scala的函数返回值类型定义在函数参数列表之后并通过冒号分隔。
简写方法(Scala的函数规则):
1.没有参数,可省略定义函数和调用时的()。
2.返回值类型一般可省略,他会自己去推断出来。
3.返回值可不写return,把返回值写在代码段的后面。
函数调用:
声明一个函数之后,可以通过“对象,函数名(参数列表)”的方式调用该函数。
定义一个Rational类,说明Scala函数的使用:
( 1 )定义一个求两个整数和的方法。
( 2 )定义一个求两个数的最大公约数的方法。
eg:指定了变量名,创建RunFunction.scala文件:
package scala04
object RunFunction
def main ( args : Array[ String ] ) : Unit = {
}