String==字符串类型
用来接收一个连续字符的形式,字符数据类型是在编译的时候就确定了
它是编译阶段会检查一次,是否存在。---因为字符串它属于大文本类型,
存储在:字符串常量池
//产生四个垃圾---字符串常量池里面的不能回收,但是它可以通过后面讲解的StringBuffer和StringBuilder去规避它
String str = "你我他";
String str1 = "你" + "我" + "他";
System.out.println(str==str1);//ture
//JDK后面发现--StringBuffer和StringBuilder专门为String的缺点做了一个弥补
//都会有一个append方法去动态追加字符串
public class test2 {
public static void main(String[] args) {
StringBuffer buffer = new StringBuffer(); //开辟空间
buffer.append("select * from tab");
buffer.append(" where id=5");
buffer.append(" and type = 1;");
String str1 = buffer.toString(); //调用toString转换字符串,将字符串放入字符串常量池中,存储和使用
System.out.println(str1); //使用完毕之后,在某一个阶段会jvm gc进行回收
}
}
//StringBuilder 它是非线程安全的,==推荐用它 StringBuffer是线程安全的。
String的API基本操作方法
public class test4 {
public static void main(String[] args) {
String str ="我今年30岁,30以后我就Work了...o";
System.out.println(str.charAt(2)); //年 根据索引位置取字符串
System.out.println(str.length()); //22
String[] str2 = str.split("30"); //我今年
for (String string : str2) { //岁,
System.out.println(string); //以后我就Work了...o
}
System.out.println(str.toLowerCase()); //我今年30岁,30以后我就work了...o
System.out.println(str.toUpperCase()); //我今年30岁,30以后我就WORK了...O
System.out.println(str.replace("30", "15")); //我今年15岁,15以后我就Work了...o
System.out.println(str.replaceAll("(\\d){1}", "20")); //我今年2020岁,2020以后我就Work了...o 可正则替换
System.out.println(str.indexOf("30")); //3
System.out.println(str.lastIndexOf("30")); //7
String url="http://www.baidu.com";
System.out.println(url.startsWith("http")); //true
System.out.println(url.endsWith("com")); //true
System.out.println(url.contains("bai")); //true
System.out.println(url.substring(7,10)); //www 含头不含尾
String s1 = " abc";
String s2 = "ABC";
System.out.println(s1.trim().equalsIgnoreCase(s2)); //true
}
}