了解String的基本操作和字符串缓冲池

电脑杂谈  发布时间:2020-06-09 09:22:32  来源:网络整理

(string) 和string.valueof_string[]转string_string池

1. 字符串的基本操作

String对象的内容永远不会改变,也就是说,String对象不会改变(引用已更改). 如果操作了String字符串,则会形成一个新字符串并将其分配给原始字符串,原始字符字符串的对象保持不变,然后重新引用一个新对象(Stringstr =“ abc”; str = str +“ def”;在这种情况下,str重新引用对象“ abcdef”,并且原始创建的“ abc”,“ Def”对象保持不变),字符串比较使用equals. 您还可以使用新的String(str.getBtyes(“原始编码”),“新编码格式”);转换字符编码格式.

Q: Stringstr =“ abc”和Stringstr = newString(“ abc”);有什么区别?

答案: 上面两段代码之间的区别是,在我们执行此行代码后创建了多少个对象?当然,此两段代码认为每个人都不陌生,答案也众所周知. Stringstr = newString(“ abc”);创建2个对象,并通过Stringstr =“ abc”创建1个对象.

string池_string[]转string_(string) 和string.valueof

我们可以将以上代码分成四个部分: Stringstr,=string池,“ abc”和newString(). Stringstr只是定义了一个String类型的变量str,因此它不会创建对象. =是初始化变量str,为对象分配引用(或句柄),显然不会创建对象;现在只剩下newString(“ abc”). 那么,为什么可以将newString(“ abc”)视为“ abc”和newString()?

让我们看一下我们调用的String构造函数:

publicString(Stringoriginal){// othercode ...}众所周知,创建类的实例(对象)有两种常用方法:

①,使用new创建对象.

(string) 和string.valueof_string池_string[]转string

②,调用Class类的newInstance方法,使用反射机制创建对象.

我们使用new来调用上述String类的构造方法来创建一个对象,并将其引用分配给str变量. 同时,我们注意到被调用的构造函数方法接受的参数也是String对象,恰好是“ abc”.

因此,我们必须引入另一种有关创建String对象的方法的讨论-引号包含文本. 此方法是String特有的,与新方法有很大的不同.

Stringstr =“ abc”毫无疑问,这行代码创建了String对象.

(string) 和string.valueof_string[]转string_string池

Stringa =“ abc”; Stringb =“ abc”;这怎么办?答案仍然是一个;

Stringa =“ ab” +“ cd”;在这里吗答案是三个!

Java虚拟机中有一个字符串缓存池,其中包含许多String对象,并且可以共享和使用,这是因为它大大提高了效率. String类是最后的类,其值一旦创建便无法更改string池,因此我们不必担心由于共享String对象而引起的程序混乱. 字符串池由String类维护,您可以调用intern()方法访问字符串池.

回头看看Stringa =“ abc”. 当执行该行代码时,虚拟机将首先根据String类的等于(Objectobj)在字符串池中查找值为“ abc”的现有对象. 有的,它不会创建新的对象,直接返回现有对象的引用;如果不是,请首先创建此对象,然后将其添加到字符串池,然后返回其引用.

string池_string[]转string_(string) 和string.valueof

通过使用引号包含文本创建的字符串对象之间使用“ +”连接创建的新对象将添加到字符串池中. 对于包含以新方式创建的对象(包括null)的所有“ +”连接表达式,其生成的新对象将不会添加到字符串池中. 通常建议您使用引号将文本包括在内以创建String对象,以提高效率.

说明:

堆栈(stack): 保存基本类型(或内置类型. 例如charbyteshortintlonglongfloatdoubleboolean)和对象引用,可以共享数据,速度仅次于寄存器(register),比堆(heap)快

堆: 用于存储对象.


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-239278-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 音宫翼
        音宫翼

        没准它生在战争年代又是叧一个

      • 卡尔加拉之女姆丝
        卡尔加拉之女姆丝

        还有马航是怎么回事

      热点图片
      拼命载入中...