public class TestString {
public static void main(String[] args) {
//字符串常量会被放入常量池中
String string="abc";
String string2=new String("def");
String string3="abd"+"dedsd";
String string4="18"+19; //不是加法 是字符串连接符
System.out.println(string4);
System.out.println("##################");
//10 和 11是同一对象 在常量池中取得是同一个 12新建了对象
String str10="gaoqi";
String str11="gaoqi";
String str12=new String("gaoqi");
System.out.println(str10==str11);//ture
System.out.println(str12==str11);//false
System.out.println("$$$$$$$$$$$$$");
//通常比较字符串时,使用equals 比较字符(不比较字符的时候,equals仍然比较的是地址)
// ==比较的是地址是否一样,
System.out.println(str12.equals(str11));
}
public class TestString2 {
public static void main(String[] args) {
String s1="core java";
String s2="Core java";
System.out.println(s1.length());//提取字符串的长度
System.out.println(s1.charAt(3));//提取下标为3的字符
System.out.println(s2.length());//字符串的长度 空格也算一个长度
System.out.println(s1.equals(s2));//比较两个字符串是否相等
System.out.println(s1.equalsIgnoreCase(s2));//比较两个字符串,忽略大小写
System.out.println(s1.indexOf("java"));//字符串s1中是否包含java,返回第一次出现的位置,没有则返回-1
System.out.println(s1.indexOf("apple"));//字符串s1中是否包含apple
String s=s1.replace(' ','&');//将s1中的空格替换成&
System.out.println("result is:"+s);
String s3="";
String s4="How are you?";
System.out.println(s1.startsWith("How"));//是否以How开头
System.out.println(s1.endsWith("you"));//是否以you结尾
s3=s4.substring(4);//提取子字符串,从下表为4的开始到字符串结尾为止
System.out.println(s3);
s3=s1.substring(4,7);//提取子字符串,下标[ 4,7) 不包括7
System.out.println(s3);
s3=s1.toLowerCase();//转小写
System.out.println(s3);
s3=s1.toUpperCase();//转大写
System.out.println(s3);
s2=" How old are you? ";
s=s2.trim();//去除字符串首尾的空格,注意:中间的空格不能去除
System.out.println(s);
System.out.println(s2);//string是不可变字符串,s2不变
//将字符串转化为字符串数组(字符串的切割,涉及到了正则表达式)
s1="张三,李四,王五";
String[] arr=s1.split(",");
for (int i=0;i<arr.length;i++) {System.out.println(arr[i]);}
//将字符串转化为字符数组
char[] arr2=s1.toCharArray();
for (int i=0;i<arr.length;i++) {System.out.println(arr2[i]);}
//将字符串转化为字节数组
s1="ab你";
byte[] bytes=s1.getBytes();
for (int i = 0; i < bytes.length; i++) {System.out.println(bytes[i]);}
}
}
String string="aaaabbbb"; //本质上是一个char value[]-字符数组。有final修饰,只能赋值一次,故不可变
String string2=string.substring(2,5);
System.out.println(string);
System.out.println(string2);
//编译器做了优化,直接在编译的时候将字符串进行拼接
String str1="hello"+"java"; //相当于str1="hello java";
String str2="hello java";
System.out.println(str1==str2); //true
String string3="hello";
String string4="java";
//编译的时候不知道变量中存储的是什么,所以没法在编译时优化
String str5=string3+string4;
System.out.println(str2==str5);//false
System.out.println(str2.equals(str5));//字符串比较时,用equals不用==