关于JAVA中String类型的最大长度
前些天看到一道面试题,题目很容易理解:String的长度限制是多少?
针对这个题目,浏览了网友的回答,大概得到了3个层次的答案。
最浅的层次:
近似计算机内存大小的长度。这是作为一个程序员最浅显的回答。
一般的层次(大多数人的回答):
通过阅读String类的源码,知道有这样的成员变量,
/** The count is the number of characters in the String. */
private final int count;
count用来记录字符串的长度,是int型,则String的最大长度为Integer.MAX_VALUE,即2的31次方。这是否是真正的答案呢?
最深层的答案:
65535。
看到这个题目,立刻联想到之前的一本书,《深入理解java虚拟机》,刚好只看了一章,Class文件结构。得知在编译为字节码文件后,String类型的变量的值在常量池中使用CONSTANT_utf8-info类型表示,而CONSTANT_utf8-info型常量的结构为u1u2u1,得知长度限制使用两个字节的无符号二进制位表示,从而得出,String的最大长度为2的16次方,即65535。
以上。
---- 作者批注:65535只是在编译阶段的限制,运行中时,String对象的内部字符数组可以通过其它手段拼接成大于65535长度的字符串。所以运行时的字符串长度最多还应该是Integer.MAX_VALUE。
关于JAVA中String类型的最大长度的更多相关文章
- Java中String类型细节
Java中String类型细节 一 . String两种初始化方式 1 . String str1= “abc”;//String类特有的创建字符对象的方式,更高效 在字符串缓冲区中检测”abc”是否 ...
- Java中String类型详解
这篇博客是我一直想总结的,这两天一直比较忙,先上传下照片吧,过后有时间再弄成正常的. 本文主要是对Java中String类型的总结,包括其在JVM中是怎么存储的...
- 【转载】 Java中String类型的两种创建方式
本文转载自 https://www.cnblogs.com/fguozhu/articles/2661055.html Java中String是一个特殊的包装类数据有两种创建形式: String s ...
- Java中String类型的数据比较
在Java中如果想比较两个字符串是否相等,可以使用string1==string2 或string1.equal(string2)来比较. 但是,第一种方法过于局限.例如, String string ...
- java中String类型的相关知识
String类方法整理说明: ·Length()用来求字符串的长度,返回值为字符串的长度: ·charAt()取该字符串某个位置的字符,从0开始,为char类型: ·getChars()将这个字符串中 ...
- Java中String类型的不可变性和驻留池
一 基本概念 可变类和不可变类(Mutable and Immutable Objects)的初步定义: 可变类:当获得这个类的一个实例引用时,可以改变这个实例的内容. 不可变类:不可变类的实例一但创 ...
- java中String类型
string对象常用方法 string对象比较方法: string类获取包含子串的方法: 字符串和数字的转换: String类 String对象是不可改变的,字符串一旦创建,内容不能再改变. 构造字符 ...
- Java中String类型的部分用法
1.如何将字符串转换为整型数值? int i = Integer.parseInt("20"); 2.如何用“==”还是equals比较两个字符串? “==”是用来比较俩引用是不是 ...
- java中String类型转换为float类型
import java.io.*; public class Demo1{ public static void main(String args[]) { String df="12.2& ...
随机推荐
- 修改注册表实现Windows自动登陆
昨天再修一条case时无意间发现这个case竟然要重启机器,并且要用指定的账户自动登陆Windows.然后就发现了,简单的修改下注册表就可以完成自动登陆了. 首先,在“run”里输入“regedit” ...
- git 基于某个分支创建分支
1.拷贝源代码 git clone git@git地址 cd 项目目录 2.根据已有分支创建新的分支 git checkout -b yourbranchname origin/oldbranchna ...
- RAID详解[RAID0/RAID1/RAID10/RAID5] (转)
一.RAID定义RAID(Redundant Array of Independent Disk 独立冗余磁盘阵列)技术是加州大学伯克利分校1987年提出,最初是为了组合小的廉价磁盘来代替大的昂贵磁盘 ...
- svn your working copy appears to be locked run cleanup to amend the situation
cleanup 则解决
- PHP经常使用正則表達式汇总
1. 平时做站点常常要用正則表達式,以下是一些解说和样例,仅供大家參考和改动使用: 2. "^\d+$" //非负整数(正整数 + 0) 3. "^ ...
- (016)给定一个有序数组(递增),敲代码构建一棵具有最小高度的二叉树(keep it up)
给定一个有序数组(递增),敲代码构建一棵具有最小高度的二叉树. 因为数组是递增有序的.每次都在中间创建结点,类似二分查找的方法来间最小树. struct TreeNode { int data; Tr ...
- HIVE中join、semi join、outer join
补充说明 left outer join where is not null与left semi join的联系与区别:两者均可实现exists in操作,不同的是,前者允许右表的字段在select或 ...
- c++ two classes as each others' friends
In this case, Box need access to Cup.func, AND Cup need access to Box.func, both of which are privat ...
- UICollectionView的简单认识和简单实用
摘要 UICollectionView是比UITableView更加复杂的UI控件,通过它可以实现许多复杂的流布局.但对我们来说,系统提供的接口十分简单易用,并且有十分强的制定性. iOS流布局UIC ...
- imx6用文件io操作gpio
具体请参考: http://blog.csdn.net/u014213012/article/details/53140781 这里要注意的是: 要让linux支持文件io方式操作gpio,首先驱动必 ...