equals ==(不求甚解) 十六
来源:互联网 发布:免费语音电话软件 编辑:程序博客网 时间:2024/06/08 12:32
/**
* 总之:
“==”比较的是值【变量(栈)内存中存放的对象的(堆)内存地址】
基本数据类型比较:自然数值。
引用:比较的也是值,只不过不是数值,是变量本身的值(这个值是内存地址)
比如:String str="abc";str应用的值,是内存个地址。指向的对象的值
是"abc"
equal用于比较两个对象的值是否相同【不是比地址】 ,比较的前提,两个比较对象的类型要一样,然后再比较值。
如果类型不一样,返回肯定是false。
Object
public boolean equals(Object obj) {
return (this == obj);
}
其他类型:xx
public boolean equals(Object obj) {
if (obj instanceof xx) {
return value == ((xx)obj).byteValue();
}
return false;
}
【特别注意】Object类中的equals方法和“==”是一样的,没有区别,而String类,
Integer类等等一些类,是重写了equals方法,才使得equals和“==不同”,所以,
当自己创建类时,自动继承了Object的equals方法,要想实现不同的等于比较,必须重写equals方法。
*
*/
public class EqualsTest {
public static void main(String[] args) {
Byte a = 1;
Byte b = new Byte("1");
Byte c = 0x1;
System.out.println("a.equals(1):"+a.equals(1));
System.out.println("a==1:"+(a==1));
System.out.println("a.equals(b):"+a.equals(b));
System.out.println("a==b:"+(a==b));
System.out.println("c.equals(1):"+c.equals(1));
System.out.println("c==1:"+(c==1));
System.out.println("======================");
Integer i = 1;
System.out.println("i.equals(1):"+i.equals(1));
System.out.println("i==1:"+(i==1));
//==============================================
//对于基本类型的变量。"=="和"equal"的区别
//“==”对于基本数据类型,判断两个变量的值是否相等。
//“equal”不能用于基本数据类型。只能用于类变量。对于基本数据类型要用其包装类。
//对于对象变量,"=="和"equal"的区别
System.out.println("======================");
String st1="you ";
String st2="are super man";
String st3="you are super man";
String st4="you are super man";
Boolean b1=(st1==st2);
Boolean b2=(st1+st2)==st3;
Boolean b3=(st3==st4);
System.out.println("st1==st2:"+b1+"-----(st1+st2)==st3:"+b2+"-----st3==st4:"+b3);
//因为对象变量的存储的是对象在内存中的路径,即内存地址。所以用“==”比较时,即使
//对象的值相等,但是他们的内存地址不同,所以==的结果为false。故“==”用于比较两
//个变量的值是否相等,而不是变量引用的对象是否相等
Boolean r1=st1.equals(st2);
Boolean r2=(st1+st2).equals(st3);
Boolean r3=st3.equals(st4);
System.out.println("st1.equals(st2):"+r1+"-----(st1+st2).equals(st3):"+r2+"-----st3.equals(st4):"+r3);
//equal用于比较两个对象是否相同。
}
}
* 总之:
“==”比较的是值【变量(栈)内存中存放的对象的(堆)内存地址】
基本数据类型比较:自然数值。
引用:比较的也是值,只不过不是数值,是变量本身的值(这个值是内存地址)
比如:String str="abc";str应用的值,是内存个地址。指向的对象的值
是"abc"
equal用于比较两个对象的值是否相同【不是比地址】 ,比较的前提,两个比较对象的类型要一样,然后再比较值。
如果类型不一样,返回肯定是false。
Object
public boolean equals(Object obj) {
return (this == obj);
}
其他类型:xx
public boolean equals(Object obj) {
if (obj instanceof xx) {
return value == ((xx)obj).byteValue();
}
return false;
}
【特别注意】Object类中的equals方法和“==”是一样的,没有区别,而String类,
Integer类等等一些类,是重写了equals方法,才使得equals和“==不同”,所以,
当自己创建类时,自动继承了Object的equals方法,要想实现不同的等于比较,必须重写equals方法。
*
*/
public class EqualsTest {
public static void main(String[] args) {
Byte a = 1;
Byte b = new Byte("1");
Byte c = 0x1;
System.out.println("a.equals(1):"+a.equals(1));
System.out.println("a==1:"+(a==1));
System.out.println("a.equals(b):"+a.equals(b));
System.out.println("a==b:"+(a==b));
System.out.println("c.equals(1):"+c.equals(1));
System.out.println("c==1:"+(c==1));
System.out.println("======================");
Integer i = 1;
System.out.println("i.equals(1):"+i.equals(1));
System.out.println("i==1:"+(i==1));
//==============================================
//对于基本类型的变量。"=="和"equal"的区别
//“==”对于基本数据类型,判断两个变量的值是否相等。
//“equal”不能用于基本数据类型。只能用于类变量。对于基本数据类型要用其包装类。
//对于对象变量,"=="和"equal"的区别
System.out.println("======================");
String st1="you ";
String st2="are super man";
String st3="you are super man";
String st4="you are super man";
Boolean b1=(st1==st2);
Boolean b2=(st1+st2)==st3;
Boolean b3=(st3==st4);
System.out.println("st1==st2:"+b1+"-----(st1+st2)==st3:"+b2+"-----st3==st4:"+b3);
//因为对象变量的存储的是对象在内存中的路径,即内存地址。所以用“==”比较时,即使
//对象的值相等,但是他们的内存地址不同,所以==的结果为false。故“==”用于比较两
//个变量的值是否相等,而不是变量引用的对象是否相等
Boolean r1=st1.equals(st2);
Boolean r2=(st1+st2).equals(st3);
Boolean r3=st3.equals(st4);
System.out.println("st1.equals(st2):"+r1+"-----(st1+st2).equals(st3):"+r2+"-----st3.equals(st4):"+r3);
//equal用于比较两个对象是否相同。
}
}
阅读全文
0 0
- equals ==(不求甚解) 十六
- equals ==(不求甚解 )补充 十七
- 不求甚解
- 不求甚解
- 不求甚解
- 不求甚解
- == equals和Arrays.equals
- equals 和 ==, equals 和 hashcode
- Java4Android学习十六 - equals()、hashCode()、toString()
- 类的加载过程,不求甚解即可(十)
- 不求甚解1
- 不求甚解-Shiro
- 不求甚解-SpringBoot
- 不求甚解-luence
- 不求甚解-zookeeper
- equals 和== (引用)
- 深刻理解“==”和“equals()”
- String ==和equals()区别
- registry v2的一些心得
- 算法第八节:冒泡排序
- PDO防注入原理分析以及使用PDO的注意事项
- 自定义图片上传
- Vps中Ubuntu下安装Mysql并开启远程数据库访问过程记录
- equals ==(不求甚解) 十六
- XSL常见问题及解决(一)如何实现给html中标签li的id自动按序号命名
- JVM运行时数据区概述
- GestureDetector使用
- Python3.5中安装Scrapy
- 雅虎军规——前端优化的35条建议
- tensorflow学习:矩阵乘法
- PHP数据库连接类
- 什么是web标准、可用性、可访问性