gpt4 book ai didi

java - JUnit String 和 StringBuffer 之间的不同行为

转载 作者:行者123 更新时间:2023-12-02 03:54:03 30 4
gpt4 key购买 nike

我正在编写一个 JUnit 测试用例来比较两个 StringBuffer。 (测试将检查字符串是否反转。)

@Test
public void testReverseString() {
StringBuffer orig = new StringBuffer("fedcba");
StringBuffer exp = new StringBuffer("abcdef");
// function will reverse the string so
// orig will be "abcdef" after the call
Question1_2.reverseString(orig);
//System.out.println(exp + " " + orig); // output - abcdef abcdef
//assertEquals(exp.toString(), orig.toString()); This Passes
//assertEquals(exp, orig); This FAILS
//assertTrue(exp.equals(orig)); This FAILS
}

据此JUnit to test for StringBuffers断言Equals(exp, orig);应该可以。

assertEquals(exp.toString(), orig.toString()); This Passes
//assertEquals(exp, orig); This FAILS
//assertTrue(exp.equals(orig)); This FAILS

我不确定我是否误解了 String、StringBuffer 和 JUnit assertEquals 的一些基本内容。

谢谢阿米特

最佳答案

StringBuffer 不会覆盖 equals() 方法。因此,它使用 Object 类的实现来检查引用相等性(检查两个对象是否相同)。

在您的情况下,两个对象显然不一样(尽管它们的内容相同),因此失败。

另一方面,

String 会重写 equals() 方法,如果两个字符串的内容相同,则返回 true

关于java - JUnit String 和 StringBuffer 之间的不同行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35643679/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com