前面说的是正确的。String内部是char[]实现的,长度看你赋什么值了
解决方案 »
- JTable中remove(r)与fireTableRowsDeleted(r, r)区别?
- 求解一道java程序题,估计不是很难。。。不过对我就。。。。
- 求助这样一个JComboBox!!
- 关于inputstream在socket连接异常结束的时候的问题
- 求助!急!用JNI调用VC获取的磁盘信息!
- 有难度的问题(也许):点击jpanel里的区域,如何判断点击到了什么组件?
- 数据结构????
- Dialog弹出问题II
- 奇怪问题(急!)
- 那位大侠知道java编程指南(1.4)的电子书籍下载地址啊??????
- 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肯定有限制,不然就完了