最大的 String 字符长度是多少?
String 类可以说是在 Java 中使用最频繁的类了,就算是刚刚接触 Java 的初学者也不会陌生,因为对于 Java 程序来说,main 方法就是使用一个 String 类型数组来作为参数的(String[] args)。对于这样一个频繁使用的类,String 字符串可以有多长呢?十万字符?一百万字符?还是无限的呢?

要弄清楚 String 的最大长度,首先应该了解 String 类的内部实现。在 String 类中,是使用一个字符数组来维护字符序列的,其声明如下:

private final char value[];

这也就是说,String 的最大长度取决于字符数组的最大长度,我们知道,在指定数组长度的时候,可以使用 byte、short、char、int 类型,而不能够使用 long 类型。这也就是说,数组的最大长度就是 int 类型的最大值,即 0x7fffffff,十进制就是 2147483647,同理,这也就是 String 所能容纳的最大字符数量。

而且,我们来看下 java.lang.String.length() 源码:

public int length() {return value.length;
}

可以看出获得 String 对象长度的 length 方法返回值是 int 类型的,而不是 long 类型的,也是因为这个原因

一个 char 类型占用 2 字节,2147483647 个 char 类型就是 4294967294 字节,这接近于 4GB 大小,想要申请这么一大块连续的内存空间,失败也就不足为奇了。

总结:
在 String 类内部,是使用一个字符数组(char[])来维护字符序列的。
String 的最大长度也就是字符数组的最大长度,编译时最大长度为 int 类型的最大值,即 2147483647。
运行时则接近4个G
实际中,一般可获取的最大值小于理论最大值,在我的电脑上得出的最大值是 2 ^ 31 - 3,大家可以在自己的电脑上测试下。

string的取值范围相关推荐

  1. Mybatis,#{}和${}取值符号

    如图,两个方法的参数类型为简单类型,简单类型包括8大基本类型和String 1. #{}取值符号会自动为String类型的参数加上''单引号 2. ${}取值符号不会自动为String加上''单引号 ...

  2. ROS服务中存在string类型变量,如何给string类型变量赋值及取值

    首先,我们来看一下ROS中的服务如何定义的: string name --- string rename 我们这个服务目的为,客户端向服务端发送name字节,然后服务端回复客户端rename字节. 先 ...

  3. STL:string容器特性、定义、初始化、等号、取值、拼接、查找、替换、比较、字串、插入、删除

    一.string的特性 string和char*类型字符串的对比: char是一个指针,string是一个类,string封装了char,管理这个字符串,是一个char*型的容器. string封装了 ...

  4. Java中Map取值转String Null值处理

    Map<String, Object> 直接取值转String String value = (String)map.get("key") 当map.get(" ...

  5. C++ 获取内存地址(取值运算符)

    c++ 获取内存地址使用取值运算符 : & 下面看下& 的使用 #include <iostream> using namespace std; int main() {s ...

  6. python几种数据类型的取值方式

    今天我们主要来学习下python的几种数据类型的取值方式! 首先我们先来看下python的几种数据类型,python有五个标准的数据类型: number(数字) string(字符串) list(列表 ...

  7. GridView单元格取值显示为nbsp;

    在通过GridView取一个单元格(cell)的值时,数据库中为NULL,而页面上显示为空格.发现通过gridview.cell[i].text取出来的值为 ,导致获取数据出现问题. 解决方法: 一. ...

  8. GridView隐藏列取值解决方案

    [摘要] 在Asp.net 2.0中增加了一个新的数据绑定控件:GridView,其目的用来取代Asp.net1.x中的DataGrid控件,但有一点很不爽的是,如果把某列设置为visible=fal ...

  9. 关于PreferenceActivity的使用和一些问题的解决(自己定义Title和取值)

    android的Setting往往用PreferenceActivity来写的 我们在建立layout文件: <PreferenceScreen xmlns:android="http ...

  10. springMVC 返回类型选择 以及 SpringMVC中model,modelMap.request,session取值顺序

    spring mvc处理方法支持如下的返回方式:ModelAndView, Model, ModelMap, Map,View, String, void.下面将对具体的一一进行说明: ModelAn ...

最新文章

  1. Android提前加载unity程序,Unity项目嵌入Android App实现过程
  2. 百万人学AI:CSDN重磅共建人工智能技术新生态
  3. 这些建议需要竞赛组委会酌情考虑
  4. 005_Maven POM
  5. FM之NUMERIC_CHECK
  6. APACHE2 修改HTTPD.CONF 后启动错误
  7. Android中menu详解(转)
  8. STL中的空间配置器
  9. SAP CRM WebClient UI上以html格式显示note的问题讨论
  10. 前端性能优化之性能测试
  11. 云+X案例展 | 民生类:基于AWS PaaS构建基础集团企业级中台
  12. AndroidStudio安装教程(Windows环境下)
  13. 栈式降噪自编码器_栈式降噪自编码器( SdA)与深度信念网络(DBN)相比有什么特点优势,应用的范围是什么?...
  14. apk当安装程序将文件复制到手机自带的指定文件夹
  15. win11快捷键失效怎么处理 Windows快捷键失效的解决方法
  16. matlab按行读文件
  17. Redisson 配置
  18. 金融网络直播室软件的功能介绍
  19. VMware 12 许可密钥
  20. java filenet_为FileNet P8组件集成器开发Java组件

热门文章

  1. Python利用hadoop Streaming编写的Map-Reduce程序命令运行和本地调试运行
  2. Windows下主机名和IP映射设置
  3. 黄文俊:Serverless小程序后端技术分享 1
  4. Win10和win11有什么区别?想重装win10系统怎么操作?
  5. 怎么安装win10系统?Win10系统安装教程
  6. 经典游戏江湖医馆文字版
  7. 创新实训(6)——有关博客的摘要抽取的算法实现(TextRank)
  8. 高版本IE中弹出窗口不显示IE地址栏的解决方法
  9. mysql索引详细介绍简书_细说mysql索引
  10. XjhDemo 插入数据