1.Scala对象的创建
a.new:使用new关键字创建的对象
b.伴生对象:使用object关键字创建一个单例对象
c.apply:apply是一个方法,需要在伴生对象中实现这个方法
2.Scala对象的所属类
a.getClass:使用反射机制判断Scala对象所属的类
b.isInstanceof:判断是否属于一个类型
println(s1. getClass())
println("s".getClass())
println(100.getClass())
println(s1.isInstanceOf[Stu])
println(100.isInstanceOf[Int])
3.Scala的对象相等性判断
在Scala中有三种方法判断对象的相等性,这三种方法主要分为两大类,第一种和第二种为一类,第三种方法为另外一类。在大多数情况下(非空),equal方法和==比较的内容是相同的
a.equal方法:相当于java中equals方法
b.==与!=:相当于java中equals方法
c.eq与ne:相当于java的引用
override def equals(obj: Any): Boolean = {
// ID == obj.ID
// true
//随机返回true flase
//random()的作用时产生一个0-1的随机数
//1.自己等于自己
if (this == obj) {
return true
}
//2.同类比较
if (obj != null && this.getClass() == obj.getClass()) {
var s = obj.asInstanceOf[Stu]
return s.ID == ID
}
else
//3,其他的就是flase
false
}
}
1.如何改写equals?
在class中,用override def equals(other:Any):Boolean={
逻辑判断(true flase)
}
2.如何不使用new来定义对象?
在伴生对象中写一个apply,并返回伴生类的实例
标签:getClass,obj,scala,对象,Scala,equal,equals,println,apply From: https://blog.csdn.net/2401_87076481/article/details/142449068