加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 字符串的组合形成一个字符串给出不同的结果

发布时间:2020-12-14 14:26:32 所属栏目:Java 来源:网络整理
导读:为什么当我使用下面的操作来总结字符时,它会返回数字而不是字符?不应该给出相同的结果吗? ret += ... ; // returns numbersret = ret + ...; // returns chars 下面的代码重复了这些字符: doubleChar(“The”)→“TThhee” public String doubleChar(Stri
为什么当我使用下面的操作来总结字符时,它会返回数字而不是字符?不应该给出相同的结果吗?
ret += ... ; // returns numbers

ret = ret + ...; // returns chars

下面的代码重复了这些字符:

doubleChar(“The”)→“TThhee”

public String doubleChar(String str) {

    String ret = "";
    for(int i = 0; i < str.length(); i++) {
        ret = ret + str.charAt(i) + str.charAt(i); // it concatenates the letters correctly
        //ret += str.charAt(i) + str.charAt(i); // it concatenates numbers
    }
    return ret;
}

解决方法

以下表达式的结果
ret + str.charAt(i) + str.charAt(i);

是String连接的结果. The Java language specification states

The result of string concatenation is a reference to a String object
that is the concatenation of the two operand strings. The characters
of the left-hand operand precede the characters of the right-hand
operand in the newly created string.

的结果

str.charAt(i) + str.charAt(i);

是加法运算符应用于两种数值类型的结果. The Java language specification states

The binary + operator performs addition when applied to two operands
of numeric type,producing the sum of the operands.
[…]
The type of an additive expression on numeric operands is the promoted
type of its operands.

在这种情况下

str.charAt(i) + str.charAt(i);

成为一个保持两个char值的和的int.然后连接到ret.

您可能还想知道关于复合赋值表达式=的信息

A compound assignment expression of the form E1 op= E2 is equivalent
to E1 = (T) ((E1) op (E2)),where T is the type of E1,except that E1
is evaluated only once.

换一种说法

ret += str.charAt(i) + str.charAt(i);

相当于

ret = (String) ((ret) + (str.charAt(i) + str.charAt(i)));
                      |                ^ integer addition
                      |
                      ^ string concatenation

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读