首页 > 试题广场 >

以下代码的输出的正确结果是public class T...

[单选题]
以下代码的输出的正确结果是
public class Test {
    public static void main(String args[]) {
        String s = "祝你考出好成绩!";
        System.out.println(s.length());
    }
}



  • 24
  • 16
  • 15
  • 8
java的String底层是char数组,它的length()返回数组大小,而unicode中一个汉字是可以用一个char表示的
发表于 2019-08-26 15:44:57 回复(13)
一个汉字等于一个字符   字符 是char 
一个汉字也等于二个字节,字节 是byte
发表于 2019-08-26 09:57:45 回复(5)
发表于 2020-07-22 14:24:15 回复(0)
public static void main(String[] args) {
        String s = "祝你考出好成绩!";
        System.out.println(s.length());
        char[] arr = s.toCharArray();
        System.out.println(arr.length);
        for (char a : arr){
            System.out.print(a+",");
        }
    }
结果:
8
8
祝,你,考,出,好,成,绩,!,
发表于 2019-08-20 21:30:39 回复(0)
  1. 在JDK9之前
    String底层使用的是CharArray来存储的,Java中一个char占用2Byte。

  2. 在JDK9以后
    String底层改用了ByteArray来做底层存储,每个元素只占一Byte,就避免了在常规字符存储上的空间浪费。

  3. 问题:如何计算字符串长度?
    在新的String底层,使用了latin和utf16两个编码器来区分拉丁字符与非拉丁字符(比如汉字)。

    在String底层通过编码器的不同,对非拉丁字符串的ArrayLength做了一个除以2的位运算,对于拉丁字符串,直接取ArrayLength就是字符串的长度。
  4. 因此该题输出的结果在不同JDK版本下都是8
编辑于 2022-02-24 23:26:42 回复(0)
大家仔细审题,这只是在问字符串s的长度,有人寻思空格算不算一个,抱歉,没有9这个选项哈哈
发表于 2020-02-10 22:18:12 回复(5)
字符char长度,不是字节长度
发表于 2020-11-21 09:32:11 回复(0)
不会小学数学的来找我,我给你补一下
发表于 2019-08-21 21:50:48 回复(1)
String的 lengt() 方法在String.class中是这样的
public int length() {
    return value.length;
}
这里的value又是一个char类型的数组
private final char value[];
所以,length() 方法返回的就是这个 char 类型数组的长度


发表于 2020-12-14 20:19:03 回复(0)
String类底层维护着一个private final char value[] 数组,字符串每单个字符是一个数组元素。单个汉字可以装进单个char型数组元素中。length()表示返回这个底层的数组长度。
发表于 2023-03-21 21:23:47 回复(0)
String的底层是char数组;char 是
s.length 是代表了数char 的个数
发表于 2021-04-12 17:58:34 回复(0)
有没有hxd跟我一样,被中文感叹号给坑了,那后面并不是空格,
没有9这个选项,然后我就猜是不是汉字占两个,数了一哈刚好等于16😂
发表于 2020-10-11 19:30:35 回复(0)
做过开发的人在调试时肯定都会输出过字符串的长度,搭眼一看,长度是8没跑了,只要会查数,,,没得问题
发表于 2022-06-18 09:01:02 回复(0)
发表于 2021-08-11 19:59:19 回复(0)
Java中String的length() 返回数组的长度。一个字符(无论中文字符还是英文字符都一样)用一个char[] 存储。所以length() = 8.
发表于 2020-08-14 08:53:47 回复(0)

不应该9个吗,还有个空格

发表于 2019-10-12 18:29:28 回复(2)
java中的char占2字节,一个汉字占2字节,所以是8
发表于 2022-06-25 06:25:00 回复(0)
jdk1.8string底层是char[]数组,一个中文对应一个字符;jdk1.9string底层变成了byte[]数组,一个中文对应2个byte,长度是15。这里默认应该是1.8.
发表于 2021-07-15 17:57:34 回复(0)
这里是java,不要被C语言给误导了
发表于 2023-10-24 18:13:01 回复(0)
Java的string底层是charArray,用char存储,一个汉字俩字节正好一个char,length()返回字符长度也就是有几个char,有几个汉字就有几个char,所以就是8
发表于 2023-06-07 14:40:56 回复(0)