compareTo方法——对对象大小进行比较

需求,打印输出员工的姓名,工号。并且对四名员工根据年龄进行排序。
(1) 创建类
package com_tz_qzy;

import java.util.Stack;

public class Staff implements Comparable {
	//	属性
	String name;
	int age;
	//	构造方法
	Staff(String name,int age){
		super();
		this.name=name;
		this.age=age;
	}
	// toString方法的重写
	public String toString() {
		return "Staff [ name="+name+",age="+age+"]";
	}
	//	通过compareTo实现数组的排序
	public int compareTo(Object o) {
	//	传递对象Object的参数
	//	instance的作用是判断其左边对象是属于其右边类的一个例,返回值boolean类型。
	//	staff是一个类,object是传进来的一个对象。格式: 对象 instanceof 类
		if(o instanceof Staff) {
		//	o是一个object类型的对象,此时Object并没有age这个属性,因此要向下转型为Staff类型的
			Staff s=(Staff)o;
		//	对传进来的参数进行判断
			return this.age-s.age;
			//	传进来sta1("小王",35),分别与Staff中小王,小张,小红,小李均做比较,
			//	差值越大,数值越大,因此在通过Sort对年龄做一个排序,在打印即可。
		}
		return 0;
	}
}

(2)实例化对象

package com_tz_qzy;

import java.util.Arrays;

public class StaffDemo {
	public static void main(String [] args) {
		//	实例化对象
		Staff sta1=new Staff("小王",35);
		Staff sta2=new Staff("小张",23);
		Staff sta3=new Staff("小红",66);
		Staff sta4=new Staff("小李",8);
		
		//	将对象存放在一个(静态初始化)数组内
		//	声明形式:数据类型 [] 数组名=new 数据类型[长度];
		//	对象的数组类型是Staff
		Staff [] sta=new Staff[4];
		sta[0]=sta1;
		sta[1]=sta2;
		sta[2]=sta3;
		sta[3]=sta4;
		//	Arrays.toString(Object o)返回指定数组内容的字符串表示形式
		System.out.println(Arrays.toString(sta));
		//	Arrays.sort(Object o)根据元素的自然顺序对指定对象数组按升序进行排序
		System.out.println("--------------------------------------------");
		Arrays.sort(sta);	//	对数组进行排序,需要实现Comparable接口
		System.out.println(Arrays.toString(sta));
	}
}

(3)结果
在这里插入图片描述
(4)分析:
对象的比较是通过ASCII码进行比较,是与基本数据类型的比较是不相同的。对对象的比较要通过对Comparable接口的实现,通过对compareTo方法进行重写。
instanceof的作用是判断左边是否为右边一个类的实例,左边是对象,即向compareTo传进的参数是否是本类的一个实例化对象,是返回true,不是就返回false。

你可能感兴趣的:(compareTo方法——对对象大小进行比较)