Object类
Object类的基本定义
Object类是所有类的父类,也就是说任何一个类在定义时如果没有明确地继承一个父类,那它就是Object类的子类。
取得对象信息:toString()
在Object类中的toString()方法设计时,由于要考虑其可以满足所有对象的输出信息,所以默认返回的是对象的编码。
class Book1{ //此类为Object子类
private String title;
private double price;
public Book1(String title,double price){
this.title=title;
this.price=price;
}
public String toString(){ //代替getInfo(),并且toString()可以自动调用
return "书名:"+this.title+",价格:"+this.price;
}
//setter、getter、无参结构略
}
public class Test1_1_4_5 {
public static void main(String args[]){
Book1 b=new Book1("Java开发",79.9); //实例化对象
System.out.println(b); //直接输出对象,默认调用toString()
}
}
对象比较:equals()
例:实现对象比较
class Book14{
private String title;
private double price;
public Book14(String title,double price){
this.title=title;
this.price=price;
}
public boolean equals(Object obj){
if (this==obj){ //地址相同
return true;
}
if (obj==null){ //对象内容为null
return false;
}
if (!(obj instanceof Book14)){ //不是本类实例
return false;
}
Book14 book=(Book14)obj;
if (this.title.equals(book.title)&&this.price==book.price){
return true;
}
return false;
}
public String toString(){ //替代了getInfo(),并且toString()可以自动调用
return "书名:"+this.title+",价格:"+this.price;
}
//setter、getter、无参结构略
}
public class Test1_1_4_6 {
public static void main(String args[]){
Book14 b1=new Book14("Java开发",79.9); //实例化对象
Book14 b2=new Book14("Java开发",79.9);
System.out.println(b1.equals(b2)); //对象比较
}
}
//结果
//true
Object类与引用数据类型
例:接收数组数据
public class Test1_1_4_7 {
public static void main(String args[]){
Object obj=new int[]{1,2,3}; //向上转型
System.out.println(obj); //数组编码:[I@10f87f48
if (obj instanceof int[]){ //谁是否int数组
int data[]=(int[])obj; //向下转型
for (int x=0;x<data.length;x++){
System.out.print(data[x]+"、");
}
}
}
}
//结果
//[I@10f87f48
//1、2、3、
关于数组对象的编码问题:
只要是数组对象的直接输出,第一位都是"[",第二位是数组类型的简短标记,例如:int类型数组是I,double型数组是D,而后就是数组对象的编码。
例:Object类接受接口对象
interface A{
public void fun();
}
class B extends Object implements A{ //所有类一定继承Object类,所以此处只是强调说明
public void fun(){
System.out.println("666");
}
public String toString(){
return "2333";
}
}
public class Test1_1_4_8 {
public static void main(String args[]){
A a=new B(); //实例化接口对象
Object obj=a; //接受接口对象
A t=(A)obj; //向下转型
t.fun(); //直接调用出口方法
System.out.println(t); //直接调用toString输出
}
}
//结果
//666
//2333