我有以下几行代码来比较String。str1不等于str2,这是可以理解的,因为它比较对象引用。但是,为什么s1等于s2?
String s1 = "abc";
String s2 = "abc";
String str1 = new String("abc");
String str2 = new String("abc");
if (s1==s2)
System.out.println("s1==s2");
else
System.out.println("s1!=s2");
if (str1==str2)
System.out.println("str1==str2");
else
System.out.println("str1!=str2");
if (s1==str1)
System.out.println("str1==s1");
else
System.out.println("str1!=s1");
输出:
s1==s2
str1!=str2
str1!=s1
问题内容: 如前所述,==运算符比较对象引用以检查它们是否引用堆上的同一对象。如果是这样,为什么我得到这段代码的“等于”? 问题答案: 程序将打印。(至少使用Sun Hotspot和suns Javac。)此处在http://ideone.com/8UrRrk上进行了演示。 这是因为该字符串字面常量存储在一个事实 串池 和字符串的引用 可以 被重复使用。 进一步阅读: 什么是字符串文字池? 字符串
我在大学的一门Java课程中被告知,我永远不应该将Java字符串与运算符进行比较,因为它检查两个字符串是否是同一个对象,而不是检查它们是否具有相同的字符。 但是,在考试当天,呈现给我的是以下代码: 我以为结果会“不一样”,因为和不是同一个对象。
问题内容: 在Java中比较两个字符串最快的方法是什么? 有没有比平等更快的东西? 编辑:我不能帮助澄清问题。 我有两个按字母顺序排列且大小完全相同的字符串 示例:abbcee和abcdee 字符串最长为30个字符 问题答案: 我不认为 Sun Oracle还没有最大程度地优化标准。因此,我希望它已经是最快的方法。如果您想了解他们如何实现它,请看一下它的源代码。这是摘录:
问题内容: 给我输出: 我不太了解第一行,为什么它会给我带来错误? 如果我在字符串2上添加空格,则此行为false,但如果不添加空格,则为true: 为什么第1行给我假,但第6行为真,但是如果我在string2上添加空格则为假。 谢谢=) 问题答案: 那里发生了几件事。 当您将两个字符串声明为相等的“ Hi”时,java将对其进行优化以引用相同的字符串对象(因此不必将相同的字符串存储两次)。 “
问题内容: “按字典顺序比较两个字符串”是什么意思? 问题答案: 从@Bozho和@aioobe的答案出发,字典比较类似于在字典中可能会发现的顺序。 Java String类提供了该方法以便按字典顺序比较String。这样使用。 此方法的返回int值可以解释如下: 返回<0,则调用该方法的String按字典顺序排在首位(在字典中排在首位) 返回== 0,则这两个字符串在字典上等效 返回> 0,然后
主要内容:equals() 方法,equalsIgnoreCase() 方法,equals()与==的比较,compareTo() 方法字符串比较是常见的操作,包括比较相等、比较大小、比较前缀和后缀串等。 在 Java 中,比较字符串的常用方法有 3 个:equals() 方法、equalsIgnoreCase() 方法、 compareTo() 方法。下面详细介绍这 3 个方法的使用。 equals() 方法 equals() 方法将逐个地比较两个字符串的每个字符是否相同。如果两个字符串具有相