第十二章:Java_常用类
1. String類:
不可變的字符序列(如:String str = “atguigu”; str += “javaEE”)底層使用char[]存放。String 是 final的。
String例子過程圖:
1. 關注于String常用的方法!
2. String類與基本數據類型、包裝類;與字符數組、字節數組
1.字符串 與基本數據類型、包裝類之間轉換
①字符串 —>基本數據類型、包裝類:調用相應的包裝類的parseXxx(String str);
②基本數據類型、包裝類—>字符串:調用字符串的重載的valueOf()方法
2.字符串與字節數組間的轉換
①字符串—->字節數組:調用字符串的getBytes()
②字節數組—->字符串:調用字符串的構造器
3.字符串與字符數組間的轉換
①字符串—->字符數組:調用字符串的toCharArray();
②字符數組—->字符串:調用字符串的構造器
4.String與StringBuffer的轉換
①String —>StringBuffer:使用StringBuffer的構造器:new StringBuffer(String str);
②StringBuffer—–>String:使用StringBuffer的toString()方法
StringBuffer類:可變的字符序列
StringBuilder類:可變的字符序列,jdk5.0新加入的,效率更高,線程不安全。
常用的方法:添加:append(…) 刪除 delete(int startIndex, int endIndex) 修改:setCharAt(int n ,char ch) 查詢:charAt(int index)
插入:insert(int index, String str) 反轉reverse() 長度:length()
注:String類的不可變性
String類方法:
import org.junit.Test;public class TestString {/** 1.字符串 與基本數據類型、包裝類之間轉換* ①字符串 --->基本數據類型、包裝類:調用相應的包裝類的parseXxx(String str);* ①基本數據類型、包裝類--->字符串:調用字符串的重載的valueOf()方法* * 2.字符串與字節數組間的轉換* ①字符串---->字節數組:調用字符串的getBytes()* ②字節數組---->字符串:調用字符串的構造器* * 3.字符串與字符數組間的轉換* ①字符串---->字符數組:調用字符串的toCharArray();* ②字符數組---->字符串:調用字符串的構造器*/@Testpublic void test5(){//1.字符串 與基本數據類型、包裝類之間轉換String str1 = "123";int i = Integer.parseInt(str1);System.out.println(i);String str2 = i + "";str2 = String.valueOf(i);System.out.println(str2);System.out.println();//2.字符串與字節數組間的轉換String str = "abcd123";byte[] b = str.getBytes();for(int j = 0;j < b.length;j++){System.out.println((char)b[j]);}String str3 = new String(b);System.out.println(str3);System.out.println();//3.字符串與字符數組間的轉換String str4 = "abc123中國人";char[] c = str4.toCharArray();for(int j = 0;j < c.length;j++){System.out.println(c[j]);}String str5 = new String(c);System.out.println(str5);}/** public String substring(int startpoint)public String substring(int start,int end):返回從start開始到end結束的一個左閉右開的子串。start可以從0開始的。pubic String replace(char oldChar,char newChar)public String replaceAll(String old,String new)public String trim():去除當前字符串中首尾出現的空格,若有多個,就去除多個。public String concat(String str):連接當前字符串與strpublic String[] split(String regex):按照regex將當前字符串拆分,拆分為多個字符串,整體返回值為String[]*/@Testpublic void test4() {String str1 = "北京尚硅谷教育北京";String str2 = "上海尚硅谷教育";String str3 = str1.substring(2, 5);System.out.println(str3);System.out.println(str1);String str4 = str1.replace("北京", "東京");System.out.println(str4);// 東京尚硅谷教育東京System.out.println(str1);// 北京尚硅谷教育北京String str5 = " abc d ";String str6 = str5.trim();System.out.println("----" + str6 + "----");System.out.println("----" + str5 + "----");String str7 = str1.concat(str2);System.out.println(str1);System.out.println(str7);System.out.println();String str8 = "abc*d-e7f-ke";String[] strs = str8.split("-");for(int i = 0;i < strs.length;i++){System.out.println(strs[i]);}}/** public int length() public char charAt(int* index):返回在指定index位置的字符。index從0開始 public boolean equals(Object* anObject):比較兩個字符串是否相等。相等返回true。否則返回false public int compareTo(String* anotherString) public int indexOf(String s):返回s字符串在當前字符串中首次出現的位置。若沒有,返回-1* public int indexOf(String s ,int* startpoint):返回s字符串從當前字符串startpoint位置開始的,首次出現的位置。 public int* lastIndexOf(String s):返回s字符串最后一次在當前字符串中出現的位置。若無,返回-1 public int* lastIndexOf(String s ,int startpoint) public boolean startsWith(String* prefix):判斷當前字符串是否以prefix開始。 public boolean endsWith(String* suffix):判斷當前字符串是否以suffix結束。 public boolean regionMatches(int* firstStart,String other,int otherStart ,int length):* 判斷當前字符串從firstStart開始的子串與另一個字符串other從otherStart開始,length長度的字串是否equals*/@Testpublic void test3() {String str1 = "abccdefghijkbcc";String str2 = "bcc";String str3 = "jkbcc";System.out.println(str2.length());System.out.println(str1.charAt(10));System.out.println(str1.equals(str2));System.out.println(str2.equals("abcc"));System.out.println(str1.compareTo(str2));System.out.println(str1.indexOf(str2, 5));System.out.println(str1.lastIndexOf(str2));System.out.println(str1.startsWith("abcd"));System.out.println(str1.regionMatches(10, str3, 0, str3.length()));}/** String:代表不可變的字符序列。底層使用char[]存放。* String 是final的。*/@Testpublic void test1(){String str1 = "JavaEE";String str2 = "JavaEE";String str3 = new String("JavaEE");String str4 = "JavaEE" + "Android";String str5 = "Android";String str6 = str1 + str5;str5 = str5 + "Handoop";String str7 = str6.intern();String str8 = "JavaEEAndroid";System.out.println(str1 == str2);//trueSystem.out.println(str1 == str3);//falseSystem.out.println(str1.equals(str3));//trueSystem.out.println(str4 == str6);//falseSystem.out.println(str4.equals(str6));//trueSystem.out.println(str7 == str4);//trueSystem.out.println(str4 == str8);//truePerson p1 = new Person("AA");Person p2 = new Person("AA");System.out.println("^_^"+ (p1.name == p2.name));//true} }class Person{String name;Person(String name){this.name = name;} }String小Demo:
import java.util.ArrayList; import java.util.Arrays; import java.util.List;/** 1.模擬一個trim方法,去除字符串兩端的空格。2.將一個字符串進行反轉。將字符串中指定部分進行反轉。比如將“abcdefg”反轉為”abfedcg”3.獲取一個字符串在另一個字符串中出現的次數。比如:獲取“ab”在 “abkkcadkabkebfkabkskab”中出現的次數4.獲取兩個字符串中最大相同子串。比如:str1 = "abcwerthelloyuiodef";str2 = "cvhellobnm"5.對字符串中字符進行自然順序排序。練習:I am a student! 寫一個方法:實現輸出 !student a am I*/ public class StringDemo {public static void main(String[] args) {String str = " abc de ";//str = " ";String str1 = myTrim(str);System.out.println(str1);String str2 = "abcdefg";String str3 = reverseString(str2,2,5);String str4 = reverseString1(str2,2,5);System.out.println(str3);//abfedcgSystem.out.println(str4);int i = getTime("abkkcadkabkebfkabkskab","abk");System.out.println(i);List<String> strs5 = getMaxSubString("abcwerthelloyuiodef","abcwecvhellobnm");System.out.println(strs5);String str6 = "aediewfn";String str7 = sort(str6);System.out.println(str7);}//5.對字符串中字符進行自然順序排序。public static String sort(String str){char[] c = str.toCharArray();Arrays.sort(c);return new String(c);}//4.獲取兩個字符串中最大相同子串。public static List<String> getMaxSubString(String str1,String str2){String maxStr = (str1.length() > str2.length())? str1 : str2;String minStr = (str1.length() < str2.length())? str1 : str2;int len = minStr.length();List<String> list = new ArrayList<>();for(int i = 0;i < len;i++){for(int x = 0,y = len - i;y <= len;x++,y++){String str = minStr.substring(x, y);if(maxStr.contains(str)){list.add(str);}}if(list.size() != 0){return list;}}return null;}//3.獲取一個字符串在另一個字符串中出現的次數。判斷str2在str1中出現的次數public static int getTime(String str1,String str2){int count = 0;int len;while((len = str1.indexOf(str2)) != -1){count++;str1 = str1.substring(len + str2.length());}return count;}//將一個字符串進行反轉。將字符串中指定部分進行反轉。(法二) 在考慮使用StringBuffer將此算法優化!public static String reverseString1(String str,int start,int end){String str1 = str.substring(0, start);for(int i = end;i >= start;i--){char c = str.charAt(i);str1 += c;}str1 += str.substring(end + 1);return str1;}//2.將一個字符串進行反轉。將字符串中指定部分進行反轉。比如將“abcdefg”反轉為”abfedcg”public static String reverseString(String str,int start,int end){char[] c = str.toCharArray();//字符串--->字符數組return reverseArray(c,start,end);}public static String reverseArray(char[] c,int start,int end){for(int i = start,j = end;i < j;i++,j--){char temp = c[i];c[i] = c[j];c[j] = temp;}//字符數組--->字符串return new String(c);}//1.模擬一個trim方法,去除字符串兩端的空格。public static String myTrim(String str){int start = 0;int end = str.length() - 1;while(start < end && str.charAt(start) == ' '){start++;}while(start < end && str.charAt(end) == ' '){end--;}return str.substring(start, end + 1);} }實現字符串反轉的三種方法
public class TestString {public static void main(String[] args) {String str1 = reverse("helloworld");System.out.println(str1);String str2 = reverse1("helloworld");System.out.println(str2);String str3 = reverse2("helloworld");System.out.println(str3);}//方法一public static String reverse(String str){char[] c = str.toCharArray();for(int x=0, y = c.length-1;x < y;x++,y--){char temp = c[x];c[x] = c[y];c[y] = temp;}return new String(c);}//方法二public static String reverse1(String str){StringBuffer sb = new StringBuffer(str);StringBuffer sb1 = sb.reverse();return sb1.toString();}//方法三public static String reverse2(String str){StringBuffer sb = new StringBuffer();for (int i = str.length()-1;i >= 0; i--) {sb.append(str.charAt(i));}return sb.toString();} }2.時間、日期類:
2.1 System類
currentTimeMillis():返回當前時間的long型值。此long值是從1970年1月1日0點0分00秒開始到當前的毫秒數。
此方法常用來計算時間差。
2.2 Date類:java.util.Date
1. Date d = new Date();//返回當前時間的Date:Mon May 12 15:17:01 CST 2014
Date d1 = new Date(15231512541241L);//返回形參處此long型值對應的日期
//getTime():返回當前日期對應的long型值。 toString()
2.3 SimpleDateFormat:java.text.SimpleDateFormat
格式化 :日期—>文本 使用SimpleDateFormat的format()方法
解析:文本—>日期 使用SimpleDateFormat的parse()方法
1.格式化1
2.格式化2
SimpleDateFormat sdf1 = new SimpleDateFormat(“EEE, d MMM yyyy HH:mm:ss Z”);
date = sdf1.format(new Date());
System.out.println(date);//星期一, 12 五月 2014 15:29:16 +0800
3.解析:
Date date1 = sdf.parse(“14-5-12 下午3:24”);
System.out.println(date1);
date1 = sdf1.parse(“星期一, 12 五月 2014 15:29:16 +0800”);
// date1 = sdf1.parse(“14-5-12 下午3:24”);
System.out.println(date1);
2.4 Calendar:日歷類
2.4.1獲取實例:Calendar c = Calendar.getInstance();
2.4.2 get()/set()/add()/date getTime()/setTime()
3.Math類
4.BigInteger BigDecimal類
總結
以上是生活随笔為你收集整理的第十二章:Java_常用类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第十一章:Java_多线程
- 下一篇: 自学编程成功概率有多少可能