可變字符串: StringBuffer
不可變字符串:String
StringBuffer類:
public class StringBufferTest {
public static void main(String[] args) {
//1.創建可變字符串
StringBuffer strBuffer = new StringBuffer();
System.out.println(strBuffer);
//2.拼接字符串
strBuffer.append("少年啊!");
System.out.println(strBuffer);
strBuffer.append("你好帥啊!");
//3.按照下標插入字符串
strBuffer.insert(0, "啊哈!");
System.out.println(strBuffer);
//4.替換字符串
strBuffer.replace(9, 10, "傻乎乎");
System.out.println(strBuffer);
//5.刪除字符串
strBuffer.delete(9, 12);
System.out.println(strBuffer);
//6.字符串反轉
strBuffer.reverse();
System.out.println(strBuffer);
/*
* 面試題:String和StringBuffer的區別?
* String:不可變字符串,對其做的任何替換,查找,修改等操作都是
* 拷貝了原字符串,對拷貝的副本進行操作並返回!
* StringBuffer:可變字符串,對其做的增刪改查操作都是直接修改
* 了原字符串!當然也可以接受返回值,是修改後的結果!
*/
String s3 = "hahaha";
String s4 = s3.toUpperCase();
System.out.println(s3);
System.out.println(s4);
//所以! 可變字符串---->不可變字符換
//方式1
String s1 = new String(strBuffer);
System.out.println(s1);
//方式2
String s2 = strBuffer.toString();
System.out.println(s2);
}
}
String 類:
public class text {
public static void main(String[] args) {
//String 是系統類!所以建文件名字需要注意!
//1.字符創的創建
//方式1:直接賦值
String str1 = "hello world";
//方式2:通過字符數組創建字符串
char[] data = {'y', 'o', 'u'};
String str2 = new String(data);
System.out.println(str2);
//方式3:通過字符數組的某一部分創建字符串
char[] charArray = {'l', 'o', 'v', 'e'};
String str3 = new String(charArray, 2, 1);
//參數2:是從哪個字符開始 參數3:是截取幾個(長度)
System.out.println(str3);
//方式4:通過字符創建另一個字符串
String str4 = new String(str1);//注意經常用於可變轉不可變字符串
System.out.println(str4);
//2.字符串比較
//方式1: == 比較的是字符串的地址
String str5 = "haha"; //常量區
String str6 = new String("haha");// 堆區
System.out.println(str5 == str6); //false
String str7 = "haha";
System.out.println(str5 == str7); //true
//方式2: equals 只比較值
System.out.println(str5.equals(str6));// true
System.out.println(str5.equals(str7));// true
//方式3:equalsIgnoreCase 忽略大小寫
str6 = "HaHa";
System.out.println(str5.equalsIgnoreCase(str6));
//3.判斷字符串的前綴和後綴
//endWith: 判斷字符串以..結尾
String str8 = "變形金剛.avi";
System.out.println(str8.endsWith("vi"));
//startWith: 判斷字符串以..開頭
String str9 = "前車之鑑,後車之師";
System.out.println(str9.startsWith("前車"));
//compareTo: 字符串比較,是逐個字符進行比較,返回值是ASCII值
str8 = "ABC";
str9 = "ABc";
System.out.println(str8.compareTo(str9));
//compareToIgnoreCase 忽略大小寫
System.out.println(str8.compareToIgnoreCase(str9));
//4.字符串的長度 length
String str10 = "you are beautiful";
System.out.println(str10.length());
str10 = "好好學習哇!";
System.out.println(str10.length());
//5.判斷字符串是否爲空
String str11 = null;
String str12 = "";
//禁止 null調用任何對象的方法
if(str11 != null && str11.length() != 0) {
System.out.println(str11 + "不是空字符串");
}else {
System.out.println(str11 + "是空字符串");
}
//isEmpty() 判斷是否爲空 如果爲空則爲true
System.out.println(str12.isEmpty());//true
//另一種方式 判斷空串
if(str12 != null && !str12.isEmpty()) {
System.out.println("不是空字符串");
}else {
System.out.println("是空字符串");
}
//6.字符串轉換
String str13 = "lucky dog";
//大寫toUpperCase()
System.out.println(str13.toUpperCase());
System.out.println(str13);//原字符串沒有變換
//小寫 toLowerCase()
str13 = "Lucky Dog";
String lowerStr = str13.toLowerCase();
System.out.println(lowerStr);
System.out.println(str13);
//字符串轉數組
char[] charArr = str13.toCharArray();
for(int i = 0; i < charArr.length; i++) {
System.out.println(charArr[i]);
}
//轉其他類型
int a = 5566;
//方式1:拼接空字符串
String s1 = a + "";
System.out.println(s1);
//方式2: String.valueOf(數據)
String s2 = String.valueOf(a);
//valueOf(此處基本數據類型皆可轉換)
//字符串轉其他類型
String s3 = "2020520";
//方式1:其他數據類型.valueOf(字符串) 即可轉換
int b = Integer.valueOf(s3);
double c = Double.valueOf(s3);
float d = Float.valueOf(s3);
//方式2: 其他類型.parse其他類型(字符串)
long e = Long.parseLong(s3);
String s4 = "true";
boolean f = Boolean.parseBoolean(s4);
/*int float long 等屬於基本數據類型(參照C語言)
* Integer Double Float Boolean 它們是Java中的包裝類型!
* 是爲了封裝一些方法而定義的類!
*/
//7.字符串拼接
String s5 = "you see see you! ";
String s6 = "one day day!";
//方式1: +
System.out.println(s5 + s6);
//方式2: concat
String s7 = s5.concat(s6);
System.out.println(s7);
//8.字符串查找
String s8 = "大學生活好啊!好嗎?你說好就好!";
//方式1:indexOf()正向查找,返回第一次出現的位置,找不到就返回-1
System.out.println(s8.indexOf("好呀"));
System.out.println(s8.lastIndexOf("好"));//最後一次出現的位置
System.out.println(s8.indexOf("好", 5));
//方式2:contains 是否包含 boolean類型返回值
System.out.println(s8.contains("生活好"));
//9.獲取字符串的一部分
String str = "矮是什麼感覺?就是所有人看見我都擡不起頭";
//方式1: charAt() 通過下標 獲取某個字符
System.out.println(str.charAt(2));
//方式2: substring()
System.out.println(str.substring(7));
System.out.println(str.substring(10, 15));
//10.替換字符串
String s9 = "瘦,走路是什麼感覺?應該就是走路都得扶着電線杆";
//方式1:replace() 就是把字符串中所有匹配到的字符串進行替換
System.out.println(s9.replace("走路", "颳風"));
//方式2:replaceFirst() 只替換第一個
System.out.println(s9.replaceFirst("走路", "放屁"));
//11.分割字符串 就是按照某一個字符 將字符串切成數組
// \\轉義字符
String s10 = "www|cctv|com";
String[] strArray = s10.split("\\|");
for(int i = 0; i < strArray.length; i++) {
System.out.println(strArray[i]);
}
s10 = "www.cctv|com";
// split(" | ") 單豎槓 是或者! 所以才需要添加\\轉義
strArray = s10.split("\\.|\\|");
for(int i = 0; i < strArray.length; i++) {
System.out.println(strArray[i]);
}
//12. 去除收尾空格 trim
String s11 = " 哈哈";
System.out.println(s11);
System.out.println(s11.trim());
//練習: "財色兼收" 截個'財' 截個'色'
String s12 = "財色兼收";
System.out.println(s12.charAt(0) + " " + s12.charAt(1));
System.out.println(s12.substring(0,1) + " " + s12.substring(1, 2));
//練習:定義一段英文字符串, 使用以上所學將這
//一段英文改爲每個單詞首字母大寫
String s = "you see see you! one day day";
String[] sArray = s.split(" ");
String newStr = "";
for(int i = 0; i < sArray.length; i++) {
String firstChar = String.valueOf(sArray[i].charAt(0));
// System.out.println(firstChar);
String upperStr = firstChar.toUpperCase();
System.out.println(upperStr);
//替換
String firstUppercase = sArray[i].replace(firstChar, upperStr);
newStr = newStr + firstUppercase + " ";
}
System.out.println(newStr);
}
}