Java程序中测试两个变量是否相等,有两种方法,一种是“==”,一种是“equals”。
首先介绍一下“==”
当使用“==”来判断两个变量是否相等时,如果两个变量是基本类型的变量,那么只要两个变量的值相等,就返回true。
如果是两个引用类型的变量,那么这两个变量必须指向同一个对象时,才返回true,而且,“==”不能比较类型上没有父子关系的两个对象。这是理论知识,下面给个例子,来做进一步解释。
public static void main(String[] args) {
int value1 = 65;
float value2 = 65.0f;
double value3 = 65.0d;
char value4 = 'A';
System.out.println(value1 == value2);
System.out.println(value2 == value3);
System.out.println(value1 == value3);
System.out.println(value1 == value4);
System.out.println(value2 == value4);
}
打印结果:
true
true
true
true
true
char也是基本数据类型,'A' 的ASCII码为65,所以int型和它比较值是相等的。这是很简单的例子,就不做进一步解释。
再看下面代码:
public static void main(String[] args) {
Persion p1 = new Persion();
Persion p2 = p1;
Persion p3 = new Persion();
System.out.println(p1 == p2);
System.out.println(p1 == p3);
}
Persion是我自己建的一个类,先抛开它有哪些内容不管。上面打印的结果为:
true
false
p1是new出来的,所以会在内存开辟一段空间来存放它,而Persion p2 = p1 的意思是将p1指向的内存区地址赋值给了p2,实际上他们两个指向的是同一块内存区域,即同一个对象。所以他们两个是相等的,返回的是true。而p3也是new出来的,但是它在内存的其他地方存储它。所以它俩比较返回false。
下面做一个测试来证明p1和p2的相同性。
public static void main(String[] args) {
Persion p1 = new Persion();
p1.setFirstname("Fire");//用p1设置firstname
System.out.println(p1.getFirstname());//第一次打印p1的firstname
Persion p2 = p1;
p2.setFirstname("Water");//用p2设置firstname
System.out.println(p1.getFirstname());//第二次打印p1的firstname
}
打印结果为:
Fire
Water
明白了吧?
分享到:
相关推荐
对象实体与对象引用有何不同? 对象的相等和引用相等的区别 类的构造方法的作用是什么? 如果一个类没有声明构造方法,该程序能正确执行吗? 构造方法有哪些特点?是否可被 override? 面向对象三大特征 封装 继承 多态 ...
11、"=="和equals方法究竟有什么区别? 12 12、静态变量和实例变量的区别? 13 13、是否可以从一个static方法内部发出对非static方法的调用? 13 14、Integer与int的区别 13 15、Math.round(11.5)等於多少? Math....
11、"=="和equals方法究竟有什么区别? 11 12、静态变量和实例变量的区别? 12 13、是否可以从一个static方法内部发出对非static方法的调用? 12 14、Integer与int的区别 13 15、Math.round(11.5)等於多少? Math....
- **问题**: `==`操作符与`equals`方法有何不同? - **解答**: `==`操作符比较的是两个对象的引用是否相等,即它们是否指向内存中的同一地址。而`equals`方法用于比较两个对象的内容是否相等。默认情况下,`equals`...
11、"=="和equals方法究竟有什么区别? 12、静态变量和实例变量的区别? 13、是否可以从一个static方法内部发出对非static方法的调用? 14、Integer与int的区别 15、Math.round(11.5)等於多少? Math.round(-11.5)等...
第三,Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统)。 第四,&和&&的区别。 第五,HashMap和Hashtable的区别。 第六,Collection 和 Collections的区别。 第七,什么...
应用程序和小程序的主类有何不同? Java 程序的主类是程序的入口点,应用程序和小程序的主类不同,在应用程序中,主类是程序的入口点,而在小程序中,主类是小程序的入口点。 Java 应用程序与小程序之间有哪些差别...
11. "=="和equals方法究竟有什么区别? 答:"=="比较的是对象的引用地址,而equals方法比较的是对象的实际值。 12. 静态变量和实例变量的区别? 答:静态变量属于类,实例变量属于对象。 13. 是否可以从一个static...
180、JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么? 42 181、四种会话跟踪技术 42 182、Request对象的主要方法 43 183、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出...
44.两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对? 答:不对,有相同的hash code。 45.swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上? 答:switch(expr1...
17、JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么? 90 18、MVC的各个部分都有那些技术来实现?如何实现? 90 19、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种...
第三,Static Nested Class和Inner Class的不同,说得越多越好(面试题有的很笼统)。 第四,&和&&的区别。 这个问得很少。 第五,HashMap和Hashtable的区别。 常问。 第六,Collection和Collections...
如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。 18、error和exception有什么区别? error 表示恢复...
#### 第二十九,两个对象值相同(x.equals(y) == true),但却可有不同的 hash code,这句话对不对? - 如果`x.equals(y)`为`true`,根据`equals()`和`hashCode()`的一致性原则,它们应当具有相同的哈希码。但是,...
17、JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么? 90 18、MVC的各个部分都有那些技术来实现?如何实现? 90 19、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种...
17、JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么? 90 18、MVC的各个部分都有那些技术来实现?如何实现? 90 19、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种...
17、JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么? 90 18、MVC的各个部分都有那些技术来实现?如何实现? 90 19、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个...
17、JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么? 98 18、MVC的各个部分都有那些技术来实现?如何实现? 98 19、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种...