String s = "H";
产生一个对象,字符串池中存储String s = new String("H");
产生两个对象,堆、池中各存储一个。堆中存储new的对象,指向字符串池的字符串,浪费空间equals()
,String重写了equals方法String str = new String("H"); String str2 = new String("H"); System.out.println(str==str2);//false,比较的是对象的地址 System.out.println(str.equals(str2));//true,比较字符串的内容
length()
:返回字符串的长度test.length()//10
charAt(int index)
:返回某个位置的字符,下标越界会报错test.charAt(4)//是
contains(String str)
:是否包含某个字符串test.contains("java")//true
toCharArray()
:将字符串转换成数组Arrays.toString(test.toCharArray();//[j, a, v, a, 是, 最, 好, 的, 语, 言]
indexOf(String str, n)
:(从索引n开始)查找str首次出现的下标,存在返回下标,不存在返回-1test.indexOf("java")//0
LastIndexOf(String str, n)
:(从索引n开始)查找str最后一次出现的下标,存在返回下标,不存在返回-1test.lastIndexOf("b")//-1
trim()
:去掉字符串前后的空格toUpperCase()
:小写转大写toLowerCase()
:大写转小写endWith(String str)
:判断字符串是否以str结尾startWith(String str)
:判断是否以str开头test.replace("java","python")//python是最好的语言
split(String str)
:根据str做拆分
spilt(" ")
:按照空格拆分[]
表示选择其中的内容,可以用 []
中的其中一个内容进行拆分+
代表切分符号可以出现多个但只切分一次String s = "java is the best programing language, php not"; String[] arr = s.split("[ ,]+");//[]表示选择其中的内容,可以用空格或逗号拆分;+代表切分符号可以出现多个但只切分一次 for (String string : arr) { System.out.println(string); } //输出 java is the best programing language php not
equals()
:比较字符串的内容是否相同equalsIgnoreCase()
:忽略大小写的比较compareTo()
:按照字典表的顺序比较大小String s3 = "xdfg"; String s4 = "asdzb"; System.out.println(s3.compareTo(s4));//23首字母的序号差值,正数则s3>s4
当进行比较的两个字符串的长度不同,但较短的字符串的内容和较长的前部完全相同时,比较的是字符串的长度
String s5 = "asd"; String s6 = "asdfg"; System.out.println(s5.compareTo(s6));//-2,返回值是字符的长度差,相等时为0
substring(int beginIndex, int endIndex)
:切片StringBuffer
:可变长字符串,JDK1,运行效率慢,线程安全StringBuilder
:可边长字符串,JDK5,运行效率快,线程不安全String
的区别:
append(内容)
:追加各种类型的内容insert(int offset, 内容)
:在指定索引处插入内容replace(int start, int end, 替换内容)
:在指定位置进行替换delete(int start, int end)
:删除索引中的内容delete(0, str.length())
:清空内容public static void main(String[] args) { //开始时间 long start = System.currentTimeMillis(); //String 312 // String string = ""; // for (int i = 0; i < 9999; i++) { // string+=i; // } // System.out.println(string); //StringBuilder:3 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)); }