「javaequal和=」在java中equals比较的是什么

博主:adminadmin 2023-01-25 04:09:14 302

今天给各位分享javaequal和=的知识,其中也会对在java中equals比较的是什么进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

JAVA中,equal和==的区别是??

equals()是object的方法,所以只是适合对象,不适合于基本类型,equals()默认是用"=="比较两个对象的内存地址,如果想要比较两个对象的内容,要重写equals()方法才可。

equal:是用来比较两个对象内部的内容是否相等的,由于所有的类都是继承

自java.lang.object类的,所以如果没有对该方法进行覆盖的话,调用

的仍然是object类中的方法,而object中的equal方法返回的却是==

的判断,因此,如果在没有进行该方法的覆盖后,调用该方法是没有

任何意义的。

java中equal方法和==方法的区别

==如果是基础类型比较的是值,但是比较类等复合类型,比较的是地址的值

equal(),当没有重写的时候和“==”一样,String类中重写了equal方法。

所以你自己定义的类,最好重写这个方法

java中String 对象比较用的 equal 和 ==有什么区别

* ==是一个比较运算符号,既可以比较基本数据类型,也可以比较引用数据类型,基本数据类型比较的是值,引用数据类型比较的是地址值

* equals方法是一个方法,只能比较引用数据类型,所有的对象都会继承Object类中的方法,如果没有重写Object类中的equals方法,equals方法和==号比较引用数据类型无区别,重写后的equals方法比较的是对象中的属性.

equal 和 == 的区别

在java语言中,经常会使用equal 和 ==,具体区别如下:

==:

== 比较的是变量(栈)内存中存放的对象的(堆)内存地址,用来判断两个对象的地址是否相同,即是否是指相同一个对象。比较的是真正意义上的指针操作。

1、比较的是操作符两端的操作数是否是同一个对象。

2、两边的操作数必须是同一类型的(可以是父子类之间)才能编译通过。

3、比较的是地址,如果是具体的阿拉伯数字的比较,值相等则为true,如:

int a=10 与 long b=10L 与 double c=10.0都是相同的(为true),因为他们都指向地址为10的堆。

equals:

equals用来比较的是两个对象的内容是否相等,由于所有的类都是继承自java.lang.Object类的,所以适用于所有对象,如果没有对该方法进行覆盖的话,调用的仍然是Object类中的方法,而Object中的equals方法返回的却是==的判断。

String s="abce"是一种非常特殊的形式,和new 有本质的区别。它是java中唯一不需要new 就可以产生对象的途径。以String s="abce";形式赋值在java中叫直接量,它是在常量池中而不是象new一样放在压缩堆中。

这种形式的字符串,在JVM内部发生字符串拘留,即当声明这样的一个字符串后,JVM会在常量池中先查找有有没有一个值为"abcd"的对象。

如果有,就会把它赋给当前引用.即原来那个引用和现在这个引用指点向了同一对象,如果没有,则在常量池中新创建一个"abcd",下一次如果有String s1 = "abcd";又会将s1指向"abcd"这个对象,即以这形式声明的字符串,只要值相等,任何多个引用都指向同一对象.

而String s = new String("abcd");和其它任何对象一样.每调用一次就产生一个对象,只要它们调用。

也可以这么理解: String str = "hello"; 先在内存中找是不是有"hello"这个对象,如果有,就让str指向那个"hello".如果内存里没有"hello",就创建一个新的对象保存"hello".

String str=new String ("hello") 就是不管内存里是不是已经有"hello"这个对象,都新建一个对象保存"hello"。

扩展资料:

Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。

Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程   。

Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等

参考资料:百度百科——java

java ==和equal()方法的用法问题

java中==比较的是地址,equal比较的是值。

示例:

Integer a1 = new Integer(456);//实例化一个对象

Integer a2 = new Integer(456);//实例化一个对象

System.out.println(a1.equals(a2));//这里比较的是值,都是456,结果是true

System.out.println(a1==a2);//这里比较的是地址,因为是2个对象,所以地址不同,是false

Java中关于==和equal的区别 以及equals方法重写

//==与equals的默认行为都是比较引用是否相等,即是否引用了同一个对象。

//且==的行为是固定的,它总是比较引用,

//而equals的行为可以在子类中由用户重写。

//没有equal方法。下面是例子。

public class EQ

{

public static void main(String[] args)

{

//s11,s12引用了两个不同的对象,这两个对象的所有字段的值都相等

Student1 s11=new Student1("lili",'女',19);

Student1 s12=new Student1("lili",'女',19);

//s11,s13引用了一个相同的对象

Student1 s13=s11;

//这个if...else输出s11!=s12,因为==默认是比较引用,

//而s11与s12引用的是两个不同的对象

if(s11==s12)

{

System.out.println("s11==s12");

}

else

{

System.out.println("s11!=s12");

}

//这个if...else输出not s11.equals(s12),

if(s11.equals(s12))

{

System.out.println("s11.equals(s12)");

}

else

{

System.out.println("not s11.equals(s12)");

}

//这个if...else输出s11==s13,

//因为s11与s13引用的是同一个对象

if(s11==s13)

{

System.out.println("s11==s13");

}

else

{

System.out.println("s11!=s13");

}

//这个if...else输出s11.equals(s13)

if(s11.equals(s13))

{

System.out.println("s11.equals(s13)");

}

else

{

System.out.println("not s11.equals(s13)");

}

//s21,s22引用了两个不同的对象,这两个对象只有age字段的值相等

Student2 s21=new Student2("lili",'女',19);

Student2 s22=new Student2("张三",'男',19);

//这个if...else输出s11!=s12,因为==总是比较引用

if(s21==s22)

{

System.out.println("s21==s22");

}

else

{

System.out.println("s21!=s22");

}

//这个if...else输出s21.equals(s22),因为调用的是子类Student2的重写的equals方法

if(s21.equals(s22))

{

System.out.println("s21.equals(s22)");

}

else

{

System.out.println("not s21.equals(s22)");

}

}

}

class Student1

{

Student1(String n,char s,int a)

{

this.name=n;

this.sex=s;

this.age=a;

}

String name;

char sex;

int age;

}

//重写了继承自类Object的equals和hashCode方法

class Student2

{

Student2(String n,char s,int a)

{

this.name=n;

this.sex=s;

this.age=a;

}

//重写equals,如果两个Student2对象的age值相等,则它们相等

//重写此方法时,通常也必须重写hashCode方法,以维护hashCode方法的常规协定,

//该协定声明相等对象必须具有相等的哈希码。

public boolean equals(Object obj)

{

boolean r=false;

System.out.println("Student2.equals被调用!");

if(null!=obj obj instanceof Student2)

{

r=(this.age==((Student2)obj).age);

}

return r;

}

//重写hashCode

public int hashCode()

{

return age;

}

String name;

char sex;

int age;

}

关于javaequal和=和在java中equals比较的是什么的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。