2. equals
-
判断两个字符串是否相同
-
返回值类型为boolean
-
参数类型为String
3. charAt
-
返回指定索引处的char值(从0开始)
-
返回值类型:char
-
参数类型:int
4. endsWith&&startsWith
-
判断字符串是否以某个字符串结尾&&开头
-
返回值类型:boolean
-
参数类型:String
5. indexOf
-
返回子字符串第一次出现的索引
-
返回值类型:int
-
参数类型:String,int(从指定索引处开始查询,可有可无)
6. trim
-
消除字符串中的空格
-
返回值类型:String
7. isEmpty
-
判断字符串是否为空
-
返回值类型:boolean
8. replace
-
使用某字符串代替源字符串中的子字符串
-
参数类型:char
9. split
-
以字符串中的某个符号分割该字符串
-
返回值类型:String[]
-
参数类型:String(行使分隔的字符串元素,或正则表达式)
10. toCharArray
-
将字符串装转换为字符数组
-
返回值类型:char[]
-
参数类型:String
11. toUpperCase&&toLowerCase
-
将字符串转换为全大写&&全小写
-
返回值类型:String
12. intern
- 返回字符串对象的规范表示,也就是如果字符串常量池中已经创建有了该字符串的地址,则直接返回该地址值的引用,不再开辟新的内存空间
其实String类型常用的方法还有很多,在今后的开发中也会不断用到,所以我认为备一份jdk的API文档随时查阅是很有必要的
=====================================================================================
说明:
-
当对字符串重新赋值时,需要重写指定内存区域赋值,不能使用原有的value进行赋值。
-
当对现的字符串进行连接操作时,也需要重新指定内存区域赋值,不能使用原有的value进行赋值。
-
当调用String的replace()方法修改指定字符或字符串时,也需要重新指定内存区域赋值,不能使用原有的value进行赋值。
代码举例:
public class Example {
public static void main(String[] args) {
String a = "Hello"; //字面量的定义方法
String b = "Hello";
String c = new String("Hello");
String d = new String("Hello");
System.out.println(a == b); //true 比较地址值
System.out.println(a == c); //false
System.out.println(a.equals(c)); //true
System.out.println(c == d); //false
System.out.println(c.equals(d)); //true
}
}
上述代码的结果中的第一个比较结果完全是巧合,原因是字符串刚生成时调用的是同一块字符串常量池,而字符串常量池不会存在相同类型的常量,这也就意味着这两个字符串的地址值是相同的
如果我们再对a和b赋值然后再比较就能说明问题了
public class Example {
public static void main(String[] args) {
String a = "Hello";
a += "c";
String b = "Hello";
b += "c";
System.out.println(a == b);
}
}
运行结果:
我们同时也可以发现,String实例化的方式有两种:
-
通过字面量的方式定义
-
通过new + 构造器的方式
第一种方式是在方法区的字符串常量池中直接开辟空间
第二种方式则是在堆生成对象,但引用的值还是来自字符串常量池
String是引用类型,涉及到引用类型的变量的比较,都用equals方法比较稳妥
3. StringBuilder和StringBuffer:
==================================================================================================
StringBuilder和StringBuffer都是用来拼接字符串的,后期会经常用到
首先看一下String,StringBuilder,StringBuffer三者之间的相关说明:
-
String:不可变的字符序列;底层使用char[]存储
-
StringBuffer:可变的字符序列;线程安全的,效率低;底层使用char[]存储
-
StringBuilder:可变的字符序列;jdk5.0新增的,线程不安全的,效率高;底层使用char[]存储
StringBuilder和StringBuffer的内存解析:
以StringBuffer为例:
public class Example {
public static void main(String[] args) {
StringBuffer sb1 = new StringBuffer();
//查看StringBuffer的初始容量
System.out.println(sb1.capacity());
//查看StringBuffer的长度
System.out.println(sb1.length());
}
}
运行结果:
可以看到,StringBuilder的初始容量为16,没赋值时长度为零
当我们插入的字符串长度超过StringBuilder的初始容量时,StringBuilder会进行扩容,扩容的方式是:
原长度*2 + 2,同时将旧的数组赋值到新的数组中
StringBuilder和StringBuffer中的常用方法:
**最后,附一张自己面试前准备的脑图:**
![image](https://img-blog.csdnimg.cn/img_convert/4ea97e083ea637910b1cacf394e50ce9.png)
**面试前一定少不了刷题,为了方便大家复习,我分享一波个人整理的面试大全宝典**
* Java核心知识整理
![image](https://img-blog.csdnimg.cn/img_convert/9e944ac9bc0340558f5e9c3b4f188ef8.png)
* Spring全家桶(实战系列)
![image.png](https://img-blog.csdnimg.cn/img_convert/8d405df96b23b861ef11cb50d238e3c2.png)
**Step3:刷题**
既然是要面试,那么就少不了刷题,实际上春节回家后,哪儿也去不了,我自己是刷了不少面试题的,所以在面试过程中才能够做到心中有数,基本上会清楚面试过程中会问到哪些知识点,高频题又有哪些,所以刷题是面试前期准备过程中非常重要的一点。
**以下是我私藏的面试题库:**
![image](https://img-blog.csdnimg.cn/img_convert/17b1b0c1c71c8a7a1b28273671a837a7.png)
很多人感叹“学习无用”,实际上之所以产生无用论,是因为自己想要的与自己所学的匹配不上,这也就意味着自己学得远远不够。无论是学习还是工作,都应该有主动性,所以如果拥有大厂梦,那么就要自己努力去实现它。
**[CodeChina开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频】](https://codechina.csdn.net/m0_60958482/java-p7)**
既然是要面试,那么就少不了刷题,实际上春节回家后,哪儿也去不了,我自己是刷了不少面试题的,所以在面试过程中才能够做到心中有数,基本上会清楚面试过程中会问到哪些知识点,高频题又有哪些,所以刷题是面试前期准备过程中非常重要的一点。
**以下是我私藏的面试题库:**
[外链图片转存中...(img-CcFQW135-1630295196060)]
很多人感叹“学习无用”,实际上之所以产生无用论,是因为自己想要的与自己所学的匹配不上,这也就意味着自己学得远远不够。无论是学习还是工作,都应该有主动性,所以如果拥有大厂梦,那么就要自己努力去实现它。
**[CodeChina开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频】](https://codechina.csdn.net/m0_60958482/java-p7)**
最后祝愿各位身体健康,顺利拿到心仪的offer!