相关疑难解决方法(0)

字符串连接:concat()vs"+"运算符

假设字符串a和b:

a += b
a = a.concat(b)
Run Code Online (Sandbox Code Playgroud)

引擎盖下,它们是一样的吗?

这里以concat反编译为参考.我希望能够反编译+运算符以查看它的作用.

public String concat(String s) {

    int i = s.length();
    if (i == 0) {
        return this;
    }
    else {
        char ac[] = new char[count + i];
        getChars(0, count, ac, 0);
        s.getChars(0, i, ac, count);
        return new String(0, count + i, ac);
    }
}
Run Code Online (Sandbox Code Playgroud)

java string concatenation

476
推荐指数
8
解决办法
91万
查看次数

连接运算符(+)与concat()

对于字符串连接,我们可以使用concat()或concat运算符(+).

我尝试了以下性能测试,发现concat()字符串连接速度更快,内存效率更高.

字符串连接比较100,000次:

String str = null;

//------------Using Concatenation operator-------------
long time1 = System.currentTimeMillis();
long freeMemory1 = Runtime.getRuntime().freeMemory();

for(int i=0; i<100000; i++){
    str = "Hi";
    str = str+" Bye";
}
long time2 = System.currentTimeMillis();
long freeMemory2 = Runtime.getRuntime().freeMemory();

long timetaken1 = time2-time1;
long memoryTaken1 = freeMemory1 - freeMemory2;
System.out.println("Concat operator  :" + "Time taken =" + timetaken1 +
                   " Memory Consumed =" + memoryTaken1);

//------------Using Concat method-------------
long time3 = System.currentTimeMillis();
long freeMemory3 …
Run Code Online (Sandbox Code Playgroud)

java string-concatenation

27
推荐指数
3
解决办法
4万
查看次数

String concatenation使用concat运算符(+)或String.format()方法

哪一个更适合串联连接

如果我想从一串字符串变量(如str1和str2)构建一个字符串,哪一个会更好一个?

  1. String Concat运算符

String str="This the String1 " + str1 + " merged with Sting2 " + str2;

  1. 字符串格式方法

String str=String.format("This the String1 %s merged with Sting2 %s", str1 , str2);

我认为第二个会更好,因为第一个会受到很多字符串创建的影响.

如果我错了,请纠正我?并提供相同的反馈

java concat string-concatenation string-formatting

7
推荐指数
1
解决办法
1万
查看次数

带有charAt()方法的String上的Java + =运算符导致char加法

我正在解决Codingbat.com上的问题,并且碰到了这样一个事实:对于+=运营商来说,a += b并不一定完全等于a = a + b.这是众所周知的,已经让之前讨论过,但我使用的时候碰到了一些奇怪的事情发生charAt()上述语法,我不能做的意义相结合的方法.

说我有两个变量:

String str    = "The";
String result = "";
Run Code Online (Sandbox Code Playgroud)

我想将"str"中的第一个字母添加两次到"结果".一种方法是:

result = result + str.charAt(0) + str.charAt(0);
Run Code Online (Sandbox Code Playgroud)

结果result = "TT".

但是,如果我使用+=运算符,例如:

result += str.charAt(0) + str.charAt(0);
Run Code Online (Sandbox Code Playgroud)

我得到result = "168".很明显,字符添加已经发生('T'的ASCII代码是84,84*2 = 168).

我想知道在使用+=运算符的第一种情况下实际发生了什么.根据关于赋值运算符文档:E1 op= E2相当于E1 = (T)((E1) op (E2)).所以我希望后一个表达式输出"168"就像使用+=运算符一样.但以下输出"TT"正确,而不是"168":

result = (String)(result …
Run Code Online (Sandbox Code Playgroud)

java string operators charat

4
推荐指数
2
解决办法
9810
查看次数

Java - for循环内部和外部的访问变量

String playerlist;

for(Player p : allplayers){
    playerlist += p.getDisplayName() + ", ";
}

sendMessage(playerlist);
Run Code Online (Sandbox Code Playgroud)

我怎么能做到这一点?我需要在for-loop中有一个变量,然后在循环外部访问它.

谢谢,对不起,如果这是一个非常愚蠢的问题.我只是想不出来.

java variables loops for-loop

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