- 字符串是常量,创建之后不可改变
- 字符串字面值存储在字符串池中,可以共享
String name = "hello"; //"hello"常量存在字符串池中
name = "zhangsan"; //给字符串赋值时,并没有修改数据,而是重新开辟了一个空间,此时"hello"为垃圾
String name2 = "zhangsan"; //"zhangsan"已存在,即直接共享给name2
System.out.println(name == name2); //true
//另外一种字符串创建方式
String str1 = new String("java");
String str2 = new String("java");
System.out.println(str1 == str2); //false
-
length()方法
- public int length()
- 返回字符串长度
String content = "你好,java!"; System.out.println(content.length()); //8
-
charAt()方法
- public char charAt(int index)
- 根据下标获取字符
String content = "你好,java!"; System.out.println(content.charAt(content.length()-1)); //!
-
contains()方法
- public boolean cotains(String str)
- 判断当前字符串中是否包含str
String content = "你好,java!"; System.out.println(content.contains("java")); //true
-
toCharArray()方法
- public char[] toCharArray()
- 将字符串转换成数组
String content = "你好,java!"; System.out.println(Arrays.toString(content.toCharArray())); //[你, 好, ,, j, a, v, a, !]
-
indexOf()方法
- public int indexOf(String str)
- 查找str首次出现的下标,存在则返回该下标,否则返回-1
String content = "a你好,java!"; System.out.println(content.indexOf("a")); //0 System.out.println(content.indexOf("a",2)); //5,从下标为2开始找
-
lastIndexOf()方法
- public int lastIndexOf(String str)
- 查找字符串在当前字符串最后一次出现的下标索引
String content = "a你好,java!"; System.out.println(content.lastIndexOf("a")); //7
-
trim()方法
- public String trim()
- 去掉字符串前后的空格
String content = " hello world "; System.out.println(content.trim()); //hello world
-
toUpperCase()方法
- public String toUpperCase()
- 将小写转成大写
String content = "hello world"; System.out.println(content.toUpperCase()); //HELLO WORLD
-
toLowerCase()方法
- public String toLowerCase()
- 将大写转成小写
String content = "HELLO WORLD"; System.out.println(content.toLowerCase()); //hello world
-
endWith()方法
- public boolean endWith(String str)
- 判断字符串是否以str结尾
String content = "你好,java!"; System.out.println(content.endWith("a")); //false
-
startWith()方法
- public boolean startWith(String str)
- 判断字符串是否以str开头
String content = "你好,java!"; System.out.println(content.startWith("你好")); //true
-
replace()方法
- public String replace(char oldChar,char newChar)
- 将旧字符串替换成新字符串
String content = "你好,java!"; System.out.println(content.replace("你好","hello")); //hello,java
-
split()方法
- public String[] split(String str)
- 根据str做拆分
String content = "hello world,hello java"; String[] arr = content.split("[ ,]+"); //用空格和逗号进行拆分,+号表示空格和逗号可以多现多个 for(String x : arr){ System.out.println(x); } /*运行结果: hello world hello java */
-
equalsIgnoreCase()方法
- 忽略大小写进行比较
String s1 = "java"; String s2 = "JAVA"; System.out.println(s1.equalsIgnoreCase(s2)); //true
-
compare()方法
- 比较大小(实际上比的是两个字符串在数据字典里面的位置)
String s1 = "abc"; //a --> 97 String s2 = "xyz"; //x --> 120 System.out.println(s1.compare(s2)); //97-120=-23 String s3 = "abc"; String s4 = "abcxyz"; System.out.println(s1.compare(s2)); //-3,前面字符相同比字符串长度
例:已知一个字符串String str = “this is a text”;
1.将str中的单词单独获取出来
2.将str中的text替换成practice
3.在text前面插入一个easy
4.将每个单词的首字符改为大写
String str = "this is a text";
//1.将str中的单词单独获取出来
String[] arr = str.split(" ");
for(String x : arr){
System.out.println(x);
}
//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 newStr = upperfirst + arr[i].substring(1); //substring截取字符串
System.out.println(newStr);
}
-
可变长字符串
-
StringBuffer:可变长字符串,jdk1.0提供,运行效率慢,线程安全,比String效率高,比String节省空间
-
StringBuilder:可变长字符串,jdk5.0提供,运行效率快,线程不安全,比String效率高,比String节省空间
//StringBuffer和StringBuilder用法一样 StringBuffer sb = new StringBuffer(); //StringBuilder sb = new StringBuilder(); //1.append();追加 sb.append("hello,java"); sb.append("hello,world"); System.out.println(sb.toString()); //hello,javahello,world //2.insert();添加 sb.insert(0,"The First"); System.out.println(sb.toString()); //The Firsthello,javahello,world //3.replace();替换 sb.replace(0,3,"I am"); //替换[0,3)的字符 System.out.println(sb.toString()); //I am Firsthello,javahello,world //4.delete();删除 sb.delete(0,5); //替换[0,5)的字符 System.out.println(sb.toString()); //Firsthello,javahello,world //清空 sb.delete(0,sb.length());
-