目錄
- String類
- 常用方法
- String類的equals()方法
- String中equals()源碼展示
- “==”和equals()有什么區別呢?
- StringBuffer類
- 常用構造方法
- 常用方法
- 代碼示例
- 面試題:String類、StringBuffer類和StringBuilder類的區別?
- 日期類
- Date類
- Calendar類
- 代碼示例
String類
String s = new String(“Hello World”); ?//創建了幾個對象
答案是:兩個,s和“Hello World”
String類是final修飾的,每次修改引用的值,都會創建一個新的對象出來
常用方法
public static void main(String[] args) {String word = "HelloWorld!!!你好世界!!!";//1.返回word這個字符串第一個字符是什么?char firstCh = word.charAt(0);//1.返回word這個字符串最后一個字符是什么?char lastCh = word.charAt(word.length()-1);System.out.println("第一個字符是 : " + firstCh);System.out.println("最后一個字符是 : " + lastCh);System.out.println("---------------------------------------");String str = "Hello";//將world!!!拼接到這個字符串后面//String newStr = str.concat("world!!!");str += "world!!!";System.out.println(str);System.out.println("----------------------------------------");String code = "public static void main(String[] args){}";boolean flag = code.contains("static");System.out.println("是否存在static?" + flag);boolean flag2 = code.contains("z");System.out.println("是否存在字母z? " + flag2);System.out.println("----------------------------------------");String yanzhengCode = "sKdgF5";String input = "skdgf5";System.out.println(yanzhengCode.equalsIgnoreCase(input));System.out.println("----------------------------------------");String email = "18037678296@163.cn.com";int firstPointIndex = email.indexOf(".");int lastPointIndex = email.lastIndexOf(".");System.out.println("\".\"第一次出現的索引位置是:" + firstPointIndex + ",最后一次出現的索引位置是:" + lastPointIndex);int qqIndex = email.indexOf("qq");if(qqIndex < 0){System.out.println("這不是一個QQ郵箱,因為郵箱地址中沒有\"qq\"這個字符串");}System.out.println("這個郵箱的長度是:" + email.length());}
public static void main(String[] args) {String uuid = UUID.randomUUID().toString();System.out.println("生成的唯一序列是:" + uuid);//將UUID中的-去掉//uuid = uuid.replace("-","^");uuid = uuid.replace("-","");System.out.println("替換后的UUID是:" + uuid);System.out.println("-----------------------------");String musicWords = "虞美人 /蔣捷 少年聽雨歌樓上 紅燭昏羅帳 中年聽雨客舟中 江闊云低 斷雁叫西風 而今聽雨僧廬下 鬢已星星也 悲歡離合總無情 一任階前 點滴到天明";String[] words = musicWords.split(" ");for (String word : words) {System.out.println(word);}System.out.println("-----------------------------");String str = "四十年來家國,三千里地山河。鳳閣龍樓連霄漢,玉樹瓊枝作煙羅。幾曾識干戈?";String lastWord = str.substring(str.lastIndexOf("。")+1);System.out.println("最后一句詩是:" + lastWord);String secoundWord = str.substring(str.indexOf("。")+1,str.lastIndexOf("。")+1);System.out.println("第二句是:" + secoundWord);System.out.println("-----------------------------");String s = "HelloWorld!!!";char[] chars = s.toCharArray();for (char aChar : chars) {System.out.print(aChar + " ");}System.out.println();System.out.println("-----------------------------");String t = "kjdsfSDLKSG41654";System.out.println(t.toLowerCase());System.out.println(t.toUpperCase());System.out.println("-----------------------------");String u = " asfkjsdgjh asda a as ";System.out.println("字符串的長度是:" + u.length());System.out.println("去掉前后空格后的長度是:" + u.trim().length());}
String類的equals()方法
equals()方法比較原理(重寫了Object類的equals()方法):equals():檢查組成字符串內容的字符是否完全一致
String中equals()源碼展示
public boolean equals(Object anObject) {if (this == anObject) {return true;}if (anObject instanceof String) {String anotherString = (String)anObject;int n = value.length;if (n == anotherString.value.length) {char v1[] = value;char v2[] = anotherString.value;int i = 0;while (n-- != 0) {if (v1[i] != v2[i])return false;i++;}return true;}}return false;}
“==”和equals()有什么區別呢?
==:判斷兩個字符串在內存中的地址,即判斷是否是同一個字符串對象
equals()是Object中的方法本身也是判斷兩個字符串在內存中的地址是否是同一個的,但是可以通過重寫Object中的equals()方法,比如String重寫的equals()方法可以重寫為判斷兩個對象的字符串內容是否相同
StringBuffer類
- StringBuffer類位于java.util包中,是String類的增強類。
- 對字符串頻繁修改時,使用StringBuffer類可以大大提高程序執行效率
常用構造方法
StringBuffer strb = new StringBuffer();
StringBuffer strb = new StringBuffer(“abc”);
常用方法
- strb.toString(); //將StringBuffer類型的字符串轉化為String類型的對象返回
- strb.append(Object obj); //將參數連接到字符串后并返回
- strb.insert (int offset, Object obj); //將參數插入到字符串指定位置后并返回
代碼示例
public static void main(String[] args) {String s = "HelloWorld,Hello";StringBuffer sb = new StringBuffer(s);sb.append("KGC");sb.append(",");sb.append("Hello");sb.append("KD50");sb.append("!!!");System.out.println(sb.toString());sb.insert("HelloWorld".length(),"!!!");System.out.println(sb.toString());/*sb.replace(sb.lastIndexOf("!!!"),sb.lastIndexOf("!!!")+3,"...");System.out.println(sb.toString());*//* sb.delete(sb.lastIndexOf("!!!"),sb.lastIndexOf("!!!")+3);System.out.println(sb.toString());*//*sb.delete("elloWorld!!!,".length()+1,"HelloWorld!!!,HelloKGC".length());System.out.println(sb.toString());*/System.out.println("---------------------------");StringBuffer money = new StringBuffer("9876543210");for (int i = money.length()-3;i>0;i-=3){money.insert(i,",");}System.out.println(money.toString());//reverse()反轉字符串}
面試題:String類、StringBuffer類和StringBuilder類的區別?
- String是不可變對象,在每次對String類型進行改變時其實都等同于生成了一個新的String對象,然后再指向新的String對象。經常改變內容的字符串最好不要使用String,因為每次生成對象都會對系統性能產生影響。
- StringBuffer是可變的字符串,在每次對StringBuffer對象進行改變時,會對StringBuffer對象本身進行操作,而不是生成新的對象。字符串經常改變的情況可使用StringBuffer,執行效率要比String類高
- JDK5.0后提供了StringBuilder,等價StringBuffer 。
StringBuilder與StringBuffer的區別:StringBuffer類是線程安全的, StringBuilder類是單線程,不提供同步,理論上效率更高
日期類
- java.util包中提供的和日期時間相關的類有Date類、Calendar類
- java.text包中提供將日期轉換為文本的類有SimpleDateFormat類
Date類
//創建日期對象
Date date = new Date();
//定制日期格式
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy年MM月dd日 HH:mm:ss");
//調用方法將日期格式化為文本
String now = sdf.format(date);
System.out.println(now);
Calendar類
- Calendar類是抽象類:用于設置和獲取日期/時間數據的特定部分
- Calendar類提供一些方法和靜態字段來操作日歷
代碼示例
public static void main(String[] args) {//創建Calendar對象Calendar calendar = Calendar.getInstance();System.out.println(calendar.get(Calendar.DAY_OF_WEEK));System.out.println(calendar.get(Calendar.DAY_OF_MONTH));System.out.println(calendar.get(Calendar.DAY_OF_YEAR));System.out.println(calendar.get(Calendar.WEEK_OF_MONTH));System.out.println(calendar.get(Calendar.WEEK_OF_YEAR));System.out.println(calendar.get(Calendar.YEAR));System.out.println(calendar.get(Calendar.MONTH) + 1);System.out.println(calendar.get(Calendar.DATE));System.out.println(calendar.get(Calendar.HOUR));System.out.println(calendar.get(Calendar.MINUTE));System.out.println(calendar.get(Calendar.SECOND));}
public static void main(String[] args) {Calendar calendar = Calendar.getInstance();calendar.set(2024,11,19);Date date = calendar.getTime();System.out.println(date);System.out.println("--------------------------");Calendar calendar2 = Calendar.getInstance();//calendar2.add(Calendar.MONTH,-1);//calendar2.add(Calendar.WEEK_OF_MONTH,-1);//calendar2.add(Calendar.DATE,-1);calendar2.add(Calendar.DATE,5);System.out.println(calendar2.getTime());System.out.println("--------------------------");long time = System.currentTimeMillis();System.out.println(time);}