Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我';当我尝试添加拆分的字符串时,我得到一个空字符串?_Java_String_Split - Fatal编程技术网

Java 为什么我';当我尝试添加拆分的字符串时,我得到一个空字符串?

Java 为什么我';当我尝试添加拆分的字符串时,我得到一个空字符串?,java,string,split,Java,String,Split,我已经拆分了一个字符串,从收到的字符串中,我正在尝试生成一个单词,一切都很好,但是每次我在第一个索引中得到null字符串,为什么 这是我的密码: String assetClasses = "Gold:Stocks:Fixed Income:Commodity:Interest Rates"; String[] splits = assetClasses.toString().split(":"); //System.out.println("splits.size:

我已经拆分了一个字符串,从收到的字符串中,我正在尝试生成一个单词,一切都很好,但是每次我在第一个
索引中得到
null
字符串,为什么

这是我的密码:

    String assetClasses = "Gold:Stocks:Fixed Income:Commodity:Interest Rates";
    String[] splits = assetClasses.toString().split(":");

    //System.out.println("splits.size: " + splits.length);
    String ab = null;
for(int i=0; i<splits.length;i++){
    System.out.println(splits[i]);
    ab+=splits[i];
}
System.out.println(ab);
String assetClasses=“黄金:股票:固定收益:商品:利率”;
String[]splits=assetClasses.toString().split(“:”);
//System.out.println(“splits.size:+splits.length”);
字符串ab=null;

对于(int i=0;i将
String ab=null;
更改为
String ab=“”;


作为补充,请参见了解使用
字符串ab=null;

字符串ab=null;
更改为
字符串ab=“”;


作为补充,请参阅了解使用
String ab=null;

时发生的情况-String是不可变的,因此在执行此方法时会创建大量不必要的对象。请改用可变StringBuilder:

    String assetClasses = "Gold:Stocks:Fixed Income:Commodity:Interest Rates";
    String[] splits = assetClasses.split(":");

    StringBuilder ab = new StringBuilder();
    for (int i = 0; i < splits.length; i++) {
        System.out.println(splits[i]);
        ab.append(splits[i]);
    }
    System.out.println(ab.toString());
String assetClasses=“黄金:股票:固定收益:商品:利率”;
字符串[]splits=assetClasses.split(“:”);
StringBuilder ab=新的StringBuilder();
对于(int i=0;i
另外-字符串是不可变的,因此您在执行此方法期间创建了大量不必要的对象。请改用可变StringBuilder:

    String assetClasses = "Gold:Stocks:Fixed Income:Commodity:Interest Rates";
    String[] splits = assetClasses.split(":");

    StringBuilder ab = new StringBuilder();
    for (int i = 0; i < splits.length; i++) {
        System.out.println(splits[i]);
        ab.append(splits[i]);
    }
    System.out.println(ab.toString());
String assetClasses=“黄金:股票:固定收益:商品:利率”;
字符串[]splits=assetClasses.split(“:”);
StringBuilder ab=新的StringBuilder();
对于(int i=0;i
让我强调一下刚才所说的。字符串在java中是不可变的。这意味着每次你说
ab+=splits[i];
你都在创建一个新字符串。这是一个非常缓慢和低效的过程

相反,你可以

String assetClasses = "Gold:Stocks:Fixed Income:Commodity:Interest Rates";
String[] splits = assetClasses.toString().split(":");

//System.out.println("splits.size: " + splits.length);
StringBuilder ab = new StringBuilder();
for(int i=0; i<splits.length;i++){
    System.out.println(splits[i]);
    ab.append(splits[i]);
}
System.out.println(ab.toString());
String assetClasses=“黄金:股票:固定收益:商品:利率”;
String[]splits=assetClasses.toString().split(“:”);
//System.out.println(“splits.size:+splits.length”);
StringBuilder ab=新的StringBuilder();
对于(int i=0;i让我强调一下。字符串在java中是不可变的。这意味着每次你说
ab+=splits[i];
你都在创建一个新字符串。这是一个非常缓慢和低效的过程

相反,你可以

String assetClasses = "Gold:Stocks:Fixed Income:Commodity:Interest Rates";
String[] splits = assetClasses.toString().split(":");

//System.out.println("splits.size: " + splits.length);
StringBuilder ab = new StringBuilder();
for(int i=0; i<splits.length;i++){
    System.out.println(splits[i]);
    ab.append(splits[i]);
}
System.out.println(ab.toString());
String assetClasses=“黄金:股票:固定收益:商品:利率”;
String[]splits=assetClasses.toString().split(“:”);
//System.out.println(“splits.size:+splits.length”);
StringBuilder ab=新的StringBuilder();

对于(int i=0;i它给出null,因为在java的String类中,下面是String类的valueOf api的实现

public static String valueOf(Object obj) {
        return (obj == null) ? "null" : obj.toString();
}

它给出null,因为在java的String类中,下面是String类的valueOf api的实现

public static String valueOf(Object obj) {
        return (obj == null) ? "null" : obj.toString();
}

为什么要对字符串调用
toString()
?因为我希望字符串是唯一的代码,这是我正在动态谈论的日期,以便将其放入sqlite db中进行某些操作可能它为null,因为您将其设置为null?是的,谢谢,我得到了answer@Hell调用
toString()
对字符串的引用并不是唯一的,它只会返回一个对已有字符串的引用。这实际上是一个浪费的方法调用-只需使用已有的引用即可。为什么要调用
toString()
在字符串上?因为我希望字符串是唯一的代码,这是我正在动态谈论的日期,以便将其放入sqlite db中进行某些操作可能它为null,因为您将其设置为null?是的,谢谢,我得到了answer@Hell调用
toString()
对字符串的引用并不使其唯一,它只会返回一个对已拥有的字符串的引用。这实际上是一个浪费的方法调用-只需使用已拥有的引用即可。@Hell:作为一个小提示,尽管上面的方法会起作用,但在连接字符串时,建议您使用
StringBuilder
。哦,谢谢对我有效,我只需要将datestring设置为一个,将其作为唯一id放入我的database@Hell:作为一个次要注意事项,尽管上面的方法可行,但在连接字符串时,建议您使用
StringBuilder
。哦,感谢这对我有用,我只需要将datestring作为唯一id放入数据库中