当前位置: 首页 > 面试题库 >

打印字符串比较结果时得到奇怪的输出

康文昌
2023-03-14
问题内容

我遇到此行的问题(在下面评论):

System.out.println("Using == ::"+s3==s4)

输出false

但是,System.out.println(s3==s4)输出true

现在,我不明白为什么我得到这个结果:

public class string {
    public static void main(String[] args){
        String s3="Shantanu";
        String s4=s3;
        String s1=new String("java");
        String s2=new String("javaDeveloper");

        System.out.println("Using Equals Method::"+s1.equals(s2));
        System.out.println("Using Equals Method::"+s3.equals(s4));
        System.out.println("Using == ::"+s3==s4);//Problem is here in this line
        System.out.println(s1+"Directly printing the s2 value which is autocasted from superclass to string subclass ");
        System.out.println("Directly printing the s1 value which is autocasted from superclass to string subclass "+s2);
        System.out.println(s3);
    }
}



输出使用等于方法:: false
使用等于方法:: true
使用== :: false
java直接打印从超类自动转换为字符串子类的s2值
直接打印从超类自动转换为字符串子类javaDeveloper的s1值

问题答案:

您缺少一组括号:

System.out.println("Using == ::" + (s3==s4));

在您的版本中,"Using == ::" + s3正在通过==与进行比较s4,这不是您想要的。

通常,+的优先级高于==,这就是为什么"Using == ::" + s3==s4将其评估为的原因("Using == ::" + s3) == s4



 类似资料:
  • 问题内容: 我对为什么该操作有效感到非常困惑。有人可以解释吗? 为了澄清起见,我正在尝试将字符串与变量进行比较。我已经知道要修复可以随便附上in s中的代码 我想知道这是PHP错误,服务器错误还是某种有效的操作。根据此操作 无效 。 编辑: 从头开始,显然它确实提到字符串和0之间的松散比较是正确的。但是我仍然不知道为什么。 编辑2: 我修改了我的问题,为什么值不起作用? 问题答案: 从PHP手册:

  • 我有两个向量: 我试图使用比较它们。不幸的是,给出了一个意想不到的结果。 虽然我希望: 那么,这是什么原因造成的呢?怎样才能达到预期的效果呢? 这个问题似乎与这样一个事实有关,即两个向量的最后一个元素与将更改为例如确实给出了预期的结果相同,并且还因为将设置为给出而不是。 编辑 换句话说,我希望丢失的元素(当长度不同时)作为零传递(只有似乎给出

  • 问题内容: 我试图比较2个1000字节的字符串,并想知道差异的确切位置,即;字符串与哪个字节不同。.是否有任何函数可以确定它? 问题答案: 我试图测试此处给出的答案,并且提出了另一个 更快 (通常情况下)的解决方案,尽管它不太优雅。 首先,让我们看看所提出的解决方案有多快: 如您所见,genexp比快很多,但这可能是由于它比查找第一个非等号字符要好得多。 现在,我们如何加快速度?好吧,我们可以使用

  • 在C中比较相同的浮点值 比较float和float literal的奇怪输出 我读了上面关于浮点的链接,但甚至得到奇怪的输出。 现在按照推广规则,“其他如果”难道不是必须印出来的吗? 但是,这里是打印“if”

  • 问题内容: 我正在使用Netbeans。当我运行下面的程序时,我将其作为输出!怎么会? 我也尝试过解决它,但是后来我得到了 线程“主”中的异常java.lang.ClassCastException:[我无法在TopCoder.Test.main(Test.java:13)处强制转换为java.lang.Integer。Java结果:1 问题答案: 上面的工作如您所愿。 因此,看起来“ int”数

  • 问题内容: 执行以下代码时: 显示以下输出: 1.0000001 但是输出应该是 1.0000000 ,对吧?如我错了请纠正我..!! 问题答案: 对于IEEE 754标准,0.1并不是真正的“ 0.1”。 0.1编码为:(带有浮点数) 0是符号(=正) 01111011指数(= 123-> 123-127 = -4 (127是IEEE 754中的 偏差 )) 100110011001100110