/* 字符串: 1、字符串为常量,创建后不可改变,存储在方法区的字符串池(常量池)中 2、常用方法: // length substring charAt contains toCharArray indexOf lastIndexOf // trim endsWith startsWith toUpperCase toLowerCase // replace split // compareTo equals // 英文句子 插入单词,首字母转大写 3、StringBuffer StringBuilder 改变原来字符串,且计算速度大幅度提高 //常用方法:String 类型的相互转换 append insert replace delete //StringBuilder str=new StringBuilder("this is a text");//String 类型的相互转换 */ import java.util.Arrays; public class StringClass { public static void main(String[] args) { //1、字符串为常量,创建后不可改变,存储在方法区的字符串池(常量池)中 String name="su";//name为变量在栈中,指向字符串池(常量池)中的"su" name="yang";//字符串池(常量池)中新创建"yang",name指向字符串池(常量池)中的"yang","su"无引用变为垃圾 String yang = new String("yang");// 一个对象,一个变量,一个常量池(浪费空间) //字符串池(常量池)中寻找"yang",在堆中对象yang指向字符串池(常量池)中的"yang",栈中的变量yang指向堆中的对象yang System.out.println(name == yang);//false 比地址 System.out.println(name.equals(yang));// true 比内容 // 2、常用方法: // length substring charAt contains toCharArray indexOf lastIndexOf // trim endsWith startsWith toUpperCase toLowerCase // replace split // compareTo equals // 英文句子 插入单词,首字母转大写 String content="在编程语言中java是优秀的语言吗?"; System.out.println(content.length());// 18 字符数量 空格也算 System.out.println(content.substring(2));//截取,从第2+1到最后 System.out.println(content.charAt(content.length() - 1));// 言 小标从0开始 System.out.println(content.contains("java"));//true char[] chars = content.toCharArray();//字符数组 System.out.println(Arrays.toString(chars));// [在, 编, 程, 语, 言, 中, j, a, v, a, 是, 优, 秀, 的, 语, 言, 吗, ?] System.out.println(content.indexOf("java", 2));// 6(结果为顺数第7个) 从前找,从0位置开始 System.out.println(content.lastIndexOf("java"));// 6(结果为顺数第7个) 从后找 String txt=" A班联系方式ShangHai.txt "; txt=txt.trim();//去除前后空格 System.out.println(txt); System.out.println(txt.endsWith("txt"));//判断首尾 System.out.println(txt.startsWith("A")); System.out.println(txt.toUpperCase());//大小写转换 System.out.println(txt.toLowerCase()); String newContent = content.replace("java", "C++");// 在编程语言中C++是优秀的语言吗? System.out.println(newContent); System.out.println(txt); String[] newSplit = txt.split("[.]");//[A班联系方式ShangHai, txt] System.out.println(Arrays.toString(newSplit)); System.out.println("Hello".equals("Hello")); System.out.println("abc".compareTo("ABC"));// 32 a-A 按位置进行编码比较 System.out.println("abc".compareTo("abcd"));// -1 a-A 按位置进行编码比较,比完比位数 // 案例 String str="this is a text"; String[] s = str.split(" "); System.out.println(Arrays.toString(s)); System.out.println(str.replace("text", "practice")); System.out.println(str.replace("text", "easy "+"text"));// 在某个单词位置插入(相当于代替) String newStr="";// 英文句子 首字母大写实现 for (int i = 0; i < s.length; i++) { String first = Character.toString(s[i].charAt(0));//提取首字母 String firstUpper = first.toUpperCase();// 首字母变大写 String s1 = s[i].replaceFirst(first, firstUpper);//单词首字母替换 newStr+=s1+" ";// 单词拼接 } System.out.println(newStr); // 3、StringBuffer StringBuilder 改变原来字符串,且计算速度大幅度提高 // 常用方法:String 类型的相互转换 append insert replace delete // StringBuilder str=new StringBuilder("this is a text");//String 类型的相互转换 StringBuffer strBuffer=new StringBuffer("this is a text");//String 类型的相互转换 String strString = strBuffer.toString();// 转为String 类型 System.out.println(s); System.out.println(strBuffer.append(" one"));//追加 this is a text one System.out.println(strBuffer);// this is a text one System.out.println(strBuffer.insert(9, " easy"));//插入 this is a easy text one System.out.println(strBuffer.replace(10, 15, ""));// 选择位置替换 this is a text one System.out.println(strBuffer.delete(str.length() - 4, str.length()));// 删除 this is a text //计算时间检测 long currentTimeMillis = System.currentTimeMillis(); StringBuffer strt=new StringBuffer(); for (int i = 0; i < 100000; i++) { strt.append(i); } System.out.println("耗时"+(System.currentTimeMillis() - currentTimeMillis));// 耗时8 ms long currentTimeMillis2 = System.currentTimeMillis(); String t=""; for (int i = 0; i < 100000; i++) { t+=i; } System.out.println("耗时"+(System.currentTimeMillis() - currentTimeMillis2));//耗时6486 ms } }