Java API_Object类


Java API

1.Object类

(1).概述
Java中的Object类是类层次结构中的根类,每一个类都是用Object作为超类。每一个类都可以直接或者是间接继承自Object类。

(2).构造方法
public Object(){

}
间接仅仅存在一个无参构造。


(3)常用相关方法(*)

A.getClass()方法
public final class getClass():返回此Object运行时class类的方法。
public String getName():以String的形式返回此class对象所表示的实体。

使用举例:获取运行类的class类的完整路径

public static void main(String[] args) {
Student st =new Student();
@SuppressWarnings("rawtypes")
Class c =st.getClass();
String str=c.getName();
System.out.println(str);

System.out.println("---------下面是相同的操作--------");

String str1=st.getClass().getName();
System.out.println(str1);
}

//输出这一个类的完整路径
com.cn.Test.Student
---------下面是相同的操作--------
com.cn.Test.Student


B:toString()方法
toString()方法返回的是该字符串的表示,通常toString()方法返回一个"以文本方式表示"对象的字符串。结果是一个简单简明但是易于读懂的
信息表达式。建议所有的子类都重写此方法。

使用举例:重写学生类的toString()方法,并返回学生的相关信息

学生类:

public class Student {
//学生名字
private String name;
//年龄
private int age;

/**
*定义学生类的基本方法
*@author Administrator
*@param null
*@return null
*
*/
public void study(){
System.out.println("这是学习方法");
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

//重写toString(),自动生成toString()方法:source--->Gernerate toString()--->OK
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + "]";
}
}

测试类:
public class Test {
public static void main(String[] args) {
Student st =new Student();
System.out.println(st.toString());
System.out.println("------------");
st.setAge(12);
st.setName("小明");
System.out.println(st.toString());
}
}

//输出结果:
Student [name=null, age=0]
------------
Student [name=小明, age=12]

C.equals()方法
public boolean equals(Object obj):表示比较其他对象是否和此对象"相等"
该方法在默认情况下比较的是地址值,但是比较地址值是没有多大意义的,所以一般需要重写该方法。
让它用来比较对象的成员变量值是否相同。

使用举例:
学生类
public class Student {
//学生名字
private String name;
//年龄
private int age;
//带参构造
public Student(int age, String name) {
this.age=age;
this.name=name;
}
/**
*定义学生类的基本方法
*@author Administrator
*@param null
*@return null
*
*/
public void study(){
System.out.println("这是学习方法");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}

//重写equals方法
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Student other = (Student) obj;
if (age != other.age)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
}

测试类
public class Test {
public static void main(String[] args) {
Student s =new Student(12,"小明");
Student s1 =new Student(12,"小明");
Student s3 =new Student(13,"小明");
Student s2=s;
System.out.println(s.equals(s1));
System.out.println(s.equals(s2));
System.out.println(s.equals(s3));
}
}
//输出结果
true
true
false


D.object类的finalize()方法和clone()方法

protected void finalize():当垃圾回收器确定不存在对该对象的更多引用的时候,由对象的垃圾回收器调用该方法,用于垃圾回收,但是什么
时候回收不确定。
protected Object clone():创建并返回此对象的一个副本。也就是拷贝了一份。
在使用的时候需要实现Cloneable接口,用来指示Object.clone()方法可以合法的对该类实例进行按字段复制。


代码实现:
学生类
public class Student implements Cloneable{
//学生名字
private String name;
//年龄
private int age;
//无参
public Student(){

}
//带参构造
public Student(int age, String name) {
super();
this.age=age;
this.name=name;
}
/**
*定义学生类的基本方法
*@author Administrator
*@param null
*@return null
*
*/
public void study(){
System.out.println("这是学习方法");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
//重写clone()方法
@Override
protected Object clone() throws CloneNotSupportedException{
return super.clone();
}

//测试类
public class Test {
public static void main(String[] args) throws CloneNotSupportedException {
Student st=new Student();
st.setName("小胖子");
st.setAge(13);
//clone方法使用,克隆一个st的学生对象
Object obj = st.clone();
//转化成为学生对象
Student st1=(Student) obj;
System.out.println(st.getName()+"-----"+st1.getName());
System.out.println("-----------------------------");
//改动st对象里面的值
st.setName("三胖");
System.out.println(st.getName()+"-----"+st1.getName());
}
}

//输出结果
小胖子-----小胖子
-----------------------------
三胖-----小胖子

猜你喜欢

转载自www.cnblogs.com/nwxayyf/p/9461119.html