JAVA中的String类--String的最大长度
2016-01-11 21:16
106 查看
首先给出结论:
String在内存中的最大长度理论上是int型变量的最大值,
String的字面常量的最大长度为CONSTANT_Utf8_info表决定,一般为65535.
1、String的内部实现
通过一个字符数组来维护字符序列,其声名如下:
所以,String的最大长度取决于字符数组的最大长度,因为字符数组长度只能是byte,char,short,int而不能是long型,所以这也说明最大长度,另一方面,我们知道String类有一个方法,
所以这也说明了最大长度的理论值,但在实际中,要比理论值小,
这个错误是内存溢出错误,所以系统无法分配这么大的内存空间。
现在的问题是,计算机系统可以分配多大的内存呢?
这其实和很多硬件相关的因素有关,下面通过程序来测试最大的内存空间。
String在内存中的最大长度理论上是int型变量的最大值,
Integer.MAX_VALUE,
String的字面常量的最大长度为CONSTANT_Utf8_info表决定,一般为65535.
1、String的内部实现
通过一个字符数组来维护字符序列,其声名如下:
private final char value[];
所以,String的最大长度取决于字符数组的最大长度,因为字符数组长度只能是byte,char,short,int而不能是long型,所以这也说明最大长度,另一方面,我们知道String类有一个方法,
str.length()它的返回值是int型变量,声明如下:
public int length()
所以这也说明了最大长度的理论值,但在实际中,要比理论值小,
public class mainClass { public static void main(String[] args) { // TODO Auto-generated method stub char[] value=new char[Integer.MAX_VALUE]; System.out.println(""); } }
这个错误是内存溢出错误,所以系统无法分配这么大的内存空间。
现在的问题是,计算机系统可以分配多大的内存呢?
这其实和很多硬件相关的因素有关,下面通过程序来测试最大的内存空间。
这里写代码片
相关文章推荐
- Spring 4 MVC 单元测试例子
- Spring MVC + Mybatis + Shiro
- Java异常机制
- spring+mybaits多数据源使用
- spring+mybaits多数据源使用
- spring+mybaits多数据源使用
- java web用户频繁非正常登出系统(session丢失)的原因分析及解决思路
- 【JDK源码分析】String的存储区与不可变性(转)
- 004_在Eclipse环境下搭建Android开发平台(离线搭建)
- Java IO的RandomAccessFile的使用(转)
- java代码中一些要注意的语法应用
- Java Web系列:Spring Boot 基础
- 线程基础:线程(3)——JAVA中的基本线程操作(中)
- Java高效读取大文件(转)
- Spring JdbcTemplate 的使用与学习(转)
- eclipse使用全解
- (2-4)HDFS的Java接口,上传,下载,创建文件,删除文件
- Struts2的Convention插件
- 使用Eclipse 4.5 + Maven 3 打包Scala/Spark项目
- Java NIO使用及原理分析