package day02;
/**
* 使用該類重寫Object相關方法
* @author soft01
*
*/
public class Point {
private int x;
private int y;
public Point(int x, int y) {
super();
this.x = x;
this.y = y;
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
/**
* 重寫toString
* toString方法的意義是當前對象以一個
* 字符串形式表達
*
*/
public String toString(){
return "("+ x +","+ y +")";
}
/*+
* equals 方法的作用是比較兩個對象的、
* 內容是否一致
*比較的是兩個對象的屬性值是否相同
*但是並不要求必須所有屬性值都一致
*這個要結合實際需求而定
*/
public boolean equals(Object o){
if(o==null){
return false;
}
if(o==this){
return true;
}
if(o instanceof Point){
Point p=(Point)o;
return this.x==p.x&&this.y==p.y;
}
return false;
}
}
Point p=new Point(1,2);
/*
* Object定義了toString方法,返回的
* 字符串是該對象的句柄
* 句柄:類名@地址 就是對象的引用信息
* 實際對開發沒有什麼幫助,所以當我們
* 需要使用一個對象的toString方法時,
* 應當重寫該方法
*/
String str=p.toString();
System.out.println(str);
/* System.out.println(object o)
* 該方法會將給定對象toString返回的
* 字符串輸出到控制檯
*/
System.out.println(p);
Point p2=new Point(1,2);
System.out.println(p==p2);
System.out.println(p.equals(p2));
/*
* Object的equals方法就是使用“==="
* 比較的,所以若希望判斷兩個對象的意義是否相等
*
*/
}
private int x;
private int y;
public Point(int x, int y) {
super();
this.x = x;
this.y = y;
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
@Override
/*
* 該方法的作用是當前對象this與參數o比較大小
* 具體是幾並不重要
* 當返回值>0,this>o
* 當返回值=0,this==o
* 當返回值<0,this<o
*/
public String toString (){
return x+" "+y;
}
public int compareTo(Point p) {
int len=this.x*this.x+this.y*this.y;
int len1=p.x+p.x+p.y*p.y;
return len-len1;
}
import java.util.Collections;
import java.util.List;
List<Point> list=new ArrayList<Point>();
list.add( new Point(2,3));
list.add( new Point(3,4));
list.add( new Point(5,6));
list.add( new Point(4,5));
System.out.println(list);
Collections.sort(list);
System.out.println(list);
}
[2 3, 3 4, 4 5, 5 6]