最近刚学习了Java中语法的==与equals的区别,就好好的整理清楚;
在刚刚开始学习Java语言的时候,遇到==和equals,总觉得它们两个差不多; ==用来比较两个数据是否相等;equals用来比较两个对象是否“相等”。
双等号(==):是关系运算符,用来比较两个数据是否相等(关系运算符的运算结果一定是一个Boolean值; 比较的是变量所带的内存地址是否一样。
public class Student {
private int shuzi;
public Student(int age) {
this.shuzi = shuzi;
}
public boolean equals(Object obj) {
if(this==obj){
return true;
}
if(obj instanceof Student){
Student st = (Student)obj;
return this.shuzi==st.shuzi;
}
return false;
}
}
双等号比较两个数据是否相等
public class Demo {
public static void main(String[] args) {
// 以下三种方式都是在内存中保存一个数值100
int a1 = 100;
int a2 = 100;
Integer a3 = 100;
Integer a4 = 100;
Integer a5 = new Integer(100);
Integer a6 = new Integer(100);
System.out.println(a1 == a2); //true
System.out.println(a3 == a4); //true
System.out.println(a1 == a3); //true
System.out.println(a5 == a6); //false
System.out.println(a1 == a5); //true
System.out.println(a3 == a5); //frue
}
}
Object类
1.Object类是Java中类的层次结构的根类
2.Java中所有的类都是继承于是Object这个基类的子类
3.数组类型也是Object的子类
equals :用来比较两个对象是否“相等”,equals是Object类中提供的一个方法,这个方法的初始行为是比较对象的内存地址,但是在一些类库存里这个方法是被重写了的;如String,Integer。在这些类中,equals有它本身的实现,不再是比较在对内存中存放的地址。
对复合数据类型之间进行equals的比较,在没有重写的其方法的情况下,它们之间比较的还是内存中的存放位置的地址值,这样就跟==的结果是一样的;如果重写了,那就会按照重写的方法来实现。
Object中equals的方法
public class dome {
public static void main(String[] args) {
String s1 = "ABC";
String s2 = "ABC";
String s3 = new String("ABC");
String s4 = new String("ABC");
System.out.println(s1.equals(s2));//ture
System.out.println(s3.equals(s4));//ture
System.out.println(s1.equals(s3));//ture
}
}
这里用到了基本类型和对应的类类型在进行运算的时候,类类型的数据会自动的拆箱[拆包]
拆箱:将对象中的数据自动转换成基本类型
装箱:将基本类型的数据包装成引用类型
分享到:
相关推荐
- **双等号(==)与equals()的区别**: - `==`用于比较两个对象的引用是否指向同一个内存地址,即比较的是对象的身份。 - `equals()`方法用于比较两个对象的内容是否相等,即比较的是对象的状态。默认情况下,...
- **等号“==”与equals()方法的区别**:解释了基本数据类型和引用数据类型在比较时的不同。 - **接口与抽象类的区别**:比较了接口和抽象类在Java中的实现和用法。 - **异常分类**:阐述了运行时异常与一般异常的...
9. Java 中,两个 String 对象的比较应该使用 equals 方法,因此 str1.equals(str2) 的值为 true。 10. ASP.NET 应用程序中,访问 SqlServer 数据库时,需要导入 System.Data.SqlClient 命名空间。 11. 日期型常量...
- **Clone()**:实现克隆功能时,注意深拷贝与浅拷贝的区别。 - **默认构造器**:每个类都应至少有一个构造器,即使它没有显式声明。 - **抽象类中的抽象方法**:抽象类中可以包含抽象方法,用于强制派生类实现特定...
【知识点详解】 1. 对象方法的理解: - `getClass()`方法:这是一个非静态方法,用于获取对象的运行时类型,即实际的类信息,而不是声明时的类型。 - `clone()`方法:是一个受保护的方法,用于创建当前对象的一个...
### ISO Latin-1字符集详解 #### 知识点概览 ISO Latin-1字符集,亦称为ISO/IEC 8859-1,是计算机编码标准中的一种,主要用于西欧语言的字符表示。它由ISO(国际标准化组织)和IEC(国际电工委员会)联合制定,是...
接口与抽象类的区别 •接口里只能包含抽象方法,不同包含已经提供实现的方法;抽象类则完全可以包含普通方法。 •接口里不能定义静态方法;抽象类里可以定义静态方法。 •接口里只能定义静态常量属性,不...
- **= (Equals Sign)** - 等号,表示相等关系。 - **> (Greater-Than Sign)** - 大于号,表示大于关系。 - **? (Question Mark)** - 问号,表示疑问句。 - **@ (Commercial At)** - 商业用途的“at”符号,常用作...
- **KEYCODE_EQUALS(等号键)** - **KEYCODE_AT(@键)** - **KEYCODE_POUND(#键)** - **KEYCODE_APOSTROPHE(单引号键)** - **KEYCODE_BACKSLASH(反斜杠键)** - **KEYCODE_COMMA(逗号键)** - **KEYCODE_...
3.3.5 小心使用浮点数进行比较 53 3.3.6 boolean和char 55 3.3.7 不要使用还没有创建出来的变量 57 3.3.8 String——char串起的项链 58 3.3.9 转义符——看不见写得出 61 3.4 小结:基本数据类型—— Java中...
3.3.5 小心使用浮点数进行比较 53 3.3.6 boolean和char 55 3.3.7 不要使用还没有创建出来的变量 57 3.3.8 String——char串起的项链 58 3.3.9 转义符——看不见写得出 61 3.4 小结:基本数据类型—— Java中...