java中string为什么长度多一个 java里,string的长度是固定的
这篇文章给大家聊聊关于java中string为什么长度多一个,以及java里,string的长度是固定的对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。
java里,string的长度是固定的
String s;这个只是声明了一个变量,除了变量本身,是没有长度的;
String s="sss";这个与"sss"的值的长度有关,此时s.length将为3;
但即使给s执行s+"1"操作,Java虚拟机也将创建一个新的字符串"sss1",这个与刚才的"sss"指向了不同的地址空间,此时s.length为4;
这是因为String的实现是final类型的char[],一旦对其赋值,其所对应的地址空间将不会改变;如果再次赋值或者执行"s"都将开辟新空间创建新对象,所以说每一个Java栈上的String对象的长度是固定的。
Java中String接受的最大字符串的长度是多少
我们可以使用串接操作符得到一个长度更长的字符串,那么,String对象最多能容纳多少字符呢?查看String的源代码我们可以得知类String中
是使用域 count来记录对象字符的数量,而count的类型为 int,因此,我们可以推测最长的长度为 2^32,也就是4G。
不过,我们在编写源代码的时候,如果使用 Sting str="aaaa";的形式定义一个字符串,那么双引号里面的ASCII字符最多只能
有 65534个。为什么呢?因为在class文件的规范中, CONSTANT_Utf8_info表中使用一个16位的无符号整数来记录字符串的长
度的,最多能表示 65536个字节,而java class文件是使用一种变体UTF-8格式来存放字符的,null值使用两个字节来表示,因此只剩
下 65536- 2= 65534个字节。也正是变体UTF-8的原因,如果字符串中含有中文等非ASCII字符,那么双引号中字符的数量会更少(一
个中文字符占用三个字节)。如果超出这个数量,在编译的时候编译器会报错
Java中String类型有没有长度的限制
严格来说,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个字符都有可能。
java中如何根据一个字符串的长度生成相同长度的一串0
这个比较简单,我给你写了一个,你看看是不是你想要的。============================================================================package com.xol365.help.g;/**
*根据一个字符串的长度生成相同长度的一串0
*
**/
public class LengthPri{
String test="shi.jie ni好";//原字符串
StringBuffer sb; public LengthPri(){
mth1();
mth2();
}/**
*根据字符串的长度生成相同长度的一串0,直接在控制台输出
**/
private void mth1(){
System.out.println("LengthPri.mth1()方法:");
System.out.println("字符串:"+ test);
System.out.println("长度:"+ test.length());
String a[]= new String[test.length()];
for(int i= 0; i< a.length; i++){
a[i]="0";
System.out.print(a[i]);
}
System.out.println();
}/**
*根据字符串的长度生成相同长度的一串0,存储到StringBuffer
**/
private void mth2(){
System.out.println("LengthPri.mth2()方法:");
System.out.println("字符串:"+ test);
System.out.println("长度:"+ test.length());
sb= new StringBuffer();
String a[]= new String[test.length()];
for(int i= 0; i< a.length; i++){
a[i]="0";
sb.append(a[i]);
}
System.out.println(sb.toString());
} public static void main(String[] args){
new LengthPri();
}
}
END,本文到此结束,如果可以帮助到大家,还望关注本站哦!