创建String对象的方法
String s1="hello";//创建一个字符串对象hello,名为s1
String s2=new String();//创建一个空字符串对象,名为s2
String s3=new String("world");//创建一个字符串对象world,名为s3
特别注意: String对象在Java中不是基本类型、是属于引用类型。
java中字符串的不变性
String对象创建后则不能被修改,是不可变的,所谓得修改其实是创建了新的对象,所指向得内存空间不同。
一个字符串在内存中创建,则这个字符串将不可改变,如果需要一个可以改变的字符串,我们可以使用StringBuffer或者StringBuilder
每次new一个字符串就是产生一个新的对象,即便两个字符串的内容是否相同,应使用"equals"方法。
String s1 ="hello";
String s2 ="hello";
String s3 =new String("hello");
String s4 =new String("hello");
//多次出现的字符串常量,java编译程序只能创建一个,所以返回Ture
System.out.println(s1==s2);//ture
//s1和s3是不同的对象,所以返回false
System.out.println(s1==s3);//false
//s3和s4是不同的对象,所以返回false
System.out.println(s3==s4);//false
s2=s1+"_world";
//s2被修改,指向的是另一个新的内存空间
System.out.println(s1==s2);//false
}
方法 | 说明 |
---|---|
int length() | 返回当前字符串的长度 |
int indexOf(int ch) | 查找 ch字符串在该字符串中第一次出现的位置 |
int indexOf(String str) | 查找str字符串在该字符串中第一次出现的位置 |
int lastIndexOf(int ch) | 查找ch字符在该字符串中最后一次出现的位置 |
int lastIndexOf(String str) | 查找str字符串在改字符串中最后一次出现的位置 |
String substring(int beginIndex) | 获取从beginIndex位置开始到结束的字符串 |
String substring(int beginIndex,int endIndex) | 获取从beginIndex位置开始到endIndex的字符串 |
String trim() | 返回去除了前后空格的字符串 |
boolean equals(object obj) | 将该字符串与指定对象比较,返回ture或false |
String toLowerCase() | 将字符串转换为小写 |
String toUpperCase() | 将字符串转换为大写 |
char charAt(int index()) | 获取字符串中指定位置的字符 |
String[] split(String regex,int limit) | 将字符串分割为子字符串,返回字符串数组 |
byte[] getBytes() | 将该字符串转换为byte数组 |
PS:
字节是计算机存储信息的基本单位,1个字节等于8位,gbk编码中1个汉字字符存储需要2个字节,1个英文字符存储需要一个字节。
StringBuilder和StringBuffer
当频繁的操作字符串的时,就会额外产生很多临时变量,使用StringBuilder或StringBuffer就可以避免这个问题。
StringBuilder是没有实现线程安全,而StringBuilder实现了线程安全。
StringBuilder中常用方法:
方法 | 说明 |
---|---|
StringBuilder append(参数) | 追加内容到当前StringBuilder对象的末尾 |
StringBuilder insert(位置,参数) | 将内容插入到StringBuilder对象的指定位置 |
String toString() | 将StringBuilder对象转换为String对象 |
int length() | 获取字符串的长度 |