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放入数据库中