文章预览
1.首先String的length方法返回是int。所以理论上长度一定不会超过int的最大值。 2.编译器源码如下,限制了字符串长度大于等于65535就会编译不通过 private void checkStringConstant (DiagnosticPosition var1, Object var2) { if ( this .nerrs == 0 & & var2 != null & & var2 instanceof String & & ((String)var2).length() >= 65535 ) { this .log.error(var1, "limit.string" , new Object[ 0 ]); ++ this .nerrs; } } Java中的字符常量都是使用UTF8编码的,UTF8编码使用1~4个字节来表示具体的Unicode字符。所以有的字符占用一个字节,而我们平时所用的大部分中文都需要3个字节来存储。 //65534个字母,编译通过 String s1 = "dd..d" ; //21845个中文”自“,编译通过 String s2 = "自自...自" ; //一个英文字母d加上21845个中文”自“,编译失败 String s3 = "d自自...自"
………………………………