当前位置:首页 » 编程语言 » java比较对象

java比较对象

发布时间: 2022-12-25 12:21:12

‘壹’ 如何比较java对象是同一个对象

1.判断两个对象是否是同一个引用对象则用==,"=="比的是地址.因为如果地址相同,则就是同一个对象
2.obj1.equals(Object obj2),用来判断两个对象是否相等(前面给出的是相等的情况。如果你要不相等的话:!obj1.equals(Object obj2)就可以了

‘贰’ java怎么比较2个对象

//抽象父类
abstract class CompareObject {abstract double compareTo();}
//派生子类
class Position extends CompareObject {

double x,y;
public Position(double g,double h) {this.x=g;this.y=h;}
public double getx(){return x;}
public double gety(){return y;}
public static double compareTo(Position a,Position b) { //自己派生的方法
return Math.sqrt(a.x*a.x+a.y*a.y)-Math.sqrt(b.getx()*b.getx()+b.gety()*b.gety());
}
/*继承父类的比较方法作用到子类对象中,必须在父类里面定义比较的方法体,而你这里没有。所以你可以选择自己重新定义一个方法体。
* 也可以在父类里面写好比较的方法体。
*/
double compareTo(CompareObject ca, CompareObject cb) { //实现父类中的方法
// TODO Auto-generated method stub
return 0;
}

public static void main(String[] args){
//比较2点与原点距离之差
Position a=new Position (5,4);
Position b=new Position (7,3);
System.out.println("两点到原点的距离之差为"+compareTo(a,b));
}
@Override
double compareTo() {
// TODO Auto-generated method stub
return 0;
}
}

‘叁’ java怎么比较2个对象

你这个compareTo方法是干啥的?思路不清啊....
你应该写的是一个点的对象(Position)..他要和别一个点(Position )去比较.所以至少你的Position 类中的compareTo这个方法里要获得别一个点的对象.
也就是说应该在实现类中有这样的形式
点1对象.compareTo(点2对象);//说白了就是你的实现类里这行
System.out.println("两点到原点的距离之差为"+compareTo());
应该改成
System.out.println("两点到原点的距离之差为"+a.mpareTo(b);
在计较的时候.也就是你的compareTo()这个方法里..就应该是对象1的距离-对象2的举例
也就是类似这样的.
Math.sqrt(a.getx()*a.getx()*+a.gety()*a.gety())-Math.sqrt(b.getx()*b.getx()+b.gety()*b.gety();//

‘肆’ java怎么只比较两个对象的内容

使用 == 进行比较, 该方式比较的是变量是否同时指向一块内存地址,如果是就返回true,否则返回false
使用对象本身的equals进行比较,equals首先会进行 == 比较,然后会进行逻辑比较,当然你可以自己定义自己的比较逻辑,比如JDK内置的String,Integer,Long等都是重写了这个equals方法的。
总的来说就是 == 表示完全相等,而equals表示逻辑相等

‘伍’ jAVA对象的比较

比较对象的时候有两种相等的情况(看你需要哪一种)
第一种:地址相等,通过==号来比较他们是否是指向同一个地址
第二种:他们的属性相等,有时候两个对象只要他们的属性相等我们就认为他们两个是相等的,那么这种比较就需要你自己重载equals方法,然后在里面判断他们的属性,如果他们的属性全班相等或根据你的需要哪些相等那么他们就相等

比如有一个正方行类
Square s1 = new Square(5);
Square s2 = new Square(5);
这时候你只需他们的边长相等,就认为他们是相等的,那么equals方法就可以这样写

@Override
public boolean equals(Square s) {
return this.side = s.getSide();//side是边长
}

‘陆’ 深入java的equals方法,怎么比较两个对象的

当定义一个类时,首先这个类会继承Object类(所有类的父类)的equals方法,然后开发者可以根据具体业务场景去考虑要不要重写equals方法。

publicbooleanequals(Objectobj){
return(this==obj);
}

上面代码即是Object的equals方法的实现, == 判断,即两个对象的地址完全一样的时候才相等。

当开发者定义类时不重写equals方法,则实际调用中使用Object这个父类的equals方法实现。

下面看看String的equals方法:

publicbooleanequals(ObjectanObject){
if(this==anObject){
returntrue;
}
if(anObjectinstanceofString){
StringanotherString=(String)anObject;
intn=value.length;
if(n==anotherString.value.length){
charv1[]=value;
charv2[]=anotherString.value;
inti=0;
while(n--!=0){
if(v1[i]!=v2[i])
returnfalse;
i++;
}
returntrue;
}
}
returnfalse;
}

这就是String重写的equals方法,可以仔细看看,很有参考价值。

接下来写段类定义的代码:

publicclassPerson{
privateStringname;//姓名
privateintage;//年龄
privateStringspeciality;//特长

@Override
publicbooleanequals(Objectobj){
//两个对象是同一个时,直接returntrue
if(this==obj){
returntrue;
}
if(objinstanceofPerson){
//比较对象也是Person对象时,判断name和age是否都相同
Personp=(Person)obj;
returnname.equals(p.name)&&age==p.age;
}
returnfalse;
}

publicStringgetName(){
returnname;
}

publicvoidsetName(Stringname){
this.name=name;
}

publicintgetAge(){
returnage;
}

publicvoidsetAge(intage){
this.age=age;
}

publicStringgetSpeciality(){
returnspeciality;
}

publicvoidsetSpeciality(Stringspeciality){
this.speciality=speciality;
}
}

测试代码:

publicclassTest{

publicstaticvoidmain(String[]args)throwsIOException{
Personp1=newPerson("张三",20,"java");
Personp2=newPerson("张三",20,"python");

System.out.println(p1.equals(p2));
}
}

根据Person重写的equals方法可以知道,运行结果为 true

如果Person没有重写equals方法,那么会调用Object的equals方法,运行结果为 false

所以实际怎么比较两个对象这完全是看开发者也就是你自己的意思

‘柒’ 有关于Java中对象比较“==”和“equals()”,下面有一个程序为例

this.title的数据类型是String,属于引用数据类型,引用类型的比较一般使用equals方法来判断两个对象的内容是否相等。因为this.title是一个String对象,因而可通过点运算符来调用equals方法来比较两个String对象的内容是否相等。
this.price的数据类型是double,属于基本数据类型,基本数据类型的比较直接使用==来判断其值是否相等。因为this.price是一个基本类型的变量不是一个对象,因而不能通过点运算符来调用equals方法。

‘捌’ java怎么比较2个对象

你这个compareTo方法是干啥的?思路不清啊....
你应该写的是一个点的对象(Position)..他要和别一个点(Position
)去比较.所以至少你的Position
类中的compareTo这个方法里要获得别一个点的对象.
也就是说应该在实现类中有这样的形式
点1对象.compareTo(点2对象);//说白了就是你的实现类里这行
System.out.println("两点到原点的距离之差为"+compareTo());
应该改成
System.out.println("两点到原点的距离之差为"+a.mpareTo(b);
在计较的时候.也就是你的compareTo()这个方法里..就应该是对象1的距离-对象2的举例
也就是类似这样的.
Math.sqrt(a.getx()*a.getx()*+a.gety()*a.gety())-Math.sqrt(b.getx()*b.getx()+b.gety()*b.gety();//

热点内容
手机f加密 发布:2024-05-19 03:28:47 浏览:225
用什么密码写日记 发布:2024-05-19 03:27:57 浏览:303
数据库access2003 发布:2024-05-19 02:49:39 浏览:620
碧蓝航线pc挂机脚本 发布:2024-05-19 02:30:03 浏览:589
脚本fir 发布:2024-05-19 02:28:57 浏览:261
阿里云独享服务器 发布:2024-05-19 02:23:54 浏览:253
织梦源码ga 发布:2024-05-19 02:23:20 浏览:571
java文件名后缀 发布:2024-05-19 02:14:39 浏览:956
快手点榜脚本 发布:2024-05-19 02:08:44 浏览:163
pythonforinkeys 发布:2024-05-19 01:55:44 浏览:793