首页 > 编程语言 > 详细

java常用类--String类

时间:2021-03-16 14:52:04      阅读:24      评论:0      收藏:0      [点我收藏+]

java常用类--String类

1、String类的字符串在内存中的存储情况

1、String类在堆中的永久带存储着,也就是说GC垃圾回收机制不会主动去回收
2、如果采用String s = "某个字符串",这样的方式创建字符串,系统会主动从内存中找有没有这个字符串对象,如果有,则吧该字符串地址赋值给s,如果没有就新开辟一块空间,然后把地址给s

然后我们来看一段代码

public class Test {
    public static void main(String[] args) {
        String s1 = "aaa";
        String s2 = "aaa";
        System.out.println(s1 == s2);
	}
}
/**
* 输出的结果为true,说明s1和s2地址一样
*/

我们再看一段代码

public class Test {
    public static void main(String[] args) {
        String s1 = "aaa";
        String s2 = new String("aaa")
        System.out.println(s1 == s2);
	}
}
/**
* 输出的结果为false,说明s1和s2地址不一样
*/
结论:
	如果用String s1 = "aaa",这种方式创建的字符串,会自动找内存中已存在的字符串。
	如果用new 对象的形式,那么就会直接在内存中新创建地址。

2、String字符串拼接内存分析

首先,我们来看一段代码

public class Test {
    public static void main(String[] args) {
        String s1 = "s1";
        String s2 = "s2";
        String s3 = "s3";
        String s4 = s1 + s2 + s3;
	}
}

如果采用+的方式,内存分析:

技术分享图片

1、栈中创建变量s1,并在堆的永久带中开辟空间,然后把字符串地址给s1
2、同理s2,s3创建变量,并获得字符串地址
3、创建s4变量,然后s4先初始值为null,等待s1+s2+s3结果
4、首先s1+s2在永久带中创建一个新的字符串,把他们的结果拼接一起
5、再继续把s1+s2的值和s3的值拼接一起,并在堆中继续开辟一块空间。

3、String类的常用方法

返回值类型 方法 描述
char charAt(int index) 返回指定索引处的 char值。
int length() 返回字符串的长度
String[] split(String s) 将字符串按s这样值进行分割,然后返回一个字符串数组
String replace(String target,String replace) 将目标的字符串替换成套替换的字符串

java常用类--String类

原文:https://www.cnblogs.com/huangwenchao0821/p/14543059.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!