1. 程式人生 > 實用技巧 >Java常用類總結

Java常用類總結

一:主要內容

二:字串相關類

  1 package TestString;
  2 
  3 import org.junit.Test;
  4 
  5 public class TestString {
  6     /*
  7      * String:代表不可變的字元序列。底層使用char[]存放。
  8      * String 是final的。
  9      */
 10     @Test
 11     public void test1(){
 12         String str1 = "aa";
 13
String str2 = "aa"; 14 String str3 = new String("aa");//在堆裡面建立一塊新地址,儲存的value是指定常量池裡面aa的地址引用 15 System.out.println(str1==str2);//true 指向常量池同一塊地址 16 System.out.println(str1==str3);//false 兩者地址不同 17 System.out.println(str1.equals(str3));//true 比較的是內容 18 String str4 = "123";
19 String str5 = str1+str4; 20 String str6 = "aa"+"123"; 21 String str7 = "aa123"; 22 System.out.println(str5 == str7);//false 含有變數的表示式相當於在堆裡面產生了一個新地址 23 System.out.println(str7 == str6);//true 指向同一塊地址 24 System.out.println(str6 == str5.intern());//true 取得是地址裡面儲存的引用地址和str6指向的是同一塊記憶體
25 System.out.println(str5 == str6.intern());//false 對str6無效 26 Person p1 = new Person("AAA"); 27 Person p2 = new Person("AAA"); 28 System.out.println(p1.name == p2.name);//true 29 } 30 /* 31 * public int length() public char charAt(int 32 * index):返回在指定index位置的字元。index從0開始 public boolean equals(Object 33 * anObject):比較兩個字串是否相等。相等返回true。否則返回false public int compareTo(String 34 * anotherString) public int indexOf(String s):返回s字串在當前字串中首次出現的位置。若沒有,返回-1 35 * public int indexOf(String s ,int 36 * startpoint):返回s字串從當前字串startpoint位置開始的,首次出現的位置。 public int 37 * lastIndexOf(String s):返回s字串最後一次在當前字串中出現的位置。若無,返回-1 public int 38 * lastIndexOf(String s ,int startpoint) public boolean startsWith(String 39 * prefix):判斷當前字串是否以prefix開始。 public boolean endsWith(String 40 * suffix):判斷當前字串是否以suffix結束。 public boolean regionMatches(int 41 * firstStart,String other,int otherStart ,int length): 42 * 判斷當前字串從firstStart開始的子串與另一個字串other從otherStart開始,length長度的字串是否equals 43 */ 44 @Test 45 public void test2(){ 46 String str = "qwqeqdqwd"; 47 System.out.println(str.length()); 48 System.out.println(str.charAt(0)); 49 System.out.println(str.compareTo("aaaaaa")); 50 System.out.println(str.indexOf("w",2)); 51 System.out.println(str.lastIndexOf("w")); 52 System.out.println(str.startsWith("q")); 53 System.out.println(str.regionMatches(1,"wqe",0,"qd".length())); 54 } 55 56 /* 57 * public String substring(int startpoint) 58 public String substring(int start,int end):返回從start開始到end結束的一個左閉右開的子串。start可以從0開始的。 59 pubic String replace(char oldChar,char newChar) 60 public String replaceAll(String old,String new) 61 public String trim():去除當前字串中首尾出現的空格,若有多個,就去除多個。 62 public String concat(String str):連線當前字串與str 63 public String[] split(String regex):按照regex將當前字串拆分,拆分為多個字串,整體返回值為String[] 64 65 */ 66 @Test 67 public void test3(){ 68 String str1 = "北京尚矽谷教育北京"; 69 String str2 = "上海尚矽谷教育"; 70 String str3 = str1.substring(2, 5); 71 System.out.println(str3); 72 System.out.println(str1); 73 String str4 = str1.replace("尚矽谷","尚學堂"); 74 System.out.println(str4); 75 System.out.println("127.0.0.1".replaceAll("\\d","*"));//replaceAll支援正則表示式的方式進行替換 76 System.out.println(" 123 4 ".trim()); 77 System.out.println("aa".concat("bb")); 78 String ip = "127.0.0.1"; 79 String[] array = ip.split("\\.");//split是按照正則表示式的方式進行切割 80 for (int i = 0; i < array.length; i++) { 81 System.out.print(array[i]+" "); 82 } 83 } 84 /* 85 * 1.字串 與基本資料型別、包裝類之間轉換 86 * ①字串 --->基本資料型別、包裝類:呼叫相應的包裝類的parseXxx(String str); 87 * ①基本資料型別、包裝類--->字串:呼叫字串的過載的valueOf()方法 88 * 89 * 2.字串與位元組陣列間的轉換 90 * ①字串---->位元組陣列:呼叫字串的getBytes() 91 * ②位元組陣列---->字串:呼叫字串的構造器 92 * 93 * 3.字串與字元陣列間的轉換 94 * ①字串---->字元陣列:呼叫字串的toCharArray(); 95 * ②字元陣列---->字串:呼叫字串的構造器 96 */ 97 @Test 98 public void test4(){ 99 //1.字串 與基本資料型別、包裝類之間轉換 100 String str1 = "123"; 101 int i = Integer.parseInt(str1); 102 System.out.println(Boolean.parseBoolean("true")); 103 System.out.println(i); 104 String str2 = i + ""; 105 str2 = String.valueOf(i); 106 System.out.println(str2); 107 System.out.println(); 108 //2.字串與位元組陣列間的轉換 109 String str = "abcd123"; 110 byte[] b = str.getBytes(); 111 for(int j = 0;j < b.length;j++){ 112 System.out.println((char)b[j]); 113 } 114 String str3 = new String(b); 115 System.out.println(str3); 116 System.out.println(); 117 //3.字串與字元陣列間的轉換 118 String str4 = "abc123中國人"; 119 char[] c = str4.toCharArray(); 120 for(int j = 0;j < c.length;j++){ 121 System.out.println(c[j]); 122 } 123 String str5 = new String(c); 124 System.out.println(str5); 125 } 126 } 127 class Person{ 128 String name; 129 Person(String name){ 130 this.name = name; 131 } 132 }

三:StringBuilder和StringBuffer

 1 package TestString;
 2 
 3 import org.junit.Test;
 4 
 5 public class TestStringBuffer {
 6     /*
 7      * 對比String,StringBuffer,StringBuilder三者在新增上的效率:
 8      * 效率從高到底: StringBuilder > StringBuffer > String
 9      * StringBuffer支援在原地址上進行內容的修改,是執行緒安全的,StringBuilder不是執行緒安全的,但是速度很快
10      */
11     public static void main(String[] args) {
12         String text = "";
13         long startTime = 0L;
14         long endTime = 0L;
15         StringBuffer buffer = new StringBuffer("");
16         StringBuilder builder = new StringBuilder("");
17 
18         startTime = System.currentTimeMillis();
19         for(int i = 0;i<20000;i++){
20             buffer.append(String.valueOf(i));}
21         endTime = System.currentTimeMillis();
22         System.out.println("StringBuffer的執行時間:"+(endTime-startTime));
23 
24         startTime = System.currentTimeMillis();
25         for(int i = 0;i<20000;i++){
26             builder.append(String.valueOf(i));}
27         endTime = System.currentTimeMillis();
28         System.out.println("StringBuilder的執行時間:"+(endTime-startTime));
29 
30         startTime = System.currentTimeMillis();
31         for(int i = 0;i<20000;i++){
32             text = text + i;}
33         endTime = System.currentTimeMillis();
34         System.out.println("String的執行時間:"+(endTime-startTime));
35     }
36     /*
37  * java.lang.StringBuffer和StringBuilder:代表可變的字元序列,可以對字串內容進行增刪
38  *  StringBuffer append(String s),   StringBuffer append(int n) ,
39  StringBuffer append(Object o) ,  StringBuffer append(char n),
40  StringBuffer append(long n),  StringBuffer append(boolean n),
41  StringBuffer insert(int index, String str)
42  public StringBuffer reverse() :反轉此StringBuffer
43  StringBuffer delete(int startIndex, int endIndex)
44  public char charAt(int n )
45  public void setCharAt(int n ,char ch)
46  StringBuffer replace( int startIndex ,int endIndex, String str)
47  public int indexOf(String str)
48  public String substring(int start,int end)
49  public int length()
50  總結:新增:append() 刪除:delete(int i,int j) 修改:setCharAt(int index,char ch) 查 charAt(int n);
51  插入:insert(int index,String str)  反轉:reverse() 長度:length()
52  */
53     @Test
54     public void test(){
55         StringBuffer sb = new StringBuffer();
56         sb.append("a");
57         sb.append(1);
58         sb.insert(1,"T");
59         System.out.println(sb);
60         System.out.println(sb.reverse());
61         System.out.println(sb.delete(1,2));
62         System.out.println(sb.charAt(1));
63         sb.setCharAt(1,'s');//修改1處的字元
64         System.out.println(sb);
65         System.out.println(sb.append("wasd110120"));
66         System.out.println(sb.indexOf("wasd"));
67         System.out.println(sb.substring(2));
68     }
69 }

四:日期類

 1 package TestString;
 2 
 3 import org.junit.Test;
 4 
 5 import java.text.ParseException;
 6 import java.text.SimpleDateFormat;
 7 import java.util.Calendar;
 8 import java.util.Date;
 9 
10 /*
11  * 與時間相關的類:
12  * 1.System 類下的currentTimeMillis();
13  * 2.Date類:java.util.Date
14  *    如何建立其例項;其下的方法:toString()、getTime()
15  *    (以及其子類java.sql.Date)
16  * 3.SimpleDateFormat類
17  * 4.Calendar類
18  */
19 public class TestDate {
20     @Test
21     public void test(){//測試Date類,java.util.Date不易於國際化
22         java.sql.Date date = new java.sql.Date(15342515326235L);//java.sql裡面的Date是與資料庫表裡的date格式保持一致
23         System.out.println(date);
24         Date date1 = new Date();//建立一個Date例項
25         System.out.println(date1.toString());//Thu Nov 19 14:59:58 CST 2020
26         System.out.println(date1.getTime());//1605769198595
27         Date d2 = new Date(1399879144434L);
28         System.out.println(d2);//Mon May 12 15:19:04 CST 2014
29     }
30     /*
31      * java.text.SimpleDateFormat類易於國際化
32      * 格式化:日期--->文字 使用SimpleDateFormat的format()方法
33      * 解析:文字--->日期 使用SimpleDateFormat的parse()方法
34      */
35     @Test
36     public void test2() throws ParseException {
37         SimpleDateFormat simpleDateFormat = new SimpleDateFormat();//格式化處理
38         String format = simpleDateFormat.format(new Date());
39         System.out.println(format);//20-11-19 下午3:03
40         SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yy-MM-dd HH:mm:ss");
41         String format1 = simpleDateFormat1.format(new Date());//按照指定的格式輸出
42         System.out.println(format1);//20-11-19 15:07:51
43         //解析
44         Date date1 = simpleDateFormat.parse("20-11-19 下午3:07");//只能用對應格式進行解析,如果使用simpleDateFormat1就會報錯。
45         System.out.println(date1);
46     }
47     /*
48      * “三天打漁兩天晒網”  1990-01-01  XXXX-XX-XX 打漁?晒網?
49      */
50     //返回date1與date2之間的天數,date1早於date2
51     public int getDays(String date1,String date2) throws ParseException{
52         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
53         Date d1 = sdf.parse(date1);
54         Date d2 = sdf.parse(date2);
55         long milliTime = d2.getTime()-d1.getTime();
56         return (int)milliTime/1000/3600/24 + 1;
57 
58     }
59 
60     @Test
61     public void test3() throws ParseException{
62         String str1 = "1990-01-01";
63         String str2 = "1990-01-06";
64         int dates = getDays(str1,str2);
65 
66         if(dates % 5 == 0 || dates % 5 == 4){
67             System.out.println("晒網");
68         }else{
69             System.out.println("打漁");
70         }
71     }
72     //日曆:Calendar類   get()/add()/set()/Date getTime()/setTime(Date d)
73     @Test
74     public void test4()
75     {
76         Calendar c = Calendar.getInstance();
77         int day = c.get(Calendar.DAY_OF_MONTH);
78         System.out.println(day);
79         c.add(Calendar.DAY_OF_MONTH,-2);
80         int day1 = c.get(Calendar.DAY_OF_MONTH);
81         System.out.println(day1);
82         c.add(Calendar.DAY_OF_MONTH,+2);
83         int day2 = c.get(Calendar.DAY_OF_MONTH);
84         System.out.println(day2);
85         c.set(Calendar.DAY_OF_MONTH,23);
86         Date d = c.getTime();
87         System.out.println(d);
88     }
89 }

五:Math類

六:BigInteger,BigDecimal類

 1 package TestString;
 2 
 3 import org.junit.Test;
 4 
 5 import java.math.BigDecimal;
 6 import java.math.BigInteger;
 7 
 8 public class TestBigDecimal {
 9     @Test
10     public void testBigInteger(){
11         BigInteger bi = new BigInteger("123456848889874465");
12         System.out.println(bi);
13         BigDecimal bd = new BigDecimal("5646546");
14         System.out.println(bd);
15         BigDecimal bd1 = new BigDecimal("11");
16         System.out.println(bd.divide(bd1,BigDecimal.ROUND_HALF_UP));//向上取整
17         System.out.println(bd.divide(bd1,15,BigDecimal.ROUND_HALF_UP));//向上取整,保留15位小數
18     }
19 }