/*
字符串:
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
}
}