String
String类继承了object类,用来描述字符串。Java中定义了String类用来处理字符串,并提供了一系列操作字符串的方法,他们都封装在java.lang包中,因此不需要导入包就可以直接使用。
String类使用了final修饰符,表示该类不可以被重写。
String类是不可改变的,所以你一旦创建了String对象,那它的值就无法改变了。
String s1 = "abc"; // 常量池
String s2 = new String("abc"); // 堆内存中
System.out.println(s1==s2); // false两个对象的地址值不一样。
System.out.println(s1.equals(s2)); // true
常用方法
方法 | 描述 |
---|---|
length() | 返回字符串的长度 |
charAt(int Index) | 返回index位置处的字符 |
substring(int beginIndex) | 返回从beginindex位置开始截取直到该字符串末尾 |
substring(int beginIndex,int endIndex) | 返回从beginindex位置开始截取直到endIndex-1位置的字串 |
concat(String str) | 连接字符串 |
indexOf(String str) | 查找匹配某字符串第一次出现的位置 |
replace(CharSequence old,CharSequence new) | 字符串替换 |
contains(CharSequence s) | 是否包含该字符串,返回布尔值 |
split(String regex) | 字符串分割 |
isEmpty() | 判断字符串是否为空,当字符串长度为0时返回true |
trim() | 返回去掉字符串两端空格的新字符串 |
toLowerCase() | 将字符串转换为小写 |
toUpperCase() | 将字符串转换为大写 |
euqals(Object object) | 比较是否相等 |
Java StringBuffer 和 StringBuilder 类
StringBuffer:字符串缓冲区,跟String非常相似,都是用来存字符串数据的.
StringBuilder跟String Buffer一样,两个类兼容的,只是它不保证线程安全。
当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。
和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。
StringBuilder sb=new StringBuilder(10);
sb.append("I love");
System.out.println(sb);
sb.append("Java")
System.out.println(sb);
StringBuffer类的常用方法
方法 | 描述 |
---|---|
append(任何类型参数) | 添加内容 |
insert(int offset,任何类型参数) | 任意位置插入内容 |
reverse() | 字符串反转 |
replace(int start,int end,String str) | 指定部分替换 |
subSequence(int start,int end) | 返回截取的字符串,返回类型可以转换 |
delete(int start,int end) | 删除指定部分内容 |
indexOf(String str) | 返回查找的字符串第一次出现的位置 |
euqals(Object object) | 比较是否相等 |
String、StringBuffer 和 StringBuilder 的区别
String:字符串常量,字符串长度不可变。Java中String 是immutable(不可变)的。用于存放字符的数组被声明为final的,因此只能赋值一次,不可再更改。
StringBuffer:字符串变量(Synchronized,即线程安全)。如果要频繁对字符串内容进行修改,出于效率考虑最好使用 StringBuffer,如果想转成 String 类型,可以调用 StringBuffer 的 toString() 方法。Java.lang.StringBuffer 线程安全的可变字符序列。在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。可将字符串缓冲区安全地用于多个线程。
StringBuilder:字符串变量(非线程安全)。在内部 StringBuilder 对象被当作是一个包含字符序列的变长数组。
基本原则:
如果要操作少量的数据用 String ;
单线程操作大量数据用StringBuilder ;
多线程操作大量数据,用StringBuffer。