Java中的长字符串拼接问题?

3

当我尝试在Java中连接字符串时,代码如下:

COsavedform = vtd + "," + stricode + "," + striname+ "," 
            + striqty + "," + strirate + "," + striamt;

每个包含某个字符串值的变量都会返回COsavedform的正确值,但是当我在同一COsavedform中添加更多内容时...
COsavedform = vtd+","+ccode.getText()+","+striqty 
            + "," + strirate + "," + striamt+","+mode+",Customer";

mode是一个字符串变量。它只返回COsavedform=","+mode+",Customer",而不是全部内容。

        System.out.println("striname:"+striname);
        System.out.println("stricode:"+stricode);
        System.out.println("striqty:"+striqty);
        System.out.println("strirate:"+strirate);
        System.out.println("striamt"+striamt);
        System.out.println("ccode"+ccode.getText());
        System.out.println("mode"+mode);
                String Csavedform = vtd + "," + stricode + "," + striname+ "," + striqty + "," + strirate + "," + striamt;
                System.out.println("CSaved::"+Csavedform);
                //System.out.println("COSaved::"+COsavedform);
                String Isavedform = vtd+","+ccode.getText()+","+striqty+","+strirate+","+striamt+","+mode+",Customer";
                System.out.println("Item savedforitem::"+Isavedform);
                ```
Output Generated::
vdt:31/12/2019
striname:Kazu
stricode:kazu
striqty:1.0
strirate:1000.0
striamt1000.0
ccode0001
modePending
CSaved::31/12/2019,kazu,Kazu,1.0,1000.0,1000.0
,Pending,Customer



Output Expected::
vdt:31/12/2019
striname:Kazu
stricode:kazu
striqty:1.0
strirate:1000.0
striamt1000.0
ccode0001
modePending
CSaved::31/12/2019,kazu,Kazu,1.0,1000.0,1000.0
Item savedforitem::31/12/2019,0001,1.0,1000.0,1000.0,Pending,Customer

1
由于问题描述不够清晰,很难理解。请提供一些样本数据,包括您当前的输出结果和期望得到的输出结果。 - Mureinik
1
你的第二个例子中在Customer前面有一个" +,这是打字错误吗? - azro
StringBuilder更易读,且出错率更低。尝试使用StringBuilder转换此连接。 - RUARO Thibault
我已经更新了生成的输出和期望的输出。 - Suthar
2个回答

5

您可以使用+=

COsavedform += vtd+","+ccode.getText()+","+striqty + "," + strirate + "," + striamt+","+mode+",Customer";

但最好使用 StringBuilder

StringBuilder stringBuilder = new StringBuilder();
    stringBuilder.append("str1").append("str2")... 
    COsavedform  = stringBuilder.toString();

因为这对于内存更加优化。


1

使用concat()方法

Java的string concat()方法可以将多个字符串连接在一起。该方法将指定的字符串附加到给定字符串的末尾,并返回组合后的字符串。我们可以使用concat()方法来连接多个字符串。

在评论后编辑的答案

有4种方法可用于Java中的字符串连接:

连接运算符(+) StringBuffer类 StringBuilder类 String.concat()函数

使用+运算符进行连接

String stringA= "Stack"; 
String stringB = "overflow"; 

String result = stringA + "," + stringB; 
System.out.println(result);


通过使用StringBuilder
StringBuilder result  = new StringBuilder();
 result.append(stringA).append(",").append(stringB); 
 System.out.println(result.toString());

通过使用StringBuffer
StringBuffer result = new StringBuffer(); 
sBuffer.append(stringA).append(",").append(stringB); 
System.out.println(result.toString());

我尝试了,但是它不像上面提到的代码返回那样工作。 - Suthar
我已经再次编辑了答案,请尽量理解。 - Dulaj Kulathunga

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接