前面说的是正确的。String内部是char[]实现的,长度看你赋什么值了

解决方案 »

  1.   

    理论上应该只受jvm可用内存限制
      

  2.   

    String占多少位不一定啊!你创建的字符串越长就越大啊!String是一个类,就像我们自己创建一个类,如果只有一个int类型字段这个对象就占4个字节,如果还包含一个short类型字段创建这个对象就占6个字节!
      

  3.   

    我也觉得,你看看这个http://bbs.9ria.com/thread-47035-1-1.html
      

  4.   


    1,int 是32位,char 是16位。int ==>char时,取int的最低的16位。
    2,String长度理论上最大是2^31 个字符。约4GB(一个char是2个字节)。
      

  5.   


    1,int 是32位,char 是16位。int ==>char时,取int的最低的16位。
    2,String长度理论上最大是2^31 个字符。约4GB(一个char是2个字节)。
    为什么是2的31的次方呢,麻烦解答一下,谢谢啦
      

  6.   

    为什么是2的31的次方呢,麻烦解答一下,谢谢啦?
    答:因为int 是32位,而int 本身是有符号的,即:数值范围是 -(2^31)  ~   +(2^31 -1 )。 字符串下标是从0开始编号到最大 2^31 -1  ,,一共有2^31个字符。
      

  7.   

    如果使用 Sting str = "aaaa";的形式定义一个字,那么双引号里面的ASCII 字符最多只能有 65534 个。为什么呢?因为在class
    文件的规范中, CONSTANT_Utf8_info 表中使用一个16 位的无符号整数来记录字的长度的,最多能表示 65536 个字节,而java class 文件是使用一种变体UTF-8来存放字符的,null 值使用两个字节来表示,因此只剩下 65536- 2 = 65534字节。也正是变体UTF-8 的原因,如果字符串中含有中文等非ASCII 字符,那么引号中字符的数量会更少(一个中文字符占用三个字节)。如果超出这个数量,在的时候编译器会报错。
      

  8.   

    String 是一个类,类有长度吗?
      

  9.   


    这个只是 字符串字面量 定义时的长度。不是字符串类中所能表示的字符串的长度。
    以下就是一个200M的大字符串:char[] ch1=new char[200*1024*1024];
     String s=new String(ch1);
     System.out.println("200M的大字符串:"+s.length());
      

  10.   


    不一定是截取后16位,这个和处理器的大小端有关系。
    new 出来的String长度最长是2147483647,也就是Integer.MAX_VALUE.
    如果是"abc",这种创建,最大长度是65534。这跟常量池里面设置的大小有关。
    CONSTANT_Utf8_info {
            u1 tag;
            u2 length;
            u1 bytes[length];
    }
      

  11.   


    不一定是截取后16位,这个和处理器的大小端有关系。
    new 出来的String长度最长是2147483647,也就是Integer.MAX_VALUE.
    如果是"abc",这种创建,最大长度是65534。这跟常量池里面设置的大小有关。CONSTANT_Utf8_info {
            u1 tag;
            u2 length;
            u1 bytes[length];
    }
    和处理器有啥关系,难道java跑在不同次处理器上运行结果会不一样么?还有String的长度,意思是new出来的底层是char,从0-integer.Max_Value,如果直接String s='abc',常量池的大小最大是65534?,CONSTANT_Utf8_info方便解释一下吗,新人不懂
      

  12.   


    1,int 是32位,char 是16位。int ==>char时,取int的最低的16位。
    2,String长度理论上最大是2^31 个字符。约4GB(一个char是2个字节)。
    jvm肯定有限制,不然就完了
      

  13.   

    char是基本数据类型,而String是引用数据类型。没有可比性吧。
      

  14.   

    其实完全没必要讨论String的长度,可能你自己都不会遇到那么长的字符,不过要是字符串会经常改变,倒是可以考虑使用一下StringBuffer.会节约一些性能损失