java字符串==比较的是本身地址还是指向地址?
String a = “hello”;
String b = “hello”;
这里的a,b都指向同一个地址。那a与b本身自己也有地址的吧,也就是说a==b比较的是指向的地址,并不是a,b自己的地址,是不是这么理解的?
在 Java 中,使用 == 进行字符串比较时,比较的是两个字符串对象本身的地址是否相同,而不是它们所指向的地址。换句话说,对于 String 对象来说,只有在它们的地址相同时,== 操作符才会返回 true。
这种行为与其他数据类型不同。对于基本数据类型(例如 int 或 double),使用 == 比较两个变量时,比较的是它们的值是否相等。但对于引用类型,== 会比较它们所占用的内存地址。
这是因为在 Java 中,每个创建的字符串对象都会被存储在堆内存中,并具有唯一的内存地址。因此,在比较两个字符串时,如果它们所指向的地址不同,则 == 操作符会返回 false。
需要注意的是,在实际编程中,我们通常使用 equals() 方法来比较字符串的内容是否相等,而不是使用 == 操作符。这是因为 equals() 方法比较的是字符串的内容,而不关心它们的内存地址。