精华内容
下载资源
问答
  • String长度限制

    千次阅读 2020-04-16 11:05:16
    有两种情况会遇到String长度超出限制的问题:1. 别人对文件进行Base64加密后传过来,然后你把接收到的字符串粘到代码里,会提示字符串过长,其实这是编译期字符串长度的限制问题;2. 有那种在java代码里用字符串写...

    有两种情况会遇到String长度超出限制的问题:1. 别人对文件进行Base64加密后传过来,然后你把接收到的字符串粘到代码里,会提示字符串过长,其实这是编译期字符串长度的限制问题;2. 有那种在java代码里用字符串写sql的情况,字符串长度太长也不行。

    字符串长度的问题其实要分两种情况:编译期和运行期。

    1. 编译期

    package com.linyf.demo;
    
    import org.apache.commons.codec.binary.Base64;
    
    import java.io.*;
    
    public class StringLengthDemo {
        public static void main(String[] args) throws IOException {
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            InputStream is = new FileInputStream(new File("C:\\Users\\86183\\Pictures\\174718-1558172838db13.jpg"));
            byte[] bytes = new byte[1024];
            int len = -1;
            while ((len = is.read(bytes))!=-1){
                baos.write(bytes,0,len);
            }
    	//模拟s就是别人传过来的Base64加密后的文件字符串,然后输出后赋值给aaa 运行编译会报错:字符串长度过长
            String s = Base64.encodeBase64String(baos.toByteArray());
            System.out.println(s);
            System.out.println(s.length());
    //        String aaa = "a...a";
    
    //        System.out.println(aaa);

    当我们定义字符串常量,如String a=’‘aaa’'的时候,会把字符串aaa在常量池中存储一份。所以编译期的字符串长度其实受常量池限制。

    字符串在class格式文件中的存储格式:

    CONSTANT_Utf8_info {
        u1 tag;
        u2 length;
        u1 bytes[length];
    }

    u2是无符号的16位整数,因此理论上允许的string str的最大长度是2^16=65536,但是class 文件中null 值使用两个 字节来表示,因此只剩下 65536- 2 = 65534个字节。

    oracle VM 官网中关于class文件格式说明中有下面两段话:
    在这里插入图片描述
    可以看到所有需要保存在常量池中的数据,长度最大不能超过65535
    在这里插入图片描述
    可以看到class 文件是使用一种变体UTF-8格式来存放字符的,null 值使用两个 字节来表示,而不是一个字节。

    2. 运行期

    String构造函数:
    在这里插入图片描述
    而length为int,也就是长度最大值为Integer.MAX_VALUE = 2^31 - 1即2147483647 。因为int是32位有符号位,只取正值的话,通过计算,String长度最大大概是4G:

    2147483647 * 16 = 3435973835234359738352 / 8 = 4294967294 (Byte)
    4294967294 / 1024 = 4194303.998046875 (KB)
    4194303.998046875 / 1024 = 4095.9999980926513671875 (MB)
    4095.9999980926513671875 / 1024 = 3.99999999813735485076904296875 (GB)
    展开全文
  • c# string 长度

    千次阅读 2019-04-17 14:47:19
    The maximum size of a String object in memory is 2GB, or about 1 billion characters. string 最大长度2GB,一个string对象大约可容纳1 billion个字符 参考msdn

    The maximum size of a String object in memory is 2GB, or about 1 billion characters.
    string 最大长度2GB,一个string对象大约可容纳1 billion个字符
    参考msdn

    展开全文
  • golang中string长度

    万次阅读 2020-10-12 02:45:33
    golang中计算string长度用len函数,但是len函数返回的是字符串的 byte 数量 如果要得到字符串的字符数,可使用 "unicode/utf8" 包中的 RuneCountInString(str string) (n int) 因为string中不一定都是ASCII ...

           golang中计算string长度用len函数,但是len函数返回的是字符串的 byte 数量

           如果要得到字符串的字符数,可使用 "unicode/utf8" 包中的 RuneCountInString(str string) (n int)

           因为string中不一定都是ASCII

    展开全文
  • [Java] String 长度限制

    万次阅读 2017-03-10 16:30:07
    一、Java String 变量长度限制根据 String 源码: 因此,理论上 String 变量长度限制为 int 类型的最大值,即 Integer.MAX_VALUE = 2^31 - 1 = 2147483647,约等于 2G。注:实际还和 java 堆内存大小有关。二、Java ...

    一、Java String 变量长度限制

    根据 String 源码:
    这里写图片描述

    因此,理论上 String 变量长度限制为 int 类型的最大值,即 Integer.MAX_VALUE = 2^31 - 1 = 2147483647,约等于 2G。

    注:实际还和 java 堆内存大小有关。

    二、Java String 常量长度限制

    而在 Java 中,由于字符串常量池的存在,String 常量长度限制取决于 String 常量在常量池中的存储大小。

    字符串在 class 文件中的存储格式为:

    CONSTANT_Utf8_info {
        u1 tag;
        u2 length;
        u1 bytes[length];
    }

    未完待续。。。

    展开全文
  • Swift 获得字符串String长度

    万次阅读 2017-02-10 14:44:37
    在Objective-C中我们通常使用length来获取NSString类型的字符串的长度,而在Swift中,String结构体没有了这个方法,那怎样获取String类型的字符串的长度呢?我们可以通过他的扩展属性成员characters的count属性来获取 ...
  • JAVA中String长度限制解决

    千次阅读 热门讨论 2019-05-08 14:58:52
    今天在公司的时候,同事给了我一个10兆的webservice接口返回的数据文本,刚开始定义String str="123...";编译不通过。特此记录。下面给出解决方案: String str="123......",这样定义的字符串是存在字符串池中的。...
  • Java中的String长度限制

    千次阅读 2019-08-21 10:49:27
    编译时期 ...既然是合理的推断,那就要要足够的依据,所以我们可以从String的源码入手,根据public String(char value[], int offset, int count)的定义,count是int类型的,所以,char value[]中...
  • String长度的三大方法

    千次阅读 2020-04-11 00:49:14
    如何求string长度 #include <iostream> using namespace std; int main() { string s("aaaaaaaab"); int length1 = s.length(); int length2 = s.size(); int length3 = strlen(s.c_str()); c...
  • java String长度

    千次阅读 2020-12-04 09:46:42
    首先要知道String长度限制我们就需要知道String是怎么存储字符串的,String其实是使用的一个char类型的数组来存储字符串中的字符的。 存储String的容器原来是它 那么String既然是数组存储那数组会有长度的限制...
  • String 最大长度String Pool

    万次阅读 2012-09-18 15:53:20
    我们可以使用串接操作符得到一个长度更长的字符串,那么,String 对象最多能容纳多少字符呢?查看String的源代码我们可以得知类String中是使用域 count 来记录对象字符的数量,而count 的类型为 int,因此,我们可以...
  • Java string 长度不足补0的方法

    万次阅读 2018-06-25 15:45:28
    方法如下: String s=String.format(&quot;%010d&quot;, 123) //123为int类型,0代表前面要补的字符 10代表字符串长度,d表示参数为整数类型
  • Java int转string 长度不足左补0

    万次阅读 2017-06-18 14:14:28
    String s=String.format("%010d", 123)//123为int类型,0代表前面要补的字符 10代表字符串长度,d表示参数为整数类型 String s1=new DecimalFormat("0000000000").format(123)//123为int类型 上面的s和s1输出结果...
  • String 有没有长度限制呢 1、String的数据结构是 char value[]。数组的长度是int类型,最大值为2的31次方-1= 2147483647(2G),所以String最多存储2147483647 个字符。 private final char value[]; public int ...
  • String的最大长度

    千次阅读 2015-12-08 18:34:34
    Java字符串的最大长度 Posted on 2009-01-15 01:37 dennis ... 在cpp中为了可移植性,string长度string::size_type,突然就想知道java允许的最大字符串长度为多少。看String的源码: public final class String
  • String最大长度

    千次阅读 2018-12-27 10:40:37
    我们在编写源代码的时候,如果使用 Sting str = "aaaa";的形式定义一个字符串,那么双引号里面的ASCII字符最多只能 有 65534 个。为什么呢?因为在class文件的规范中, CONSTANT_Utf8_info表中使用一个16...
  • C++的string长度和插入函数

    万次阅读 2017-04-15 22:39:59
    size#include ...}(2)a.length()(同size(),这是早期开发string类时加入的,现在还可以用,但其他STL容器没有此方法)解释一下sizeof的结果:sizeof运算符返回对象或类型实际占有的空间,string
  • string长度排序

    千次阅读 2017-05-02 19:25:57
    sort对string默认是按字典序排序,要按长度排序需要这样写 vector words; sort(words.begin(), words.end(), [](string &a, string &b){ return a.size() });
  • 来源:r6d.cn/Fmku前言话说Java中String是有长度限制的,听到这里很多人不禁要问,String还有长度限制?是的有,而且在JVM编译中还有规范,而且有的家人们在面试的时候...
  • java String 最长长度和占用内存大小

    万次阅读 2019-10-25 11:22:01
    String在内存中的最大长度理论上是int型变量的最大值,Integer.MAX_VALUE, String的字面常量的最大长度为CONSTANT_Utf8_info表决定,一般为65535. 二 介绍 1、String的内部实现 通过一个字符数组来维护字符序列,...
  • java中String对象的长度

    万次阅读 2015-05-04 16:08:53
    java中String长度 使用 Integer.MAX_VALUE Integer.MAX_VALUE = 2147483647 : String 和 StringBuffer  获得长度的方法:  public int length()   Returns the length of this string
  • 获取string长度

    千次阅读 2016-03-14 21:27:01
    获取C++字符串string(头文件)的方法 1:size()函数 string str = "Hello"; int len = str.size(); 2:length()函数 string str = "Hello"; int len = str.length();
  • 当你看到这个问题“String长度限制是多少”时是不是感觉很无聊?的确,这就是我第一眼看到时的感觉。 但当深入追踪该问题时,才发现String的长度限制本身的意义并不重要,重要的是在此过程中会将大量知识点串联起来...
  • hive 中String长度没有限制

    千次阅读 2021-06-11 17:18:24
    hive 中String长度没有限制 hive 中String长度没有限制! 今天在存储的时候,有个人推荐系统的元数据,是用数组写的 因为很长,就考虑了一下这个问题 hive的string和varchar的区别 Hive有2种类型用于存储变长...
  • C/C++ | 求数组长度 | 求字符串数组长度 | 求string类型长度; 数组长度 int arr[] = {1,2,3,4,5,6,7,8,9}; int length = 0; length = sizeof(arr) / sizeof(int); int arr[10]={0,0}; //这样的无法...
  • javascript中获取string长度

    千次阅读 2015-07-18 17:57:39
    javascript中获取string长度,即获取其中字符串的数量。 string.length。即可 test(); function test() { var s = "JavaScript" var a = 0; var b = 0; var c = 0; var i = 0; //var e="";
  • JAVA中的String类--String的最大长度

    万次阅读 2016-01-11 21:16:20
    String在内存中的最大长度理论上是int型变量的最大值,Integer.MAX_VALUE, String的字面常量的最大长度为CONSTANT_Utf8_info表决定,一般为65535. 1、String的内部实现 通过一个字符数组来维护字符序列,其声名...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,282,957
精华内容 513,182
关键字:

如何算string的长度