android string参数最大长度,每日一问 | 我们经常用的 String类型,你知道它最大可以放多长的字符串吗?...

String被用作常量时,它被编译器当成字面量存放于常量池。常量池中主要存放两大类常量:字面量和符号引用;常量池中的每一个常量都是一个表,字符串常量存于CONSTANT_Utf8_info表(Tip:字节码文件由无符号数和表映射的数据构成,详见java虚拟机规范或者周志明老师的深入理解Java虚拟机)。

CONSTANT_Utf8_info {

u1 tag;

u2 length;

u1 bytes[length];

}

CONSTANT_Utf8_info表由tag、length和bytes组成。tag用于标识表的类型,大小为一个字节的无符号数;length表示使用utf-8缩略编码表示的字符串长度,大小为两个字节的无符号数;bytes存放被编码的字符串。字符串常量的最大值为2^16-1(65535)字节。当使用javac编译Test.java文件时,由于其中的字符串长度为65535,超出javac中规定的大小,编译失败;下面是含长度为65534的字符串的Test类编译前后的内容,位于0x7E~0x1007E(包括起止的两个字节)之间的数据为一个CONSTANT_Utf8_info表的映射,tag值为0x01(位于0x7E),之后的两个字节表示length值为0xFFFE(65534),随后的65534个字节字符串内容。

public class Test{

//65534个a

String str="aaaa...";

}

//字节码内容

Offset: 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

00000000: CA FE BA BE 00 00 00 34 00 13 0A 00 05 00 0E 08 J~:>...4........

00000010: 00 0F 09 00 04 00 10 07 00 11 07 00 12 01 00 03 ................

00000020: 73 74 72 01 00 12 4C 6A 61 76 61 2F 6C 61 6E 67 str...Ljava/lang

00000030: 2F 53 74 72 69 6E 67 3B 01 00 06 3C 69 6E 69 74 /String;...

00000040: 3E 01 00 03 28 29 56 01 00 04 43 6F 64 65 01 00 >...()V...Code..

00000050: 0F 4C 69 6E 65 4E 75 6D 62 65 72 54 61 62 6C 65 .LineNumberTable

00000060: 01 00 0A 53 6F 75 72 63 65 46 69 6C 65 01 00 09 ...SourceFile...

00000070: 54 65 73 74 2E 6A 61 76 61 0C 00 08 00 09 01 FF Test.java.......

00000080: FE 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 ~aaaaaaaaaaaaaaa

...

00010070: 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 0C aaaaaaaaaaaaaaa.

00010080: 00 06 00 07 01 00 04 54 65 73 74 01 00 10 6A 61 .......Test...ja

00010090: 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 00 21 va/lang/Object.!

000100a0: 00 04 00 05 00 00 00 01 00 00 00 06 00 07 00 00 ................

000100b0: 00 01 00 01 00 08 00 09 00 01 00 0A 00 00 00 27 ...............'

000100c0: 00 02 00 01 00 00 00 0B 2A B7 00 01 2A 12 02 B5 ........*7..*..5

000100d0: 00 03 B1 00 00 00 01 00 0B 00 00 00 0A 00 02 00 ..1.............

000100e0: 00 00 01 00 04 00 02 00 01 00 0C 00 00 00 02 00 ................

000100f0: 0D

javac无法编译字符串常量长度超过65534的java文件

原因:javac中对字符串常量长度做了限制,可以下面的checkStringConstant方法中看出。(Tip:javac源码位于OpenJDK中,并且各个版本路径不一定相同,修改上面的字节码文件,将length值由0xFFFE改为0xFFFF,并将bytes数据添加一个字节,执行java命令,程序正常运行。)

//位于javac源码中的Gen.java文件,Errors.LimitString 为constant string too long

//Pool.MAX_STRING_LENGTH值为0xFFFF

/** Check a constant value and report if it is a string that is

* too large.

*/

private void checkStringConstant(DiagnosticPosition pos, Object constValue) {

if (nerrs != 0 || // only complain about a long string once

constValue == null ||

!(constValue instanceof String) ||

((String)constValue).length() < Pool.MAX_STRING_LENGTH)

return;

log.error(pos, "limit.string");

nerrs++;

}

String被当作变量时,其长度由String存储方式决定。在JAVA SE 9之前,String内部是由char数组存储的,数组最大长度为Integer.MAX_VALUE(0x7fffffff),即2^31-1,并且char的取值范围在0~65535之间,占两个字节,因此String的最大长度为429496967294字节,运行时需要大约4GB的内存才能存储;JAVA SE 9及其后续版本将char数组改为byte数组,因此String的最大长度为2147483647字节。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/563727.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android物理健代码,Android 物理按键整理及实例代码

先给大家看一段代码&#xff0c;然后说明。import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.view.KeyEvent;import android.widget.Toast;public class MainActivity extends Activity {Overrideprotected void onCreate(Bundle…

Android studio 按钮排版,Android Studio自动排版的两种方法

解决java compiler level does not match the version of the installed java project facet在项目目录的.setting文件夹下的org.eclipse.wst.common.project.facet.core.xml中 CSS长度单位及区别 em ex px pt in1. css相对长度单位 em 元素的字体高…

android 中自定义键盘,【图片】自定义属于自己的专属键盘的思路!!!(需要有android编程基础)【exagear吧】_百度贴吧...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼最近玩一些全键盘游戏,比如elona,nethack等等这类游戏,模拟器的键盘就很不够用,那个 游戏键盘 软件用起来体验也很不好,今天自己就琢磨着为这些游戏专门写一个键盘.1.首先尝试了写一个简单的键盘,发现无法实现跨进程用(也就是说只能…

linux sed 冒号,linux sed 总结

1.简介sed是一种行编辑器&#xff0c;它一次处理一行内容。2.sed调用方式sed [options] command file(s)sed [options] -f scriptfile file(s)第一种直接在命令行中执行&#xff0c;第二种把命令写到了脚本中&#xff0c;二者无本质区别。示例(1)&#xff1a;打印hello.txt的内…

wps office android,WPS Office

应用介绍安卓端办公软件&#xff0c;个人版免费使用用户多:全球用户600,000,000排名高:全球APP总榜同类产品榜首体积小:只安装一个应用即可打开所有格式文档云办公:免费云空间&#xff0c;安全高效&#xff0c;可以在任何设备.上及时查看和编辑远程办公推荐-远程会议&#xff0…

鸿蒙形容欣欣向荣发展,比喻事业蓬勃发展繁荣兴旺的成语蒸蒸日上

2020-03-13阅读(79)1.《RE从零开始的异世界生活》作者&#xff1a;长月达平。2.《魔法少女小圆》作者&#xff1a;新房昭之。3.《命运石之门》作者&#xff1a;冈部伦太郎。4.《寒蝉鸣泣之时》作者&#xff1a;前原圭一。5.《目隐都市的演绎者》作者&#xff1a;新房昭之。6.《…

android 照片特效,android触摸时扭曲变形图片照片,图片特效

【实例简介】在手指触摸照片图片时扭曲变形图片照片&#xff0c;用于变脸&#xff0c;哈哈镜&#xff0c;旗帜飘动特效的应用中【实例截图】【核心代码】MeshTest└── MeshTest├── AndroidManifest.xml├── bin│ ├── classes.dex│ ├── org│ │ └── …

c语言深度解剖 pdf,c语言深度解剖(解密).pdf.pdf

c语言深度解剖(解密).pdf.pdf还剩130页未读&#xff0c;继续阅读下载文档到电脑&#xff0c;马上远离加班熬夜&#xff01;亲&#xff0c;很抱歉&#xff0c;此页已超出免费预览范围啦&#xff01;如果喜欢就下载吧&#xff0c;价低环保&#xff01;内容要点&#xff1a;* Stru…

html中链接不自动变色,HTML 点击 标签 链接 点击之后变色-转发【已解决】

可以利用CSS的伪类实现&#xff1a;a:link&#xff0c;定义正常链接的样式&#xff1b;a:visited&#xff0c;定义已访问过链接的样式&#xff1b;a:hover&#xff0c;定义鼠标悬浮在链接上时的样式&#xff1b;a:active&#xff0c;定义鼠标点击链接时的样式。例子&#xff1a…

中秋主题html,中秋节活动主题标语

以下是出国留学网小编为大家精心挑选和整理的中秋节活动主题标语&#xff0c;供大家参考和借鉴&#xff0c;希望能帮助到大家!更多资讯尽在出国留学网!1. 庆中秋&#xff0c;迎国庆&#xff0c;送大礼!2. 万家团圆迎中秋&#xff0c;四海欢腾庆国庆3. 月是故乡明,饼表思亲情!4.…

一张纸厚度是多少毫米_大洼20毫米水泥纤维板多少钱一张追求至善

大洼20毫米水泥纤维板多少钱一张追求至善而且强度和硬度随时间而增强&#xff0c;保证有超长的使用寿命。近年来&#xff0c;我国对loft复式阁楼板的研究较为深入。与龙骨的配合&#xff0c;有效降低工程和装修成本&#xff0c;外观颜色均匀&#xff0c;表面平整&#xff0c;直…

html中删除代码怎么写,html空格代码怎么写?

html空格代码怎么写&#xff1f;html空格代码是 为html空格字符代码&#xff0c;由“ ”组成&#xff0c;记住最后一个分号不要忘记了。CSS中当 white-space 属性取值为pre时&#xff0c;浏览器会保留文本中的空格和换行,例如&#xff1a;AA BB显示效果为&#xff1a; AA BBCS…

管程由哪三部分组成_黄蜀葵烘干机是由哪几个部分组成的

黄蜀葵在近几年有大量的需求增加&#xff0c;市面上有大量的黄蜀葵烘干机的需求产生&#xff0c;黄蜀葵烘干机一般用的都是网带机的形式结构来对黄蜀葵进行烘干&#xff0c;那么黄蜀葵烘干机的重要组成部分有哪些呢&#xff1f;1 上料端上料端是黄蜀葵烘干机的前段部分&#xf…

在线js拼接html代码,关于js拼接html元素?

你的意思是 小明和 888888这样的学号都是从数据中来的&#xff1f;然后要展现到前端页面中其实有很多方法&#xff1a;一. 直接全HTML拼接(你可能想到的方法)// 假设 有 name 和 xueID 分别代表名字和学号的变量var HTMLbankname xueID name 上学校&#xff0c;天天不迟到&…

用php 用拼出一个菱形_这可是我没来过的杭州呀!远在开封的他,用一种特殊的方式,拼出一个彩色杭州...

天气晴好的日子&#xff0c;一起骑车出游。西湖&#xff0c;除了美&#xff0c;还有爱情。杭友圈达人“幽默之余”&#xff1a;我并不是杭州人&#xff0c;在河南开封工作&#xff0c;但和杭州&#xff0c;和都市快报&#xff0c;已经有近10年的感情了。因为喜欢摄影&#xff0…

html文字自动消失了,为什么从网页上复制的文字到word上一修改后面的字就自动消失了...

word打字时后面的字会消失是什么原因?如何解决?出现这种问题多半是发生设置错误或误触键盘某些键导致的,由于插入键与退格键距离非常的接近,于是,误触插入键是最常导致这种问题。而导致word打字后面的字会消失由于两方面的原因引起&#xff0c;一是insert键&#xff0c;二是W…

apache license 2.0如何使用防止法律纠纷_Thinkphp + queue 使用队列进行 邮件通知

环境thinkphp5.1redis"topthink/think-queue": "2.0.*"复制代码queue 配置环境 config/queue.php<?php // ----------------------------------------------------------------------// | ThinkPHP [ WE CAN DO IT JUST THINK IT ]// ----------------…

计算机科学与应用考研题,2015年中科院计算机科学综合考研真题

中国科学院大学2015年招收攻读硕士学位研究生入学统一考试试题科目名称&#xff1a;计算机学科综合(专业)考生须知&#xff1a;1&#xff0e;本试卷满分为150分&#xff0c;全部考试时间总计180分钟。2&#xff0e;所有答案必须写在答题纸上&#xff0c;写在试题纸上或草稿纸上…

.net core 正则表达式 获取 等号后面的值_Python3 正则表达式

Python人工智能 - python 人工智能-神经网络 - 创客学院直播室​www.makeru.com.cnPython AI开发实战营 - Day2:Python世界中的封装与异常 - 创客学院直播室​www.makeru.com.cnPython AI开发实战营 - Python开发必备之网络编程 - 创客学院直播室​www.makeru.com.cnpython高级…

html中把句子往右边弄一点咋办,CSS上的左,中,右对齐方法,可以在一行上混合...

一种用CSS以左对齐/中心对齐/右对齐方式显示用HTML编写的句子的方法在用“从左到右书写的语言”(如日语和英语)中编写的HTML中&#xff0c;除非指定了字符移位方向&#xff0c;否则句子左对齐显示。但是&#xff0c;当您想要将标题和标题(居中)居中并发布它们时&#xff0c;这种…