前面说的是正确的。String内部是char[]实现的,长度看你赋什么值了
解决方案 »
- java中删除cookie后设置的session取不到值
- 吐血了,再问最后一遍了!!!
- 数组问题
- 求《Visual C++精彩实例详解》光盘
- 菜鸟问题一个:怎么把做好的Java程序做成exe并在其他没装jdk的电脑上运行呢?
- 求助,我的双色球,程序,怎么让选出的数字一个一个的出现(怎么用线程)
- 百分请问用HTTP与服务器端的通信问题
- 急问,为什么我的javascript在ie中能调用applet方法,但是到了netscape中就不行了呢?
- 怎样搜索本地html文件里的附属文件,如图片,flash等?
- javaSwing 中的JTable如何实现单元格合并(特急)
- memcache缓存,不知为何命中率极低? 请教下
- 大侠请指教,Java中如何实现类似于C语言中的宏结构
1,int 是32位,char 是16位。int ==>char时,取int的最低的16位。
2,String长度理论上最大是2^31 个字符。约4GB(一个char是2个字节)。
1,int 是32位,char 是16位。int ==>char时,取int的最低的16位。
2,String长度理论上最大是2^31 个字符。约4GB(一个char是2个字节)。
为什么是2的31的次方呢,麻烦解答一下,谢谢啦
答:因为int 是32位,而int 本身是有符号的,即:数值范围是 -(2^31) ~ +(2^31 -1 )。 字符串下标是从0开始编号到最大 2^31 -1 ,,一共有2^31个字符。
文件的规范中, CONSTANT_Utf8_info 表中使用一个16 位的无符号整数来记录字的长度的,最多能表示 65536 个字节,而java class 文件是使用一种变体UTF-8来存放字符的,null 值使用两个字节来表示,因此只剩下 65536- 2 = 65534字节。也正是变体UTF-8 的原因,如果字符串中含有中文等非ASCII 字符,那么引号中字符的数量会更少(一个中文字符占用三个字节)。如果超出这个数量,在的时候编译器会报错。
这个只是 字符串字面量 定义时的长度。不是字符串类中所能表示的字符串的长度。
以下就是一个200M的大字符串:char[] ch1=new char[200*1024*1024];
String s=new String(ch1);
System.out.println("200M的大字符串:"+s.length());
不一定是截取后16位,这个和处理器的大小端有关系。
new 出来的String长度最长是2147483647,也就是Integer.MAX_VALUE.
如果是"abc",这种创建,最大长度是65534。这跟常量池里面设置的大小有关。
CONSTANT_Utf8_info {
u1 tag;
u2 length;
u1 bytes[length];
}
不一定是截取后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方便解释一下吗,新人不懂
1,int 是32位,char 是16位。int ==>char时,取int的最低的16位。
2,String长度理论上最大是2^31 个字符。约4GB(一个char是2个字节)。
jvm肯定有限制,不然就完了