>凡事网 导航

"=="和equals方法究竟有什么区别? “==”和equals方法究竟有什么区别

2024-07-05m.fan-pin.com
equals()和==到底有什么区别啊?~

1、功能不同
"=="是判断两个变量或实例是不是指向同一个内存空间。
"equals"是判断两个变量或实例所指向的内存空间的值是不是相同。
2、定义不同
"equals"在JAVA中是一个方法。
"=="在JAVA中只是一个运算符合。
例子:
Student student1 = new Student();
Student student2 = new Student();
System.out.println(student1.equals(student2));
System.out.println(student1 == student2);

3、运行速度不同
"=="比"equals"运行速度快,因为"=="只是比较引用。
"equals"比"=="运行速度要慢。
扩展资料
equals()方法特点:
1、自反性:x.equals(x)返回true;
2、对称性:若x.equals(y)为true,则y.equals(x)亦为true;
3、传递性:若x.equals(y)为true且y.equals(z)也为true,则x.equals(z)亦为true;
4、一致性:x.equals(y)的第一次调用为true,那么x.equals(y)的第二次、第三次、第n次调用也均为true,前提条件是没有修改x也没有修改y;
5、对于非空引用x,x.equals(null)永远返回为false。
参考资料:百度百科-equals

“==”是看两个对象是否是同一个对象,也就是两个对象引用是否指向同一个对象(java分配的内存地址一样)当然如果用于int,long,double就不是看两个值是否相等了。
equals()是比较两个对象的内容是否相等,一般如果用户自己不定义针对自己的类的equals()方法,那么就会使用object的活着你的类的父类的这个方法。如果你的类里没有对象引用的域,就不必要覆盖equals()(注意string域也是对象)string有自己的equals()方法(它已经覆盖了object的该方法了。

(单独把一个东西说清楚,然后再说清楚另一个,这样,它们的区别自然就出来了,混在一起说,则
很难说清楚)
==操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是
否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用==操作符。
如果一个变量指向的数据是对象类型的,那么,这时候涉及了两块内存,对象本身占用一块内存(堆
内存),变量也占用一块内存,例如Objet obj = new Object();变量obj是一个内存,new Object()是另一个内
存,此时,变量obj 所对应的内存中存储的数值就是对象占用的那块内存的首地址。对于指向对象类型的
变量,如果要比较两个变量是否指向同一个对象,即要看这两个变量所对应的内存中的数值是否相等,这
时候就需要用==操作符进行比较。
equals 方法是用于比较两个独立对象的内容是否相同
,就好比去比较两个人的长相是否相同,它比较
的两个对象是独立的。例如,对于下面的代码:
String a=new String("foo");
String b=new String("foo");
两条new 语句创建了两个对象,然后用a,b 这两个变量分别指向了其中一个对象,这是两个不同的对
象,它们的首地址是不同的,即a 和b 中存储的数值是不相同的,所以,表达式a==b 将返回false,而这
两个对象中的内容是相同的,所以,表达式a.equals(b)将返回true。
在实际开发中,我们经常要比较传递进行来的字符串内容是否等,例如,String input
= …;input.equals(“quit”),许多人稍不注意就使用==进行比较了,这是错误的,随便从网上找几个项目实战
的教学视频看看,里面就有大量这样的错误。记住,字符串的比较基本上都是使用equals方法。
如果一个类没有自己定义equals方法,那么它将继承Object 类的equals方法,Object类的equals方法
的实现代码如下:
boolean equals(Object o){
return this==o;}这说明,如果一个类没有自己定义equals 方法,它默认的equals 方法(从Object 类继承的)就是使
用==操作符,也是在比较两个变量指向的对象是否是同一对象,这时候使用equals和使用==会得到同样的
结果,如果比较的是两个独立的对象则总返回false。如果你编写的类希望能够比较该类创建的两个实例对
内容是相同的。

new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");这个正则表达式麻烦...
function getParameter(name) { var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)","i");var r = location.search.substr(1).match(reg);if (r!=null) return (r[2]); return null;} 以上是一个用于获取url中的查询参数的 js 方法 === 1) 其中的正则表达式用到了...

printf("1:%d\\n",!(y==x\/2)); printf("2:%d\\n",y!=x%3); printf("3...
x=5,y=2;第1个输出0,因为x\/2=2,y==2,所以(y==x\/2)为真,应返回真1的,但是前面加了一个!,所以就变为假0了,第2个输出0,因为x%3=2,y=2,所以(y!=x%3)为假,所以返回假0.第3个输出0,因为X=5>0为真,y=2<0为假,真并假为假,所以返回假0.第4个输出1,因为x=...

java中"a="+a是什么意思~~为什么要在a=上加引号
引号里面当然字符串,这里应该注意的是那个加号,加号在这里的作用是连接字符串与非字符串,在这里如果加右边的a被赋值2,则在输出语句中会显示a=2。此外加号还可以用于两个字符串的合并,如果在同一行中有这样语句。"I am a student"其与"I am a"+"student"效果一样,但加号右边的字符串可以在下...

char str[]="abcdef"; printf("%4.5s",str);输出结果是啥
4.5s 意思就是输出字符串长度最少占4个字符长度,实际内容取字符串前5个字符。所以输出的是abcde。如果写%4.2s,那么实际内容取字符串前2个字符。这时小于4个字符,就会在左边补2个空格 变成“ ab”。其他类似。

有下面程序段 char a[3],b[ ]="china";a=b;printf("%s",a);则是否编...
有编译错误。数组之间拷贝不能直接使用a=b,而是可以使用字符串拷贝函数strcpy。而且数组a的长度只有3,而数组b有5个字符,还不包括结尾字符。字符串拷贝函数strcpy格式:strcpy (字符数组名1,字符数组名2) 的功能:把字符数组2中的字符串拷贝到字符数组1中。串结束标志“”也一同拷贝。字符数名2, ...

金蝶软件报表公式=ACCT("1001:1002","Y","",0,0,0,"")+ACCT("1012...
ACCT是金蝶的取数函数,1001是现金科目1002是银行存款科目,Y代表取数类型为余额,000代表取年初数,综合本位币等。这个公式如果猜得没错的话就是资产负债表货币资金的年初数。<1001:1009>这里是1001到1009科目和的意思,后面跟的是取数类型。意思是取第一的会计期间的期初余额 就是年初拉。一般公式,...

执行赋值语句a="123"+"456"后,变量a的值是___?
执行赋值语句a="123"+"456"后,变量a的值是"123456"。字符串或串(String)是由数字、字母、下划线组成的一串字符。一般记为 s=“a1a2···an”(n>=0)。它是编程语言中表示文本的数据类型。通常以双引号内部的整体作为操作对象。字符串的连接运算语句公式为s1+s2+s3+…+sn。因此,"123"和"456...

int x=1,y=1,z=1; if (x--==1&&y++==1||z++==1) System.out.println...
x=0,y=2,z=1。(x——==1&&y++==1||z++==1)相当于((x——==1&&y++==1)||z++==1))。x——==1为true执行后x=0。双与&&是前面的条件如果为true,后面的条件也要判断一次,所以y++==1也执行了。y++==1为true执行后y=2。两个都为true,那么(x——==1&&y++==1...

Error (10500): VHDL syntax error at test.vhd(18) near text "=...
信号赋值符号是“<=”,不是"="!改为:IF (R_IN="1010") THEN OUT_LOW<="0000";OUT_HIGH<="0000";

char *p="girl"; 的含义是定义字符型指针变量p,p的值是字符串"girl...
不对的,p的值应该是girl字符串的首地址。p是指针,他的类型是char型,指向常字符串girl,*p的值是girl,p的值是girl字符串的首地址。字符指针也可以指向一个字符串,可以用字符串常量对字符指针进行初始化。例如:char *str = "hello" ;这是对字符指针进行初始化。此时,字符指针指向一个字符串...

相关链接2

返回顶部
凡事房车自主流
凡事网