联系方式

咨询热线:400-998-6158

点击此处免费预约试听课程»

常见问题
学习资讯
学习资讯

大数据系列之Java篇:字符串

字符串, 其实是由若干个字符组成的一个有序序列。 用String来表示一个字符串。
字符串中的内容, 用双引号括起来。 在双引号中, 字符的数量不*制, 可以是0个, 可以是1个, 也可以是多个。
String str1 = "hello world";
13.1.2. 字符串的内存分析
字符串, 是一个引用数据类型。 但是字符串的引用, 和之前在面向对象部分的引用有一点差别。
差别: 类的对象, 是在堆上开辟的空间。 字符串, 是在 常量池 中开辟的空间。 (常量池, 是在方法区中的一个子空间)
String str = "hello world";
此时, "hello world", 是在 常量池 中开辟的空间。 str里面存储的, 其实是常量池中的某一个内存的地址。
当 str = "30"; 的时候, 其实, 并不是修改了 str指向的空间中的内容。 因为常量池空间特性, 一个空间一旦开辟完成了, 里面的值是不允许修改的。 此时, 是在常量池中开辟了一块新的空间, 存储了 "30", 并把这个新的空间的地址给str赋值了。

字符串类型, 之所以选择在常量池中进行空间的开辟, 而不是在堆上。 原因是需要使用 享元原则 。

String str = new String("hello world");
String是一个Java中用来描述字符串的类, 里面是有构造方法的。
通过String类提供的构造方法, 实例化的字符串对象, 在堆上开辟的空间。 在堆空间中, 有一个内部维护的属性, 指向了常量池中的某一块空间。
13.1.3 字符串拼接的内存分析
直接使用两个字符串字面量进行拼接
其实, 就是直接将两个由双引号直接括起来的字符串进行拼接 。 类似于 String str = "hello" + "world"; 。
这里, 直接在常量池中进行空间操作。 将常量池中拼接之后的结果, 地址给 str 进行赋值。
使用一个字符串变量和其他的进行拼接
这里的拼接, 不是在常量池中直接完成的。
在这个拼接的过程中, 隐式的实例化了一个String类的对象, 在堆上开辟了空间。 堆上空间内部维护了一个指向了常量池中拼接结果的一个属性。 这个堆上的空间地址给左侧的引用进行了赋值。
13.2. 字符串的常用方法

13.2.1. 字符串的构造方法
13.2.1.1. 字符串构造方法列举

学校联系方式

更多培训课程,学习资讯,课程优惠等学校信息,请进入 杭州临安区IT培训杭州富阳区php培训杭州余杭区java培训 网站详细了解,免费咨询电话:400-998-6158

相关课程