String类
String概述
1 String 类在 java.lang 包下,所以使用的时候不需要导包
2 String 类代表字符串,Java 程序中的所有字符串文字(例如“abc”)都被实现为此类的实例也就是说,Java 程序中所有的双引号字符串,都是 String 类的对象
3 字符串不可变,它们的值在创建后不能被更改
String类的构造方法
常用的构造方法
|
构造器 |
说明 |
|
public String() |
创建一个空白字符串对象,不含有任何内容 |
|
public String(String original) |
根据传入的字符串内容,来创建字符串对象 |
|
public String(char[] chars) |
根据字符数组的内容,来创建字符串对象 |
|
public String(byte[] bytes) |
根据字节数组的内容,来创建字符串对象 |
示例代码
package com.wedu.string;
public class Demo2StringConstructor {
/*
String类常见构造方法:
public String() : 创建一个空白字符串对象,不含有任何内容
public String(char[] chs) : 根据字符数组的内容,来创建字符串对象
public String(String original) : 根据传入的字符串内容,来创建字符串对象
String s = “abc”; 直接赋值的方式创建字符串对象,内容就是abc
注意:
String这个类比较特殊, 打印其对象名的时候, 不会出现内存地址
而是该对象所记录的真实内容.
面向对象-继承, Object类
*/
public static void main(String[] args) {
// public String() : 创建一个空白字符串对象,不含有任何内容
String s1 = new String();
System.out.println(s1);
// public String(char[] chs) : 根据字符数组的内容,来创建字符串对象
char[] chs = {'a','b','c'};
String s2 = new String(chs);
System.out.println(s2);
// public String(String original) : 根据传入的字符串内容,来创建字符串对象
String s3 = new String("123");
System.out.println(s3);
}
}
创建字符串对象的区别对比
通过构造方法创建
通过 new 创建的字符串对象,每一次 new 都会申请一个内存空间,虽然内容相同,但是地址值不同
直接赋值方式创建
以“”方式给出的字符串,只要字符序列相同(顺序和大小写),无论在程序代码中出现几次,JVM 都只会建立一个 String 对象,并在字符串池中维护
String提供的操作字符串数据的常用方法
|
方法名 |
说明 |
|
public int length() |
获取字符串的长度返回(就是字符个数) |
|
public char charAt(int index) |
获取某个索引位置处的字符返回 |
|
public char[] toCharArray(): |
将当前字符串转换成字符数组返回 |
|
public boolean equals(Object anObject) |
判断当前字符串与另一个字符串的内容一样,一样返回true |
|
public boolean equalsIgnoreCase(String anotherString) |
判断当前字符串与另一个字符串的内容是否一样(忽略大小写) |
|
public String substring(int beginIndex, int endIndex) |
根据开始和结束索引进行截取,得到新的字符串(包前不包后) |
|
public String substring(int beginIndex) |
从传入的索引处截取,截取到末尾,得到新的字符串返回 |
|
public String replace(CharSequence target, CharSequence replacement) |
使用新值,将字符串中的旧值替换,得到新的字符串 |
|
public boolean contains(CharSequence s) |
判断字符串中是否包含了某个字符串 |
|
public boolean startsWith(String prefix) |
判断字符串是否以某个字符串内容开头,开头返回true,反之 |
|
public String[] split(String regex) |
把字符串按照某个字符串内容分割,并返回字符串数组回来 |
String使用时的注意事项
String对象的内容不可改变,被称为不可变字符串对象。
只要是以“...”方式写出的字符串对象,会存储到字符串常量池,且相同内容的字符串只存储一份
但通过new方式创建字符串对象,每new一次都会产生一个新的对象放在堆内存中。
StringBuilder类
StringBuilder类概述
概述 :StringBuilder 是一个可变的字符串类,我们可以把它看成是一个容器,这里的可变指的是 StringBuilder 对象中的内容是可变的
StringBuilder类和String类的区别
String类:内容是不可变的
StringBuilder类:内容是可变的
StringBuilder类的构造方法
常用的构造方法
| 方法名 | 说明 |
|---|---|
| public StringBuilder() | 创建一个空白可变字符串对象,不含有任何内容 |
| public StringBuilder(String str) | 根据字符串的内容,来创建可变字符串对象 |
示例代码
public class StringBuilderDemo01 {
public static void main(String[] args) {
//public StringBuilder():创建一个空白可变字符串对象,不含有任何内容
StringBuilder sb = new StringBuilder();
System.out.println("sb:" + sb);
System.out.println("sb.length():" + sb.length());
//public StringBuilder(String str):根据字符串的内容,来创建可变字符串对象
StringBuilder sb2 = new StringBuilder("hello");
System.out.println("sb2:" + sb2);
System.out.println("sb2.length():" + sb2.length());
}
}
StringBuilder常用的成员方法
|
方法名称 |
说明 |
|
public StringBuilder append(任意类型) |
添加数据并返回StringBuilder对象本身 |
|
public StringBuilder reverse() |
将对象的内容反转 |
|
public int length() |
返回对象内容长度 |
|
public String toString() |
通过toString()就可以实现把StringBuilder转换为String |
好处:StringBuilder比String更适合做字符串的修改操作,效率会更高,代码也会更简洁。
StringBuffer与StringBuilder
StringBuffer的用法与StringBuilder是一模一样的
但 StringBuilder是线程不安全的 StringBuffer是线程安全的

被折叠的 条评论
为什么被折叠?



