String和StringBuilder的区别

时间:2018-01-25 02:11:37

标签: java string stringbuilder

以下是Java中的代码:

package string;

import java.util.Scanner;

public class PalindromeString 
{
    public static void main(String[] args) 
    {
        Scanner sc=new Scanner(System.in);
        System.out.println("Enter the string: ");
        String s=sc.next();
        StringBuilder j=new StringBuilder(s).reverse();
        System.out.println(j);
        boolean b=s.equals(j);
        System.out.println(b);
        sc.close();
    }
}
  

输出:输入字符串:女士

     

J =女士

     

为什么此代码的输出 false

4 个答案:

答案 0 :(得分:3)

输出为false,因为您正在将String对象与StringBuilder对象进行比较。虽然sj都包含相同的数据,但它们是不同的对象类型,因此它们永远不会相等"。要回答true,您可以更改j,使其成为String而不是StringBuilder

String j = new StringBuilder(s).reverse().toString();

答案 1 :(得分:2)

String.equals()文档中明确说明了结果为假的原因:

  

将此字符串与指定对象进行比较。当且仅当参数不是null 并且是一个String对象时,结果才是真的,它表示与此对象相同的字符序列。

您正在将StringBuilder对象传递给equals()而不是String对象,因此无论字符如何,结果都为false。

StringStringBuilder都实施了CharSequence,因此您可以使用String.contentEquals()代替:

boolean b = s.contentEquals(j);

答案 2 :(得分:0)

您正在将StringStringBuilder进行比较。当然会是false

尝试b=s.equals(j.toString());这应该b true

答案 3 :(得分:0)

stringBuilder不会覆盖Object的.equals()函数,这意味着两个引用不相同,结果为false。

相关问题