java里,string的长度是固定的?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java里,string的长度是固定的?相关的知识,希望对你有一定的参考价值。

看面试题string和stringbuffer的区别,提到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对象的长度是固定的。
参考技术A 所谓长度固定不是你理解的意思
而是说String类中存储的char[]是final的,不能修改,你对String的操作实际上是产生了一个新的String,对于某一个String来说,长度就是固定的了本回答被提问者采纳
参考技术B 你理解错了。

Java 中的 String 对象是一旦创建不可被修改的,对它的任何操作(如用 + 号连接都会导致新的 String 对象被创建);

而 StringBuffer 是可以对同一个对象进行 append(添加)、delete(删除字符)、insert(插入字符)等操作。

因此经常说如果你想提高字符串处理性能的话,最好用 StringBuffer 的 append 方法而不是用 String 的 + 号来连接两个字符串。

题目其实是这个意思,只是说法不太好。
参考技术C String 的长度被设计成只能通过方法读取。为了防止出现类似 str.length = 5; 之类的语句。因为这是不合理的语句,用户是不应该这样设定字符串的长度的,应该只能读取它。

字段text类型以大括号开头 Java里获取不到

参考技术A TINYTEXT和CHAR。
CHAR,保存固定长度的字符串(可包含字母,数字以及特殊字符)。在括号中指定字符串的长度。最多255个字符。TINYTEXT,存放最大长度为255个字符的字符串。TEXT,存放最大长度为65535个字符的字符串。

以上是关于java里,string的长度是固定的?的主要内容,如果未能解决你的问题,请参考以下文章

将java中的字符串拆分为固定长度的块

Java String类型的日期怎么转为Date类型,不要SimpleDateFormat给的固定形式,因为String有多个长度时间

Java里,我想往一个固定大小的面板里添加若干按钮,我用了scrollpane,在这个面板里又加了

select 设置固定长度

Java在固定长度的数组里加入一个数

替换oracle中没有固定长度的子字符串