Java学习笔记-语法篇[==与equals的区别]
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java学习笔记-语法篇[==与equals的区别],小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2304字,纯文字阅读大概需要4分钟。
内容图文
![Java学习笔记-语法篇[==与equals的区别]](/upload/InfoBanner/zyjiaocheng/638/228b25e592344bdb93412e9fd82b281e.jpg)
[Java语法篇7]==与equals的区别
1、== 的作用
1)在等号两端为基础数据类型变量时,作用为比较两者值是否相等
2)在等号两端为引用类型变量时,作用为比较两者在栈中储存的地址是否相同
public class Test{
public static void main(String[] args){
int age1 = 51;
int age2 = 51;
System.out.println(age1 == age2);//输出为true,两端变量为基础数据类型,且值相等
String name1 = "张三";
String name2 = "张三";
String name3 = new String("张三");
System.out.println(name1 == name2);//输出为true,两端变量为引用类型,且地址相同(常量池概念,详见Java语法篇6)
System.out.println(name1 == name3);//输出为true,两端变量为引用类型,且地址不相同(详见Java语法篇6)
}
}
2.Object中的equals的作用
1)Object中equals的源码
public boolean equals(Object obj){
return (this == obj);
}
2)Object中equals的作用
观察源码可知,返回值为this == obj的结果,由于等号两端为引用类型,所以equals比较的是地址是否相同
3.String类中重写了的equals方法
1)String类中equals的作用
比较两个字符串内容是否相等
public class Test{
public static void main(String[] args){
String name1 = "Tim";
String name2 = "Tim";
System.out.println(name1.equals(name2));
System.out.println(name1.equals(new Test()));//也可以传递一个Test类,因为Test也是Object的子类,详见equals源码的参数列表
String name3 = new String("Tim");
System,out,println(name1.equals(name3));
}
}
2)String类中重写的equals方法的源码
public boolean equals(Object anObject){ //anObject变量储存的是上转型对象的地址
if(this == anObject){ //比较地址是否相同
return true; //地址相同则此时内容必然相同
}
if(anObject instanceof String){ //判断anObject变量所指向对象是否为String类型
String anotherString = (String)anObject; //将anObject上转型对象下转型成String类
int n = value.length; //调用equals 方法的 String 对象的 每个字符组成的char类型数组的长度
if(n == anotherString.value.length){ //anotherString.value.length: 每个字符组成的char类型数组的长度
char v1[] = value; //调用equals 方法的 String 对象的 每个字符组成的char类型数组
char v2[] = anotherString.value; //anObject所对应的 字符串的 字符构成的char类型数组
int i = 0;
while(n-- != 0){ //对应字符进行比较
if(v1[i] != v2[i])
return false; //对应字符不同,则两个字符串必然不同
i++;
}
return true; //antObject指向的对象类型为String类型 且两个字符串长度相同 且对应字符都相同,则两个字符串必然相同
}
}
return false; //1.anObject指向的对象不是String类型则必然不相同 2.两个长度不同则内容必然不相同
}
完
内容总结
以上是互联网集市为您收集整理的Java学习笔记-语法篇[==与equals的区别]全部内容,希望文章能够帮你解决Java学习笔记-语法篇[==与equals的区别]所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。