Java的String类
- 字符串是常量,创建之后不可改变
- 字符串字面值存储在字符池中,可以共享。
- String s = “Hello”;产生一个对象,字符串池中存储
- String s = new String(“Hello”);//产生两个对象,堆和池各存储一个。
package com.cnblogs;
//本类用于实现
public class Application {
public static void main(String[] args) {
String name = "Hello";//"hello" 存储在字符串池中
name = "张三";//"张三"赋值给name变量,给予字符串时,并没有修改数据,而是重新开辟空间
String name2 = "张三";//name2也指向字符串池的“张三”
//演示字符串的另一种创建方式 new String
String str = new String("Java是最好的编程语言");
String str2 = new String();
System.out.println(str == str2);//false
System.out.println(str.equals(str2));//false
}
}
常用方法
- public int length():返回字符串的长度
- public char charAt(int index);根据下标获取字符
- public boolean contains(String str);判断当前字符串中是否包含str
package com.cnblogs;
//本类用于实现
public class Application {
public static void main(String[] args) {
String str ="Java是最好的编程语言";
//length();
System.out.println(str.length());//15 空格也算字符
//charAt(int index)
System.out.println(str.charAt(str.length() - 1));//言
//contains(String str);
System.out.println(str.contains("Java"));//true
System.out.println(str.contains("php"));//false
}
}
- public char[] toCharArray();将字符串转成数组。
- public int indexOf(String str);查找str首次出现的下标,存在,则返回该下标;不存在,则返回-1;
- public int lastIndexOf(String str);查找字符串在当前字符串中最后一次出现的下标索引。
package com.cnblogs;
import java.util.Arrays;
//本类用于实现
public class Application {
public static void main(String[] args) {
String str ="Java是最好的编程语言,Java,Java很棒";
//toCharArray();
System.out.println(Arrays.toString(str.toCharArray()));
//[J, a, v, a, 是, 最, 好, 的, 编, 程, 语, 言, ,, J, a, v, a, ,, J, a, v, a, 很, 棒]
//indexOf();
System.out.println(str.indexOf("Java"));//0
System.out.println(str.indexOf("程"));//9
System.out.println(str.indexOf("php"));//-1
System.out.println(str.indexOf("Java" , 4));//13
//lastIndexOf();
System.out.println(str.lastIndexOf("Java"));//18
}
}
- public String trim();去掉字符串前后的空格
- public String toUpperCase();将小写转成大写
- public String toLowerCase();将大写转成小写
- public boolean endWith(String str);判断字符串是否以str结尾
- public booleanstartsWith(String str);判断字符串是否以str开头
package com.cnblogs;
import java.util.Arrays;
import java.util.Locale;
//本类用于实现
public class Application {
public static void main(String[] args) {
String str =" Hello World ";
//trim();
System.out.println(str.trim());//Hello World
//toUppercase(); toLowerCase()
System.out.println(str.toUpperCase());// HELLO WORLD
System.out.println(str.toLowerCase());// hello world
//endWith(str)
String str2 = "Application.java";
System.out.println(str2.endsWith(".java"));//true
System.out.println(str2.startsWith("Application"));//true
}
}
- public String replace(char oldChar,char newChar);将旧字符串替换成新字符串
- public String[] split(String str);根据str做拆分
package com.cnblogs;
import java.util.Arrays;
import java.util.Locale;
//本类用于实现
public class Application {
public static void main(String[] args) {
String str = "Java是最好的编程语言";
//replace(char old,char new);
System.out.println(str.replace("Java","php"));//php是最好的编程语言
//split();
String str2 = "java is the best programing language";
String str3 = "java is the best programing language,hello,World";
String str4 = "java is the best programing language,hello,,,World";
String[] arr = str2.split(" ");//以空格拆分
String[] arr2 = str3.split("[ ,]");//以空格和逗号拆分
String[] arr3 = str4.split("[ ,]+");//以(多个)空格和逗号拆分
System.out.println(arr.length);//6
System.out.println(arr2.length);//8
System.out.println(arr3.length);//8
System.out.println(Arrays.toString(arr));
//[java, is, the, best, programing, language]
System.out.println(Arrays.toString(arr2));
//[java, is, the, best, programing, language, hello, World]
System.out.println(Arrays.toString(arr3));
//[java, is, the, best, programing, language, hello, World]
}
}
package com.cnblogs;
import java.util.Arrays;
import java.util.Locale;
//本类用于实现
public class Application {
public static void main(String[] args) {
String str1 = "hello";
String str2 = "Hello";
System.out.println(str1.equals(str2));//false
System.out.println(str1.equalsIgnoreCase(str2));//忽略大小写的比较 true
String str3 = "abc";//97
String str4 = "xyz";//120
System.out.println(str3.compareTo(str4));//-23
String str5 = "abc";
String str6 = "abcxyz";
System.out.println(str5.compareTo(str6));//-3 长度相减
}
}
常用方法的练习
package com.cnblogs;
import java.util.Arrays;
public class TestString {
/*
需求:
已知String str = "this is a text"
1.将str中的单词单独获取出来
2.将str中的text替换为practice
3.将text前面插入一个easy
4.将每个单词的首字母改为大写
*/
public static void main(String[] args) {
String str = "this is a text";
//1
String[] arr = str.split(" ");
System.out.println(Arrays.toString(arr));//[this, is, a, text]
//2
String str2 = str.replace("text","practice");
System.out.println(str2);//this is a practice
//3
String[] arr2 = Arrays.copyOf(arr,5);
String ch;
ch = arr2[3];
arr2[3] = "easy";
arr2[4] = ch;
System.out.println(Arrays.toString(arr2));//[this, is, a, easy, text]
String str3 = str.replace("text","easy test");
//优解 System.out.println(str3);//this is a easy test
//4
// char[] arr3 = str.toCharArray();
// System.out.println(Arrays.toString(arr3));//[t, h, i, s, , i, s, , a, , t, e, x, t]
// arr3[0] = "T";
// arr3[5] = "I";
// arr3[8] = "A";
// arr3[10] = "T";
// for(char x : arr3){
// System.out.print(x);
// }
// //This Is A Text
//优解
for (int i = 0; i < arr.length; i++) {
//charAt() 方法用于返回指定索引处的字符。
char first = arr[i].charAt(0);
//toUpperCase() 把符转成大写
char upperfirst = Character.toUpperCase(first);
//substring(beginIndex) 返回从起始位置(beginIndex)至字符串末尾的字符串。
String news = upperfirst + arr[i].substring(1);
System.out.println(news + " ");
}
//This Is A Text
}
}
可变字符串
- StringBuffer:可变长字符串,JDK1.0提供,运行较慢,线程安全
- StringBuilder:可变长字符串,JDK5.0提供,运行效率快,线程不安全
package com.cnblogs;
public class TestString {
/*
本类测试StringBuffer和StringBuilder的使用
*/
public static void main(String[] args) {
//均可以使用以下方法
//StringBuffer str = new StringBuffer();
StringBuilder str = new StringBuilder();
//1.append();追加
str.append("java世界第一");
System.out.println(str.toString());//java世界第一
str.append(",java真香");
System.out.println(str.toString());//java世界第一,java真香
str.append(",java真不错");
System.out.println(str.toString());//java世界第一,java真香,java真不错
//insert();添加
str.insert(0,"我加在了最前面!");
System.out.println(str.toString());//我加在了最前面!java世界第一,java真香,java真不错
//replace();替换
str.replace(0,4,"我住在了");
System.out.println(str.toString());//我住在了最前面!java世界第一,java真香,java真不错
//delete();删除
str.delete(0,4);
System.out.println(str.toString());//最前面!java世界第一,java真香,java真不错
//清空
str.delete(0,str.length());
System.out.println(str.toString());//
}
}
package com.cnblogs;
public class TestString {
/*
本类测试StringBuilder的使用效率高于String
*/
public static void main(String[] args) {
// //开始时间
// long start = System.currentTimeMillis();
// String str = "";
// for (int i = 0; i < 99999; i++) {
// str += i;
// }
// System.out.println(str);
// //结束时间
// long end = System.currentTimeMillis();
// System.out.println("用时:" + (end - start));//32708
long start = System.currentTimeMillis();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 99999; i++) {
sb.append(i);
}
System.out.println(sb);
long end = System.currentTimeMillis();
System.out.println("用时:" + (end - start));//30
}
}