深入浅出String

String类是字符串类,和他一起实现CharSequence接口的还有StringBuffer、StringBuilder
三个的区别:
String:是不可变字符串,被final关键字所修饰;
StringBuffer:可变字符串,线程安全;
StringBuilder:可变字符串,线程不安全;
所以运行速度是StringBuIlder > StringBuffer > String

内存分析

在JVM中的方法区存中是有一个常量池的,我们的字符串就是存放在常量池中。
当我们使用String str = “ABCD”;创建一个字符串时
内存中要么是创建一个对象,要么不创建:
1、首先会到常量池中查看一下有没有存在"ABCD"这个字符串常量;
2、如果有了,就直接使用,不会创建新的地址;
3、如果常量池中没有,就会在常量池中创建出"ABCD"这个对象;
当我们使用String str2 = new String(“ABCD”);时
内存中至少会创建一个对象,因为使用了new关键字,所以在堆中一定会开辟出一个空间,也就至少会创建一个对象:
在这里插入图片描述
下面总结一下String常用的方法:

String str = "abcd";
String st = "ab";
str.toCharArray()		//转换成char类型数组
str.charAt(2)			//返回索引为2的字符
str.indexOf(st)			//返回st在字符串中第一次出现的位置
str.lastIndexOf(st)		//返回st在字符串中最后一次出现的位置
str.toUpperCase()		//所有字母变大写
str.toLowerCase() 		//所有字母变小写
str.equalsIgnoreCase()	//忽略大小写进行比较是否相等
str.startsWith(st)		//是否以st开头
str.substring(1,2)		//截取字符串,结果为"b"

猜你喜欢

转载自blog.csdn.net/qq_42088487/article/details/86624131