首页 > 代码库 > ==和equals方法
==和equals方法
Java程序中测试两个变量时否相等有两种方法: == 和 equals。
当使用==来判断两个变量是否相等时,如果两个变量时基本类型变量,且都是数字类型(不一定要求数据类型严格相同),则只要两个变量的值相同,就将返回true。
但对于两个引用类型变量,只有它们指向同一个对象时,== 判断才会返回true。
== 不可用于比较类型上没有父子关系的两个变量。
public static void main(String[] args) { int i = 12; float f = 12.0f; // 输出true System.out.println("65和65.0f是否相等?" + (i == f)); char c = ‘A‘; // 输出true System.out.println("65和‘A‘是否相等?" + (i == c)); String s1 = new String("Test"); String s2 = new String("Test"); // 输出false System.out.println("s1和s2是否相等?" + (s1 == s2)); // 输出true System.out.println("s1和s2是否相等?" + (s1.equals(s2))); // 编译不过 // System.out.println("Test" == new EqualTest()); }
需要注意 "Test"和new String("Test")是有区别的?
“Test”是字符串直接量(即可以在编译时就计算出来的字符串值),JVM使用常量池来管理这些字符串,
当使用new String("Test")时,JVM先使用常量池来管理“Test”直接量,再调用String类的构造器来创建一个新的String对象,新创建的String对象被保存在堆内存中。也就是说new String("Test")一共创建了两个字符串对象。
常量池(constant pool)专门用来管理在编译时被确定并被保存在已编译的.class文件中的一些数据。它包括了关于类、方法、接口中的常量,还包括字符串常量。
==和equals方法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。