Java常用工具_3.Java字符串
一、String类
1.创建String对象的方法
(1)String s1 = “study”;
创建一个字符串对象study,名为s1
(2)String s1 = new String();
创建一个空字符串对象,名为s2
(3)String s1 = new String(“study”);
创建一个字符串对象study,名为s3
2.String的常用方法
3.存储方式
(1)String s1 = “study”;
在栈中创建s1,在常量池中创建"study",s1指向study
(2)String s1 = new String();
在栈中创建s2,常量池中已有"study",直接指向study
(3)String s1 = new String(“study”);
在栈中创建s3,在堆中创建对象"study",s3指向study对象
(4)此时如果String s4 = new String(“study”);
虽然堆中有study对象,但会new一个新"study"对象,s4指向它
4.String的常用方法实例
package com.sutdy.string;
public class Demo1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
// 定义一个字符串"JAVA 编程 基础"
String str = "JAVA 编程 基础";
// 打印输出字符串的长度
System.out.println("字符串的长度是:" + str.length());// 10(连同空格)
// 取出字符'程'并输出
// charAt(int index) 索引
System.out.println(str.charAt(6));
// 取出子串"编程 基础"并输出
System.out.println(str.substring(5));
// 取出子串"编程"并输出
// 第二个参数表示该参数索引之前的值(不包括该参数对应的字符)
System.out.println(str.substring(5, 7));
}
}
package com.sutdy.string;
public class Demo2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
// 定义一个字符串"JAVA编程基础,我喜欢java编程"
String str = new String("JAVA编程基础,我喜欢java编程");
// 查找字符'A'在字符串中第一次出现的位置(返回索引值)
System.out.println("字符'A'在字符串中第一次出现的位置:" + str.indexOf('A'));
// 查找子串"编程"在字符串中第一次出现的位置
System.out.println("子串\"编程\"在字符串中第一次出现的位置:" + str.indexOf("编程"));
// 查找字符'A'在字符串中最后一次出现的位置(返回索引值)(区分大小写)
System.out.println("字符'A'在字符串中最后一次出现的位置:" + str.lastIndexOf('A'));
// 查找子串"编程"在字符串中最后一次出现的位置
System.out.println("子串\"编程\"在字符串中最后一次出现的位置:" + str.lastIndexOf("编程"));
// 在符串index值为8的位置开始,查找子串"编程"第一次出现的位置
System.out.println("在字符串index值为8的位置开始,查找子串\"编程\"第一次出现的位置:" + str.indexOf("编程", 8));
}
}
package com.sutdy.string;
import java.io.UnsupportedEncodingException;
public class Demo3 {
public static void main(String[] args) throws UnsupportedEncodingException {
// TODO Auto-generated method stub
// 字符串和byte数组之间的相互转换
// 定义一个字符串
String str = new String("JAVA 编程 基础");
// 将字符串转换为byte数组,并打印输出
byte arrs[] = str.getBytes();
// 如果之后想utf-8编码正常,byte arrs[] = str.getBytes("utf-8");
for (int i = 0; i < arrs.length; i++) {
System.out.print(arrs[i] + " ");
}
System.out.println();
// 将byte数组转换为字符串
String str1 = new String(arrs, "utf-8");
System.out.println(str1);// JAVA ??? ????
// 将byte数组转换为字符串
str1 = new String(arrs);
// 相当于str1 = new String(arrs, "GBK");
System.out.println(str1);// JAVA 编程 基础
}
}
二、equals和"=="的区别
equals:判断字符串中的值是否相同
“==”:判断两个字符串对象是否相同
package com.sutdy.string;
public class Demo4 {
public static void main(String[] args) {
// TODO Auto-generated method stub
// ==和equals方法的区别
// 定义三个字符串,内容都是study
String str1 = "study";
String str2 = "study";
String str3 = new String("study");
System.out.println("str1和str2的内容相同?" + (str1.equals(str2)));
System.out.println("str1和str3的内容相同?" + (str1.equals(str3)));
System.out.println("str1和str2的地址相同?" + (str1 == str2));
System.out.println("str1和str3的地址相同?" + (str1 == str3));
// str1和str2的内容相同?true
// str1和str3的内容相同?true
// str1和str2的地址相同?true
// str1和str3的地址相同?false
}
}
三、字符串的不可变性
package com.sutdy.string;
public class Demo5 {
public static void main(String[] args) {
// TODO Auto-generated method stub
// String的不可变性
// String的对象一旦被创建,则不能修改,是不可变的
// 所谓的修改其实是创建了新的对象,所指向的内存空间不变
String s1 = "study";
s1 = "hello," + s1;
// s1不在指向"study"所在的内存空间,而是指向了"hello,study"
System.out.println("s1=" + s1);
String s2 = "study";
String s3 = "hello," + s2;
System.out.println("s2=" + s2);
System.out.println("s3=" + s3);
String s4 = new String("hello,study");
System.out.println("子串:" + s4.substring(0, 5));
// s4.substring(0,5)存在常量池里
System.out.println("s4=" + s4);
}
}
四、字符串StingBuilder和StringBuffer
1.和String区别
String具有不可变性,而StringBuilder不具备
2.建议
当频繁操作字符串时,使用StringBuilder
3.StringBuilder和StringBuffer的区别
(1)二者基本相似
(2)StringBuffer是线程安全的,StringBuilder则不是,所以StringBuilder性能略高
3.StringBuilder常用方法
4.代码实现
package com.sutdy.string;
public class Demo6 {
public static void main(String[] args) {
// TODO Auto-generated method stub
// 定义一个字符串"你好"
StringBuilder str = new StringBuilder("你好");
// 在"你好"后面添加内容,将字符串编程"你好,java!"
// str.append(',');
// str.append("java!");
// System.out.println("str = " + str);
System.out.println("str = " + str.append(',').append("java!"));
// 将字符串编程"你好,JAVA!"
// 1.使用delete方法删除java,然后插入JAVA
System.out.println("替换后:" + str.delete(3, 7).insert(3, "JAVA"));
// 2.使用replace方法直接替换
System.out.println("替换后:" + str.replace(3, 7, "JAVA"));
// 在字符串"你好,JAVA!"中取出"你好"并输出
System.out.println(str.substring(0, 2));
}
}