代码之家  ›  专栏  ›  技术社区  ›  maya

为什么我不能在新字符串中添加字符?

  •  0
  • maya  · 技术社区  · 3 年前

    代码:

    String st = "abc";
    String sl = st.charAt(0)+st.charAt(st.length()-1)); 
    

    第二行因为某种原因是错的,我不知道为什么

    3 回复  |  直到 3 年前
        1
  •  3
  •   Louis Wasserman    3 年前

    这本书是错的,Eclipse是对的。

    在Java中,您可以编写 "abc" + whatever whatever + "abc" ,并将字符串连接起来,因为其中一侧是 String .

    但是在 st.charAt(0)+st.charAt(st.length()-1)) ,双方都不是 一串 char s、 所以Java不会给你一个 一串 返回

    相反,Java实际上会在技术上为您提供 int .以下是Java语言规范中的细节,它准确地描述了Java的工作原理:

    1. JLS 4.2 指定 烧焦 被认为是 数字类型。
    2. JLS 15.18.2 具体说明什么 + 对数值类型的值不执行。
    3. 特别是,它指定对它们所做的第一件事是二进制数字升级,它将两者转换 烧焦 s to 智力 通过 JLS 5.6.2 .然后将它们相加,结果仍然是 智力 .

    为了得到你想要的 希望 可能最简单的解决方案就是写

    String sl = st.charAt(0) + "" + st.charAt(st.length() - 1)); 
    
        2
  •  0
  •   obeid salem    3 年前

    因为charAt返回char[int]

    使用以下代码:

    String st = "abc";
    StringBuilder str = new StringBuilder();
    str.append(st.charAt(0));
    str.append(st.charAt(st.length() - 1));
    System.out.println(str.toString());
    

    append方法接受字符或字符串。。

        3
  •  0
  •   Daniel Archuleta    3 年前

    它是这么说的:“-类型不匹配:无法从int转换为String”

    这正是@Jaime所说的。如果我没记错的话,字符在技术上是由一个整数值表示的。(即a+1='b')。所以你要添加两个char值,这和将两个字符串添加在一起,甚至连两个char值都不一样。一个解决办法是使用 String.valueOf(st.charAt(0)) + String.valueOf(st.charAt(st.length()-1))) 连接两个字符值。