java里,string的长度是固定的?
看面试题string和stringbuffer的区别,提到string长度是固定的,这个长度是多少啊...
看面试题string和stringbuffer的区别,提到string长度是固定的,这个长度是多少啊
展开
4个回答
展开全部
String s;这个只是声明了一个变量,除了变量本身,是没有长度的;
String s = "sss";这个与"sss"的值的长度有关,此时s.length将为3;
但即使给s执行s + "1"操作,Java虚拟机也将创建一个新的字符串"sss1",这个与刚才的"sss"指向了不同的地址空间,此时s.length为4;
这是因为String的实现是final类型的char[],一旦对其赋值,其所对应的地址空间将不会改变;如果再次赋值或者执行"s"都将开辟新空间创建新对象,所以说每一个Java栈上的String对象的长度是固定的。
String s = "sss";这个与"sss"的值的长度有关,此时s.length将为3;
但即使给s执行s + "1"操作,Java虚拟机也将创建一个新的字符串"sss1",这个与刚才的"sss"指向了不同的地址空间,此时s.length为4;
这是因为String的实现是final类型的char[],一旦对其赋值,其所对应的地址空间将不会改变;如果再次赋值或者执行"s"都将开辟新空间创建新对象,所以说每一个Java栈上的String对象的长度是固定的。
展开全部
所谓长度固定不是你理解的意思
而是说String类中存储的char[]是final的,不能修改,你对String的操作实际上是产生了一个新的String,对于某一个String来说,长度就是固定的了
而是说String类中存储的char[]是final的,不能修改,你对String的操作实际上是产生了一个新的String,对于某一个String来说,长度就是固定的了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你理解错了。
Java 中的 String 对象是一旦创建不可被修改的,对它的任何操作(如用 + 号连接都会导致新的 String 对象被创建);
而 StringBuffer 是可以对同一个对象进行 append(添加)、delete(删除字符)、insert(插入字符)等操作。
因此经常说如果你想提高字符串处理性能的话,最好用 StringBuffer 的 append 方法而不是用 String 的 + 号来连接两个字符串。
题目其实是这个意思,只是说法不太好。
Java 中的 String 对象是一旦创建不可被修改的,对它的任何操作(如用 + 号连接都会导致新的 String 对象被创建);
而 StringBuffer 是可以对同一个对象进行 append(添加)、delete(删除字符)、insert(插入字符)等操作。
因此经常说如果你想提高字符串处理性能的话,最好用 StringBuffer 的 append 方法而不是用 String 的 + 号来连接两个字符串。
题目其实是这个意思,只是说法不太好。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
String 的长度被设计成只能通过方法读取。为了防止出现类似 str.length = 5; 之类的语句。因为这是不合理的语句,用户是不应该这样设定字符串的长度的,应该只能读取它。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询