String类
String类概述
- 字符串是常量,创建之后不可改变
- 字符串字面值存储在字符串池中,可以共享
public class Demo01 {
public static void main(String[] args) {
String name="zhu";//"zhu"常量存储在字符串池中
name="zhangsan";//"qq"赋值给了name变量,给字符串赋值时,并没有修改数据,而是重新开辟一个空间
String name2="zhangsan";
}
}
- String s="Hello";产生一个对象,字符串池中存储
- String s=new String("Hello");产生两个对象,堆、池各存储一个
//演示字符串的另一种创建方式
String str=new String("java");
String str2=new String("java");
System.out.println(str==str2);//fasle,比较的是地址
System.out.println(str.equals(str2));//true,比较的是数据
常用方法
- public int length(); 返回字符串的长度
- public char charAt(int index); 根据下标获取字符
- public boolean contains(String str); 判断当前字符串中是否包含某个字符串
//字符串方法的使用
String content="李易峰最帅 ";
System.out.println(content.length());//7,一个字符算一个,空格也算一个字符
System.out.println(content.charAt(0));//获取第一个字符
System.out.println(content.charAt(content.length()-1));//获取最后一个字符
System.out.println(content.contains("李"));//true
System.out.println(content.contains("祝"));//false
- public char[] toCharArray(); 将字符串转换成数组
- public int indexOf(String str); 查找str首次出现的下标,存在,就返回该下标,不存在,则返回-1
- public int lastIndexOf(String str); 查找str最后一次出现的下标
System.out.println(Arrays.toString(content.toCharArray()));//[李, 易, 峰, 最, 帅, , , 最, 酷, ,, 最, 好]
System.out.println(content.indexOf("最"));
System.out.println(content.indexOf("最",4));
System.out.println(content.lastIndexOf("最"));
- public String trim(); 去掉字符串前后的空格
- public String toUpperCase(); 将小写转换为大写
- public String toLowerCase(); 将大写转换为小写
- public boolean endWith(String str); 判断字符串是否以str结尾
- public boolean startWith(String str); 判断字符串是否以str开头
String content2=" hello world ";
System.out.println(content2.trim());//hello world
System.out.println(content2.toUpperCase());//HELLO WORLD
System.out.println(content2.toLowerCase());//hello world
String fileName="hello.java";
System.out.println(fileName.endsWith(".java"));//true
System.out.println(fileName.startsWith("hello"));//true
- public String replace(char oldChar,char newChar); 将旧字符串替换成新字符串
- public String[] split(String str); 根据str做拆分
System.out.println(content.replace("最帅","最美"));
String say="Java is the best programing language,java xahid";
String[] arr=say.split("[ ,]+");
System.out.println(arr.length);
for (String string : arr){
System.out.println(string);
}
System.out.println("================================================");
//补充两个方法equals,compareTo();
String s1="hello";
String s2="HELLO";
//equalsIgnoreCase 忽略大小写的比较
System.out.println(s1.equalsIgnoreCase(s2));//true
String s3="asfg";
String s4="errt";
System.out.println(s3.compareTo(s4));
String s5="asdf";
String s6="asdfrw";
System.out.println(s5.compareTo(s6));//前几位都相等,就用s5的字符长度-s6的字符长度--->4-6
案例演示
需求:
已知String str="this is a text":
- 将str中的单词单独获取出来
- 将str中的text替换为practice
- 在text前插入一个easy
- 将每个单词的首字母改为大写
public class Demo02 {
//案例演示
public static void main(String[] args) {
String str="this is a text";
//1.将str中的单词单独获取出来
String[] arr=str.split(" ");
for (String string:arr) {
System.out.println(string);
}
//2.将str中的text替换为practice
System.out.println(str.replace("text","practice"));
//3.在text前插入一个easy
System.out.println(str.replace("text","easy text"));
//4.将每个单词的首字母改为大写
for (int i=0;i<arr.length;i++){
char first=arr[i].charAt(0);
//把第一个字符转成大写
char upperfirst =Character.toUpperCase(first);
String news=upperfirst+arr[i].substring(1);
System.out.println(news);
}
}
}
可变字符串
- StringBuffer: 可变长字符串,JDK1.0提供,运行效率慢,线程安全
- StringBuilder:可变长字符串,JDK5.0提供,运行效率块,线程不安全
/**
* StringBuffer和StringBuiider的使用
* 和String的区别:
* 1.效率比String高
* 2.比String节省内存
*/
public class Demo03 {
public static void main(String[] args) {
//StringBuffer sb=new StringBuffer();
StringBuilder sb=new StringBuilder();
//1.append();追加
sb.append("java");
System.out.println(sb.toString());//java
sb.append("真香");
System.out.println(sb.toString());//java真香
sb.append("java不错");
System.out.println(sb.toString());// java真香java不错
//2.insert();添加
sb.insert(0,"我是第一");
System.out.println(sb.toString());//我是第一java真香java不错
//3.replace();
sb.replace(0,3,"hello");
System.out.println(sb.toString());//hello一java真香java不错
//4.delete();
sb.delete(0,5);
System.out.println(sb.toString());//一java真香java不错
//清空
sb.delete(0,sb.length());
System.out.println(sb.toString());
}
}
/**
* 验证StringBuilder效率高于String
*/
public class Demo04 {
public static void main(String[] args) {
long start=System.currentTimeMillis();
/* String string="";
for (int i=0;i<9999;i++){
string+=i;
}
System.out.println(string);*/
StringBuilder sb=new StringBuilder();
for (int i=0;i<9999;i++){
sb.append(i);
}
System.out.println(sb.toString());
long end=System.currentTimeMillis();
System.out.println("用时:"+(end-start));//String:506秒 StringBuilder:5秒
}
}