当前位置: 首页 > 知识库问答 >
问题:

为什么在java中布尔(s4.intern()=s4)输出为false?[副本]

辛星宇
2023-03-14

我对JAVA中的字符串比较情况有一些疑问

这是一个代码

    public class C1{    
    public static void main(String[] args){
    
    String s1="welcome";
    String s2="welcome";
    String s3=new String("welcome");
    String s4=new String(s2);
    String s5=s1;

    boolean b1=(s1==s2);
    boolean b2=(s3==s4);
    boolean b3=(s1.equals(s3));
    boolean b4=(s4.intern()==s4);
    boolean b5=(s5==s2);

    System.out.println(b1); //true 
    System.out.println(b2); //false ??
    System.out.println(b3); //true
    System.out.println(b4); //false ??
    System.out.println(b5); //true


}

}

这是我对5以上输出的看法。

>

's3==s4'

`s1.equals(s3)'

's4.intern()==s4'

“s5==s2”:s5是s1。s1与s2相同。

我的意见是真的吗?我真的需要帮助...我马上就要考试了谢谢大家!

共有1个答案

居晗日
2023-03-14

's3==s4'

是的,每次您执行new String时,都会创建一个不同的String对象,因此保证s3s4引用不同的String对象。

s4.intern()指向s2的引用。但是s2和s4不是同一个对象。所以假?

是的,而s4.intern()==s2的原因是因为intern()的留档说:

调用intern方法时,如果池中已包含一个字符串,该字符串等于由equals(object)方法确定的该对象,则返回池中的字符串。否则,此字符串对象将添加到池中,并返回对此字符串对象的引用。

字符串池从一开始就包含“欢迎”,因为那是您代码中的文字。s4的内容也是“欢迎”,因此intern返回对字符串池中String的引用,这也是s2所指的。

 类似资料:
  • S4

    S4是Yahoo!发布的一个开源通用、分布式、可扩展、部分容错、具备可插拔功能的平台。这套平台主要是为了方便开发者开发处理流式数据(continuous unbounded streams of data)的应用。Yahoo!之所以开发S4系统,主要是为了解决它现实的问题:搜索广告的展现。搜索广告是当前各大搜索引擎的主要收入来源,用户发出查询请求,搜索引擎在返回正常结果的同时也会返回相关广告,而广

  • S4 是一个常规用途的、分布式的、可伸缩的、容错的、可插入式的平台用于处理联系的无限数据流。 S4填补了复杂的专有系统和面向批处理的开源计算平台之间的差距。我们的目标是开发高性能计算平台从应用编程的并行处理系统中固有的复杂性隐藏。 S4 已经在 Yahoo 的系统中使用,用于处理每秒数以千计的搜索查询。

  • 问题内容: 是否有评估为假的原因?还是只是成功时返回0的C约定起作用? 问题答案: 大多数更改容器就位返回值的Python方法- 命令-查询分离原理的应用。(Python总是很务实,所以一些变数在获取它时确实会返回一个可用的值,否则会很昂贵或一团糟-该方法是这种实用主义的一个很好的例子-但是这些绝对是例外,不是规则,并且没有理由append例外)。

  • 我觉得这给了我很小的灵活性每当我使用这个函数。使用此函数时,我通常会查找元素的第一次出现,但它只返回,我发现这一点有些欠缺。 使用此函数的主要原因是每当找到元素时,都会循环,因此使用会失去作用,因为不会短路。是相同的。 我是遗漏了什么,还是必须使用循环来获取JavaScript中的第一个匹配元素?

  • 可能重复: 如何比较Java中的字符串? 我不明白为什么声明的变量是不一样的。 ex代码: 现在这产生了一个布尔值,我以为它是真的,但它不是,它是假的,我不明白为什么。 有人能解释一下吗?

  • 问题内容: 是否有任何理由为什么Java的布尔只需要或者为什么不和也? 问题答案: Java与C和C ++之类的语言不同,Java将其视为完全独立的数据类型,它具有两个不同的值:true和false。值1和0为int类型,不能隐式转换为。