-
String表示字符串类型,属于引用数据类型,不属于基本数据类型。
-
在java中随便使用双引号括起来的都是String对象。例如“abc”“der”这是两个String对象
-
在Java中规定双引号括起来的字符串都是不可变的,也就是说“abc”在创建之后都是不可变的,不能变成abcd。
-
在jdk中双引号括起来的字符串,例如“zbc”都是直接存储在方法区中的“字符串常量池中”为什么sun公司要存在这里呢,因为字符串在实际开发中使用非常频繁,为了提高执行效率,所以放到方法区的字符串常量池中。
-
String s3=new String(”abc”);
-
String s1=”abc” 解释:s1里面存的不是”abc”,而是abc的内存地址。
-
String类中常用的构造方法:String类已经重写了toString()方法
String类中的常用方法
- compareTo()方法。
通过字典中的顺序比较,如果第一个比较不出来,就用第二个进行比较。”xyasf”.compareTo(“a”) //23
-
boolean contains(CharSequence s)方法
-
-
Boolean equlas(Object anobject);
-
boolean equalsIgnoreCase(String anotherstring)
-
-
.boolean inEmpty()判断某个字符串是否为空字符串
-
判断数组长度【数组[].length】和判断字符串长度【字符串[].length()】方法不同。
-
.int lastindexof(String str)
-
replace(target,replacement)
将所有的target字符串都替换为replacement字符
- split(String regex)
将字符串以regex拆分
- Boolean startsWith(String prefix)
判断某个字符串是否以某个字符串开始
-
toCharArray()将字符串返回一个Char类型的数组
-
String toLowerCase()
-
valueof()方法,这是String类静态方法。作用是将非字符串转换为字符串。
-
String类为什么不可变:
-
-
StringBuilder/StringBuffer为什么是可变的呢?
-
StringBuffer
- StringBuffer作用是做字符串拼接。
- 优化StringBuffer:
- 在创建StringBuffer的时候尽可能给定一个初始化容量。
- 最好减少底层数组扩容次数,预估一下,给一个大一些的初始化容量。
- 关键点:给一个合适的初始化容量,可以提高程序的执行效率。
- 初始化创建一个容量为16byte[]的数组(字符串缓冲区对象)
- 字符串拼接统一调用append()方法
StringBuilder
- 两个区别:StringBuffer中的方法都有synchronized关键字修饰表示在多线程下运行是安全的。
- StringBuilder中的方法都没有synchronized关键字修饰表示在多线程下运行是不安全的。