相关疑难解决方法(0)

如何比较Java中的字符串?

==到目前为止,我一直在我的程序中使用运算符来比较我的所有字符串.但是,我遇到了一个错误,将其中一个更改为了.equals(),并修复了该错误.

==坏?什么时候应该不应该使用它?有什么不同?

java string equality

726
推荐指数
23
解决办法
376万
查看次数

我们何时应该在字符串文字上使用String的实习方法

根据String #intern(),intern如果在String池中找到String,则该方法应该从String池返回String,否则将在String池中添加新的字符串对象并返回此String的引用.

所以我试过这个:

String s1 = "Rakesh";
String s2 = "Rakesh";
String s3 = "Rakesh".intern();

if ( s1 == s2 ){
    System.out.println("s1 and s2 are same");  // 1.
}

if ( s1 == s3 ){
    System.out.println("s1 and s3 are same" );  // 2.
}
Run Code Online (Sandbox Code Playgroud)

我期待s1 and s3 are same将被打印为s3被实习,并且s1 and s2 are same不会被打印.但结果是:两行都打印出来.这意味着,默认情况下,字符串常量被实现.但如果是这样,那么为什么我们需要这种intern方法呢?换句话说,我们什么时候应该使用这种方法?

java string string-interning

184
推荐指数
5
解决办法
11万
查看次数

关于java String文字池和String的连接的混淆

所有,我在编写下面的代码时遇到了问题

String hello = "Hello";
String str5 = "Hel" + "lo";
String str8 = "Hel";
String str9 = "lo";
String str10 = str8 + str9;
System.out.println("str10==hello?" + (str10 == hello)); 
System.out.println("str5==hello?" + (str5 == hello));
System.out.println("str10==str5?" + (str10 == str5));
Run Code Online (Sandbox Code Playgroud)

然后我运行我的代码,控制台打印这个

str10 == hello ? false
str5 == hello ? true
str10 == str5 ? false
Run Code Online (Sandbox Code Playgroud)

这让我很困惑.为什么第二次打印TRUE但第一次打印FALSE?在我理解String文字池时,当一个字符串被定义并且JVM将检查池是否包含该字符串时,如果没有,则将该字符串放入池中.
在我的代码中,变量hello存在于字符串池中," Helo "和" lo "也存在于池中,我的问题是

  1. 如果池中存在" Helo "和" lo " 串联的结果.
  2. 关于str5和str10s的定义有什么区别,为什么它们不是"=="?str5和str10是否指向字符串池中的不同" Hello "?("=="似乎表示引用是同一个对象)

我的jdk版本:1.6.0_29
我的IDE:Intellij Idea 11.2

有人可以指出来吗?非常感谢你

java string

5
推荐指数
1
解决办法
1683
查看次数

将数组中字符串的值传递给java中的方法?

感谢您抽出时间来阅读.对不起,如果我的问题是愚蠢的,我尝试搜索,但无法弄清楚为什么我遇到这个问题.我试图为另一个应用程序测试一些代码,但我遇到了问题.也许我只是不理解数组.

我在名为Transpose的类中有一个名为halfStepUp的方法,出于测试目的,如果给出"c",则返回"c#",如果给出"d",则返回"d#".这是代码:

public class Transpose{
    public static String halfStepUp(String note){
        String n = null;
        if (note == "c") n = "c#";
        if (note == "d") n = "d"#;
        return n;
    }   
}
Run Code Online (Sandbox Code Playgroud)

我的main方法中有以下代码:

String [] scale = new String[2];
scale[0] = "c";
scale[1] = "d";

System.out.println(Transpose.halfStepUp(scale[0]));
Run Code Online (Sandbox Code Playgroud)

这打印"null".我究竟做错了什么?我知道该方法有效,因为如果我使用

System.out.println(Transpose.halfStepUp("c"));
Run Code Online (Sandbox Code Playgroud)

它工作正常.解决方案可能很容易,但在寻求帮助时我无法找到一个好的方法.再次感谢您的阅读,我们非常感谢您的回答!

java arrays string

2
推荐指数
1
解决办法
9713
查看次数

标签 统计

java ×4

string ×4

arrays ×1

equality ×1

string-interning ×1