一:String类
String类在java.lang包中,java使用String类创建一个字符串变量,字符串变量属于对象。java把String类声明的final类,不能有类。String类对象创建后不能修改,由0或多个字符组成,包含在一对双引号之间。
String类的两种实例化方式:
- 1 . 直接赋值,在堆上分配空间。
String str = "hello";
- 2 . 传统方法。通过构造方法实例化String类对象
String str1 = new String("Hello");
常用方法:
public class StringTest03 {
public static void main(String[] args) {
//方法调用:1.调用方法 对象.方法名(); 2:传入参数;3:接受方法的返回值;
String s1="abcdefg";
char ch1=s1.charAt(2); //获取字符中指定索引位置的字符
System.out.println(ch1);
String s2=s1.concat("xyz"); //字符串的拼接
System.out.println(s2);
boolean b1=s1.contains("xyz"); //判断字符串中是否存在某个字符
boolean b2=s2.contains("xyz");
System.out.println(b1);
System.out.println(b2);
String s3="zhangsan.jpg";
boolean b3=s3.endsWith(".jpg"); //常用来判断文件名的后缀
System.out.println(s3);
byte[] bytes1=s1.getBytes(); //把字符串按照ASCII解析成byte数组 bytes1={97,98,99,100,101,102}
String s4="abcxyzdefjpqxyzmno";
int index1=s4.indexOf('x');
int index2=s4.indexOf("xyz");
System.out.println(index1);
System.out.println(index2);
String s5="bad weather fuck the weather";
String s6=s5.replace("fuck","***");
System.out.println(s6);
String s7="app/code/java/day19";
String[] split=s7.split("/"); //按照 / 拆分成字符串["app","code","java","day19"]
String s8="abcdefgh";
String s9=s8.substring(2,5);
System.out.println(s9);
}
}
二:String、StringBuffer、StringBuilder的区别
StringBuffer、StringBuilder与String的区别:
- 1.效率比String高
- 2.比String节省内存
区别:
都是final类,都不允许被继承
String类长度是不可变的,StringBuffer和StringBuilder类长度是可以改变的
StringBuffer类是线程安全的,StringBuilder不是线程安全的
不同点:
stringbuffer和stringbuilder都不同于string
string当修改字符串时,是在内存中创建一个新的字符串,并把地址传给string 对象,因此比较浪费空间,而stringbuffer和stringbuilder是在初始时创建一个容器,当修改的时候会修改容器中的内容,而不是创建一个新的容器,所以如果有一个需要频繁改变的字符串的话,最好不要使用string。
String和StringBuilder最大的区别在于 String 的内容无法修改,而 StringBuilder 的内容可以修改。频繁修改字符串的情况考虑使用StringBuilder。
string buffer和stringbuilder的方法基本上相同
运行速度:StringBuilder > StringBuffer > String
线程安全:StringBuilder < StringBuffer