什么是String
String是一个类,不是关键字。String字符串的形式为双引号引起来的("abc"),是一个字符串常量,不可改变的。
创建方式
//1
String name = "abc";
//2
String name = new String("abc");
//3
char[] arrays = {'a','b','c'};
String name = new String(arrays);
//4,在byte类型中存储的是ascall值
byte[] arrays = {97,98,99};
String name = new String(arrays);
字符串常量池
在内存空间中有一片空间存放字符串常量,每当String name = "abc"时,将abc放入常量池中,下次String name2 = "abc"时,自动找到常量池中的abc,所以==判断为true;
类与包装类的转换
//除了Character之外的所有包装类都提供了一个parseXxx(String s)静态方法,不能转则报错
String name = "123";
int i = Integer.parseInt(name);
System.out.println(i);
//String类里也提供了多个重载ValueOf()方法,用于将基本数据类型转换成字符串
boolean bol = true;
String s = String.valueOf(bol);
System.out.println(s);
字符串的常用处理方法
char charAt(int index)//取指定字符
//取字符串中指定位置的字符,其中,参数index指字符串中序数。序数从0开始到length-1
String name = "abcd";
System.out.println(name.charAt(2)); //c
int compareTo()
String concat(String str)//拼接两个String
//拼接两个字符串
String name1 = "abc";
String name2 = "df";
System.out.println(name1.concat(name2)); //abcdf
static String copyValueOf(char[] data)//字符数组变成字符串
char[] arrays = {'a','b','c'};
System.out.println(String.copyValueOf(arrays));//abc
String s = new String(arrays);
System.out.println(s);//abc
boolean endsWith(String suffix)//比较结尾
//判断是否结尾
String s6 = new String("abcdefghij");
String s7 = "hij";
System.out.println(s6.endsWith(s7)); //true
boolean equals(Object anObject)
byte[] getBytes()//String转换byte数组
//转换为byte数组
String s10 = "abcde";
byte[] b = s10.getBytes();
for(int i=0; i<b.length;i++){
System.out.print(b[i]+" ");//97 98 99 100 101
}
int indexOf()//查询下标位置
//找出某个字符或者字符串在该字符串中第一次出现的位置。0开始
String s11 = new String("write once, run anywhere!");
String s12 = new String("run");
System.out.println(s11.indexOf("r")); //2
System.out.println(s11.indexOf("r", 2)); //从下标2开始寻找 12
System.out.println(s11.indexOf(s12)); // 寻找run并返回r的下标 12
int lastIndexOf()//查询最后一次下标
//找出字符或者字符串在该字符串中最后一次出现的位置。
String s11 = new String("write once, run anywhere!");
System.out.println(s11.lastIndexOf("r")); //22
int length()//String长度从1开始
String substring()//取剩下所有字串
//取从某个位置开始到结束的字符串。 0开始
String s11 = new String("write once, run anywhere!");
System.out.println(s11.substring(12)); //12为r 结果为run anywhere!
toLowerCase()方法与toUpperCase()方法//大小写转换
//大小写转换
String s11 = new String("write once, run anywhere!");
System.out.println(s11.toLowerCase()); //write once, run anywhere!
System.out.println(s11.toUpperCase()); //WRITE ONCE, RUN ANYWHERE!
trim()//去掉首位空格
//去掉首位空格
String s01 = " admin ";
System.out.println(s01.trim());//admin
replace()//替换
String s02 = "我是程序员,我在学java";
String result = s02.replace("我","你");
System.out.println(result);//你是程序员,你在学java
split()//截取
//截取
String s03= "我看,今天,天气好";
String[] a = s03.split(",");
System.out.println(a[1]);//今天
StringBuffer
带缓存的String类,线程安全的可变字符序列,多用于平凡的拼接,因为String对象为字符串常量(不可改变),除非销毁否则一直存在,占用内存过大
append(String a)为添加字符串可用于拼接
toString()方法为返回一个新的String对象
//插入操作
sb.insert(0, "hello ");//在索引是0的位置插入hello,此时 sb = "hello java"
System.out.println("插入后:"+sb);
//删除操作
sb.delete(5, 6); //此时sb="hellojava"
System.out.println("删除后:"+sb);
//反转
sb.reverse(); //sb="avajolleh"
System.out.println("反转后:"+sb);
//length()表示字符串长度
System.out.println(sb.length());//输出9