Java中打印值相同的两个String用==比较返回false是什么原因
问题原因
- Java中
==运算符用于引用类型比较时,仅校验两个对象的内存地址是否一致,不会对比对象的实际内容。你代码中字符串A是字面量赋值生成,存储在JVM字符串常量池;字符串C是通过char数组动态生成的新对象,存储在堆内存,二者内存地址不同,因此A == C返回false。 - 你原有代码存在语法错误:
valueOf是String类的静态方法,调用时缺类名,需修改为String.valueOf(B)才可正常编译。
正确写法
字符串内容对比需使用equals()方法,修正后代码如下:
public class Random_practise { public static void main (String[] args){ String A = "madam"; int i = A.length() - 1; char B[] = new char[A.length()]; for (int k = 0; k < A.length(); k++ ){ B[k] = A.charAt(i); i--; } String C = String.valueOf(B); if (A.equals(C)){ System.out.println("Yes"); } else{ System.out.println("No"); } } }
运行结果
输入字符串为madam时,程序输出Yes。
内容的提问来源于stack exchange,提问作者Kabir Pathak
相关产品推荐
相关产品推荐

