JAVA数据类型】String类型数据是否是定长得?

2020-05-27 16:57发布

到底是不是定长得,如果是长度极限是多少,如果不是,依据是什么

到底是不是定长得,如果是长度极限是多少,如果不是,依据是什么

2条回答
liu_shouhuo
2楼 · 2020-05-27 17:38

JDK8:

  1. 源码

     public final class String    implements java.io.Serializable, Comparable<String>, CharSequence {    //The value is used for character storage.    private final char value[]; }

  2. 分析

    String内部使用一个char[]数组来存放字符串的内容,数组下标是整型(也可以参考String的构百造方法String(char value[], int offset, int count) ,可以知道字符数量度是用整型表示),整型(Java规定32位)表示范围是2G,也就是说,Java数组最大的长度是专2G,即字符串不能超过2G个字符

JDK9:

  1. 源码

    public final class String    implements java.io.Serializable, Comparable<String>, CharSequence {    /** The value is used for character storage. */    @Stable    private final byte[] value;    private final byte coder;    @Native static final byte LATIN1 = 0;    @Native static final byte UTF16  = 1;    static final boolean COMPACT_STRINGS;    static {        COMPACT_STRINGS = true;    }

  2. 分析:            

        从代码我们可以看到底层的存储已经变成了byte[]。

        再看一下coder变量,coder代表编码的格式,目前String支持两种编码格式LATIN1和UTF16。

        LATIN1需要用一个字节来存储。而UTF16需要使用2个字节或者4个字节来存储。

  

    


信阳彭于晏
3楼 · 2020-05-27 17:48

严格来说,String确实有长度限制。

1、String内部使用一个char[]数组来存放字符串的内容,数组下标是整型(也可以参考String的构造方法String(char value[], int offset, int count) ,可以知道字符数量是用整型表示),整型(Java规定32位)表示范围是2G,也就是说,Java数组最大的长度是2G,即字符串不能超过2G个字符。

2、Java的数组大小还有没有别的限制?事实上数组大小不能超过Java堆的大小,而Java堆的最大尺寸可以通过启动参数指定,如果Java堆开得足够大,数组的最大长度是可以不断增大的。

3、所以,理论上,字符串不能超过2G个字符,少于2G个字符都有可能。


相关问题推荐

  • 回答 8

    引用类型有:Object类型,Array类型,Date类型,RegExp类型(正则),function类型。还有基本包装类型,也是一种引用类型,ECMAScript还提供了 3个特殊的引用类型:Boolean、Number和String。

  • 回答 17

    最基本的就是做开发了,可以做程序的后台开发,框架搭建等,也可以做前台的,就是做前台的展示页面,到后面也可以做项目管理,带团队。

  • 回答 16

    学习函数,面向对象,数组,SQLite数据库系统,java多线程技术,JB BOM ,CSS基础,Oracle,mybatis基础等等

  • 回答 10

    使用方法就是定义变量的类型,如 int a = 0 其中int就是变量类型,a就是变量,0就是a的值依次还有String(字符类型),double(小数类型)等

  • 回答 1

    Java中的常量的分类①、整数常量,所有整数②、小数常量,所有小数③、布尔型常量,较为特有,只有两个数值,true false ④、字符常量,将一个数字字母或符号用单引号(‘’)标识⑤、字符串常量,将一个或者多个字符用双引号()标识⑥、null常量,只有一...

  • 回答 8

    需要一个发短信的设备,比如短信猫。去网上找一下,有很多。短信猫的卖家可以给你提供java编程接口,但一般都是要收费。如果你不想额外花钱买java接口,你可以去搜一个叫做SMSLib的开源库。然后利用这个开源库或者卖家给你的接口来开发你的java程序。...

  • 回答 3

    java里面基本数据类型就int浮点型字符型和布尔转换的规则是byte,short,char——》int——》long——》float——》double还有什么强制类型转换是指低类型的转向高类型的和c差不多了

  • 回答 3

    byte short int long float double boolean char

  • 回答 2

    您好,不一定非要是本专业的,很多java工程师都是半路出家,只要自己感兴趣,确定想进入这一行,就没问题的。几个学习java的小建议:1.不要看书不要看书,很多零基础学Java的,由于从未接触过编程,第一个想法就是买书,我十多年开发的经验告诉你,新手学习Ja...

  • 回答 3

    Java的入门需要一定的基础,如果你之前没有计算机行业的话初学者还是有点难的,最好是有人带着你一起学,不然的话很容易陷入枯燥和自我否定当中,Java不是想学就能学会的,可以找机构的老师一起学的...

  • 回答 3

    没有说哪个好~Java和Python就是两个不同的语言,各有各的有点,后期发展也都是差不多的,只不过看个人的兴趣,Python比Java更吃学历。

  • 回答 2

    楼主可以选择自学,但是自学是个相当漫长的过程,可能也比较难坚持下来,如果自身克制力不够,可以选择去找个培训机构学习。

  • 回答 2

    首先,要先了解机构的课程内容。了解的时候要注意他们的课程内容是否更新,有些培训机构一直沿用之前的授课内容,早已不适应现在的市场行情,甚至可以说是非常落伍。尽量了解一些专业知识再去打听,避免上当受骗。其次,了解机构是否具备正规的授课资质?营业...

  • 回答 2

    我个人觉得Java是世界上最美的语言!

  • 回答 3

    有人曾经做过统计,询问500多已经参加工作的 Java开发者,学习java是否困难?有74%的人认为不难,说难学的仅占26%,那么这74%全部都是聪明人,智商比普通人高吗?显然不是的。说到底Java,它只是一种语言,仅此而已。跟我们平时学习母语,英语并无不同,只是...

没有解决我的问题,去提问