java 程序中测试两个变量是否相等有两种方法:
- ==
- equals()方法
当使用==判断两个变量是否相等时,如果两个变量是基本类型变量,且都是数值类型(不一定要求数据类型严格相同),则只要两个变量的值相等时,才会返回true
public class m{ 10 public static void main(String[] args){ 11 String str1 = "abc"; 12 String str2 = "abc"; 13 System.out.println(str1 ==str2); 14 String str3 = new String("hello"); 15 String str4 = new String("hello"); 16 System.out.println(str3 == str4); 17 System.out.println(str3.equals(str4)); 18 } 19 }
运行结果
String 有一个非常容易迷惑的地方:"hello"直接量和new String("hello")有什么区别?
当我们直接将形如"hello"的字符串直接量时,JVM将会使用常量池来管理这些字符串;
当使用new String("hello")时,JVM会先使用常量池来管理"hello"直接量,在调用String 类的构造器来创建一个新的String对象,新创建的String对象被保存在堆内存当中。
常量池专门用于管理在编译时被确认并保存在已经编译的.class文件中的一些数据。