String是我们日常开发用到最多的数据类型之一,我记得一次面试的时候,面试官问我,String是基本数据类型吗?我回答,是,他问,确定?我说,确定!现在想起来真是笑死了,确实是自己知识不严谨,然后面试官也太故意了吧。。。
这里是花了一块钱的教程链接,本文也是博主学习后的总结
- String内部实际是采用char数组的方式存数据的
- String有4个构造方法:
1、以String为参数。
2、以char数组为参数。
3、以StringBuilder为参数。
4、以StringBuffer为参数。 - 比较两个String的方法(自行观察源码更容易理解):
- equals方法:
核心是对两个String的每个字符作比较 - compareTo方法:
底层是一个字符一个字符的比较(这里是将字符转换成char类型),如果出现字符不一致的情况则返回char1 - char2。 - equals方法和comparaTo方法都可以用来比较字符串,区别是前者返回布尔值,后者返回数字,0则为一致,其他都是不一致。
- 其他方法:
indexOf方法,lastIndexOf方法,contains方法,split方法,join方法
问题:
- String在JVM中是如何存放的?
- String类为何用final修饰?
- StringBuilder和StringBuffer还有String三者的区别。
思考:
- String在内存中分为对象和常量池两种方法存储的,new String()的方式是在堆中存储,String str = "string"则是存在常量池中的。
- String类被final修饰,代表它是不可以被修改的,我们每次的字符串拼接都会生成一个新的字符串,所以循环拼接的时候要使用StringBuilder或者StringBuffer,而这两者的区别则是StringBuffer是线程安全的,另一个不是。