==和equals的比较
一 : == 的特点:
a == b ;
1.如果A和B是基本数据类型 == 比较的是两个变量的值
2.如果A和B是引用数据类型 == 比较的是两个变量的内存地址
二:重写的equals方法
Object中的equals方法:比较的是内存地址
public boolean equals(Object obj) {
return (this == obj);
}
String类中重写的equals 方法:比较的是内容;
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String) anObject;
int n = value.length;
if (n == anotherString.value.length) {
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
while (n-- != 0) {
if (v1[i] != v2[i])
return false;
i++;
}
return true;
}
}
return false;
}
实例:观察String中的equals方法
String a = "abc";
String b = "abc";
String c = new String("abc"); System.out.println(a.equals(b)); // 值肯定一致 所有返回 true
System.out.println(a == b);// 内存地址也一致 所以 true System.out.println(a.equals(c));// 值肯定一致 所有返回 true
System.out.println(a == c);// 内存地址不一致 所以 false
实例:观察String类型的比较
String a = "a";
String b = "b";
String c = "ab";
System.out.println(c == (a+b));//false
//01.a 和 b 都是变量,在编译期间无法确定变量的值;
//02.c在编译期间已经确定,ab无法确定;
三:关键字 final
1.final可以修饰 类,属性 ,方法
2.被final修饰的类,不能被继承;
final修饰的方法,不能被子类重写;
final修饰的属性,运行期间不能改变;
实例:观察常量的比较
final String a = "a";
final String b = "b";
String c = "ab";
System.out.println(c==(a+b));//true
实例:以Student为例重写equals方法
public boolean equals(Object anObject) {
if (anObject == null) {
return false;
}
if (this == anObject) {
return true;
}
if (!(anObject instanceof Person)) {
return false;
}
Student per = (Student) anObject;
return this.age == per.age && this.name == per.name;
}
==和equals的比较的更多相关文章
- equals变量在前面或者在后面有什么区别吗?这是一个坑点
我就不废话那么多,直接上代码: package sf.com.mainTest; public class Test { public static void main(String[] args) ...
- How to implement equals() and hashCode() methods in Java[reproduced]
Part I:equals() (javadoc) must define an equivalence relation (it must be reflexive, symmetric, and ...
- 【特种兵系列】String中的==和equals()
1. 小样示例 public static void main(String[] args) { String a = "a" + "b" + 123; Str ...
- (转)浅谈Java中的equals和==
原文地址: http://www.cnblogs.com/dolphin0520/p/3592500.html 在初学Java时,可能会经常碰到下面的代码: 1 String str1 = new S ...
- 浅谈Java中的equals和==(转)
浅谈Java中的equals和== 在初学Java时,可能会经常碰到下面的代码: 1 String str1 = new String("hello"); 2 String str ...
- List<T>Find方法,FindAll方法,Contains方法,Equals方法
假如传入的T是一个类, List<MessageInfos> MessageInfos = new List<MessageInfos>(); MessageInfos= Me ...
- 让代码重构渐行渐远系列(3)——string.Equals取代直接比较与非比较
重构背景及原因 最近由于项目组的人员在不断扩充,导致项目中代码风格各异,大有百花齐放甚至怒放之势.考虑到团队的生存与发展,经过众人多次舌战之后,最终决定项目组根据业务分成几个小分队,以加强团队管理与提 ...
- [java] 更好的书写equals方法-汇率换算器的实现(4)
[java] 更好的书写equals方法-汇率换算器的实现(4) // */ // ]]> [java] 更好的书写equals方法-汇率换算器的实现(4) Table of Content ...
- Equals和ReferenceEquals
稍微分析下一下两个方法的区别: public static bool Equals(object objA, object objB); public static bool ReferenceEqu ...
- 【原创】Java和C#下String类型中的==和equals的原理与区别
一.Java下 1.几个例子 public static void main(String[] arge) { String str1 = new String("1234"); ...
随机推荐
- 11-web网页制作APP
如何将H5和WebApp 加壳成apk.ipa 问题:已经做好的纯H5的站点 想分别加两个壳子,变成apk和ipa ,要怎么实现? 要点: 1. app只是壳子,打开app直接跳转到H5的Ur ...
- rviz2
VINS-Mono ####Panels: 面板: - Class: rviz/Displays 显示1 Help Height: Name: Displays Property Tree Widge ...
- 序列化_Transient
要实际的操作一下Serialize的代码Demo, 加深理解(某投行很喜欢问这个问题):transient关键字虽然目前还没有人面试过我,但是也是个考点
- materia官网地址
https://materializecss.com/autocomplete.html
- python pyMysql 自定义异常 函数重载
# encoding='utf8'# auth:yanxiatingyu#2018.7.24 import pymysql __all__ = ['Mymysql'] class MyExcept(E ...
- taglib简介
在 JSP最佳实践的 上一期,您学习了一种基于scriptlet的技术,这种技术被用来将上次修改的时间戳添加到JavaServer Page(JSP)文件中.不幸的是,比起它所提供的短期利益,scri ...
- yum 安装 php7 ,lamp ,以及安装swoole
1 更新yum yum update 2 安装依赖 yum -y install pcre* openssl* yum -y install gcc make gd-devel libjpeg-dev ...
- 探索未知种族之osg类生物---起源
任何程序都是有生命的,是生命就需要呼吸.例如普通的windows程序,当运行完main()函数后,就需要进入消息循环,来监听用户的各种操作,以便做出及时的回应.这样的每次循环就像生命的每次呼吸,来维持 ...
- PID参数调节口诀
参数整定找最佳, 从小到大顺序查. 先是比例后积分, 最后再把微分加. 曲线振荡很频繁, 比例度盘要放大. 曲线漂浮绕大弯, 比例度盘往小扳. 曲线偏离回复慢, 积分时间往下降. 曲线波动周期长, 积 ...
- 网络编程 tcp(一)
server端: #include <stdio.h> #include <string.h> #include <unistd.h> #include <s ...