「object比较java」objective
本篇文章给大家谈谈object比较java,以及objective对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、java中entity和object的区别
- 2、java Object里的equals比较的是对象的哈希值还是物理内存? "==" 比较的又什么?
- 3、java中的怎么比较两个object值的大小
- 4、如何在java里面对Object的类型值进行一个大小的比较
- 5、JAVA 中 Objects 与Object 有什么区别
- 6、JAVA中,为什么object对象中的equals方法比较的是同一,而String对象比较的是相等?
java中entity和object的区别
object泛指所有的对象,是所有对象类型的父类,不可以被重写继承。
entity是一个实体对象,如人、车等都可以看出是一个实体。
entity是object的一种,也就是包含关系。
java Object里的equals比较的是对象的哈希值还是物理内存? "==" 比较的又什么?
== 和 Equals 的区别
1. == 是一个运算符。
2.Equals则是string对象的方法,可以.(点)出来。
我们比较无非就是这两种 1、基本数据类型比较 2、引用对象比较
1、基本数据类型比较
==和Equals都比较两个值是否相等。相等为true 否则为false;
2、引用对象比较
==和Equals都是比较栈内存中的地址是否相等 。相等为true 否则为false;
需注意几点:
1、string是一个特殊的引用类型。对于两个字符串的比较,不管是 == 和 Equals 这两者比较的都是字符串是否相同;
2、当你创建两个string对象时,内存中的地址是不相同的,你可以赋相同的值。
所以字符串的内容相同。引用地址不一定相同,(相同内容的对象地址不一定相同),但反过来却是肯定的;
3、基本数据类型比较(string 除外) == 和 Equals 两者都是比较值;
java中的怎么比较两个object值的大小
我给你举个例子吧:创建一个熊猫类,实例化两个熊猫对象,如果两个对象的身高和年龄相同就认为这两个对象的equals方法返回真,否则返回假
Panda类:
public class Panda {
double height;
int age;
@Override
public boolean equals(Object obj) {
if(this==obj){
return true;
}
if(obj instanceof Panda){
Panda panda=(Panda)obj;
if (this.height==panda.heightthis.age==panda.age){
return true;}
else{
return false;
}
}
return false;
}
}
Test类:
public class Test {
public static void main(String[] args) {
Panda panda=new Panda();
panda.height=1.60;
panda.age=4;
Panda panda1=new Panda();
panda1.height=1.60;
panda1.age=4;
System.out.println(panda.equals(panda1));
}
}
你可以测试一下。
如何在java里面对Object的类型值进行一个大小的比较
作者:Tao Li
链接:
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
java中类的比较一般有两种方法,一种就是类本身实现ComparableT这个接口,比如通过对用户的姓名进行比较排序:
package com.ailot.compare;
public class User implements ComparableUser {
private String name;
private int age;
private String sex;
public User(String name,int age,String sex){
this.name = name;
this.age = age;
this.sex = sex;
}
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;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public String toString() {
return "User [name=" + name + ", age=" + age + ", sex=" + sex + "]";
}
@Override
public int compareTo(User u) {
// TODO Auto-generated method stub
int c = this.name.compareTo(u.name);
if(c==0){
return 0;
}else if(c 0){
return 1;
}else{
return -1;
}
}
}
Test.java
package com.ailot.compare;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;
public class Test {
public static void main(String[] args) {
ListUser userList = new ArrayListUser();
for(int i=0;i10;i++){
int s = new Random().nextInt(20);
User u = new User(s+"张三",i,"男");
userList.add(u);
}
Collections.sort(userList);
for(User user : userList){
System.out.println(user.toString());
}
}
}
排序的话直接用 Collections.sort( userList ) ;就可以了。
作者:Tao Li
链接:
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
另一种就是类没有实现ComparableT这个接口,这就需要自己新建一个比较的类,通过实现ComparatorT来对类进行比较,还是对User类的姓名进行比较排序:
User.java
package com.ailot.compare;
public class User {
private String name;
private int age;
private String sex;
public User(String name,int age,String sex){
this.name = name;
this.age = age;
this.sex = sex;
}
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;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public String toString() {
return "User [name=" + name + ", age=" + age + ", sex=" + sex + "]";
}
}
UserCompare.java
package com.ailot.compare;
import java.util.Comparator;
public class UserCompare implements ComparatorUser {
@Override
public int compare(User u1, User u2) {
// TODO Auto-generated method stub
int c = u1.getName().compareTo(u2.getName());
if(c == 0){
return 0;
}else if(c 0){
return -1;
}else{
return 1;
}
}
}
Test.java
package com.ailot.compare;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;
public class Test {
public static void main(String[] args) {
ListUser userList = new ArrayListUser();
for(int i=0;i10;i++){
int s = new Random().nextInt(20);
User u = new User(s+"张三",i,"男");
userList.add(u);
}
Collections.sort(userList,new UserCompare());
for(User user : userList){
System.out.println(user.toString());
}
}
}
排序的话直接用 Collections.sort(userList,new UserCompare());就可以了。
JAVA 中 Objects 与Object 有什么区别
Object是所有类的基类,这个你可以查询jdk文档了解,所有类都继承自Object。Object ...objects这种参数定义是在不确定方法参数的情况下的一种多态表现形式。即这个方法可以传递多个参数,这个参数的个数是不确定的。这样你在方法体中需要相应的做些处理。因为Object是基类,所以使用Object ...objects这样的参数形式,允许一切继承自Object的对象作为参数。这种方法在实际中应该还是比较少用的。Object[] obj这样的形式,就是一个Object数组构成的参数形式。说明这个方法的参数是固定的,是一个Object数组,至于这个数组中存储的元素,可以是继承自Object的所有类的对象
JAVA中,为什么object对象中的equals方法比较的是同一,而String对象比较的是相等?
因为在java中,Object类是所有类的始祖,所有类都直接或者间接继承了它。Object类中equals方法比较的是两个对象是否具有相同的引用,如果两个对象的引用都一样(即指向同一块内存),那它们一定是相等的。
至于为什么要这样设计,因为Object没办法判断是什么来继承他,不能具体的去实现这个逻辑,因此交给它的子类自己根据自己的特征去重写这个方法。举个列子,比如定义了一个人类Person,有子类学生Student和员工Employee类,这时候Person类里面可以有name,age等这些通用的属性。但如果在Person里面定义一个简介(getIntroduction())的方法,就不好具体去叙述,这时候就可以交给子类自己去重写这个方法,比如Student类的getIntroduction()方法里面可以写“什么学校、什么专业、什么年级”等,Employee类里面就可以写“什么行业、什么职位”等。
所以Object很直接,不管你是什么类型,怎么进行比较,只要你们指向同一块内存,那你们就相等。比如String类,重写equals方法后比较的是字符串的具体值,但谁也不能否认,两个引用指向同一个地址时,值也一样相等。
---------------------刚好看到这,顺势把个人理解叙述一下,希望有用----------------
object比较java的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于objective、object比较java的信息别忘了在本站进行查找喔。