JavaSE 經常使用類與其方法

1.基本數據類型比較用:==java

2.引用數據類型比較用:equals方法數組

若是引用數據類型使用==比較的話,比較的是地址值app

 

toStringdom

對象調用toString()須要重寫本方法: 在封裝類中,不然輸出的是地址ide

 

equals方法函數

'對象' 調用equals()須要重寫本方法: 在封裝類中重寫,不然進行比較時比較的是地址工具

 

String優化

  String有一個切割split,按一個字符串進行切割,返回切割以後的字符串數組ui

    String[] split(String regex)this

  public int length () :返回此字符串的長度。

  public String concat (String str) :將指定的字符串鏈接到該字符串的末尾。

  public char charAt (int index) :返回指定索引處的 char值。

  public int indexOf (String str) :返回指定子字符串第一次出如今該字符串內的索引。

  public int indexOf(String str, int fromIndex) :返回指定子字符串在此字符串中第一次出現處的索引,從指定的索引開始。

  public String substring (int beginIndex) :返回一個子字符串,從beginIndex開始截取字符串到字符串結尾。

  public String substring (int beginIndex, int endIndex) :返回一個子字符串,從beginIndex到endIndex截取字符串。含beginIndex,不含endIndex。

  public String replace (CharSequence target, CharSequence replacement) :將與target匹配的字符串使用replacement字符串替換。

 

StringBuilder

  String Builder在內存中至關於一個緩衝容器,會隨着內存的關閉而消失,在地址內存中進行字符拼接時 不建立所添加字符的內存地址 節省了內存空間 

 

  StringBuilder() 構造一個沒有字符的字符串構建器,初始容量爲16個字符。

  StringBuilder(String str) 構造一個初始化爲指定字符串內容的字符串構建器

  StringBuilder sb = new StringBuilder();

  public StringBuilder append(任意類型):添加數據,並返回對象自己(支持鏈式調用)。

  public StringBuilder reverse():字符序列進行反轉

  public String toString():返回此序列中數據的字符串表示形式。 轉爲String

  append方法弊端:它能夠拼接任意類型,可是拼接完畢,都變成字符串

 

Arrays

public static String toString(int[] a):把數組轉成字符串

public static void sort(int[] a):對數組進行升序排序

 

包裝類與String類互相轉換

int 類型直接拼接字符串可轉爲String類型

int->String

1+""

String.valueOf()方法能夠將基本類型數據轉爲String類型

String.valueOf(數據);

包裝類.ParseXXX方法能夠將基本類型轉爲String類型  注意基本類型必須轉爲相對應的包裝類,如下是int轉String例子

int->String(重點)

Integer.parseInt("100")

 

Date

  在java,有一個java.util.Date,表示日期時間的,精確到毫秒值

  Date類的構造方法:

  Date() 無參構造方法:以當前的系統時間來建立出一個Date對象

  Date(long date):根據指定的毫秒值,建立出一個Date對象。 指定的毫秒值,從1970年1月1日(計算機的基準時間)起通過的毫秒值

  經常使用方法:

  public long getTime() 把日期對象轉換成對應的時間毫秒值。

  void setTime(long time) 將此 Date對象設置爲1970年1月1日00:00:00 起通過的毫秒值

 1   //請打印出1970年1月2號的時間的對象
 2 
 3     Date date2 = new Date(24 * 60 * 60 * 1000);  4 
 5     System.out.println(date2);  6 
 7   //獲取當前時間的毫秒值
 8     Date date = new Date();
 9     System.out.println(date.getTime()); 10 
11   //將date,改爲1970年1,月1號   
12 
13     date.setTime(0); 14 
15     System.out.println(date);

 

SimpleDateFormat

  可使用DateFormat類,可是它是一個抽象類,因此咱們要用它的子類 SimpleDateFormat構造方法

  SimpleDateFormat(String pattern) 使用給定模式構建一個 SimpleDateFormat ,默認日期格式符號爲默認的 FORMAT區域設置。

  參數pattern就是模式

  字母模式:y表示面 M表示月 d表示日 H表示時 m表示分 s表示秒 S表示毫秒

  中國式時間: 2019年3月11日 11點 09分 33秒 333毫秒

  代碼的字母模式: yyyy年MM月dd日 HH點mm分ss秒 SSS毫秒

  成員方法 :

  格式化(日期 -> 文本): Date -- String

  public final String format(Date date)

 

  解析(文本 -> 日期): String -- Date

  public Date parse(String source)

 1      //根據系統時間建立Date對象
 2         Date date = new Date();  3  System.out.println(date);  4 
 5         //date很差看,格式化爲中國式時間  6      //SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH點mm分ss秒 SSS毫秒");
 7         SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM-dd  HH:mm:ss");  8         //將date格式化爲String
 9         String time = sdf.format(date); 10  System.out.println(time); 11 
12         //注意,咱們通常人不會記憶毫秒值,能不能根據具體的時間(2019-03-11 11:16:02)解析成毫秒值 13         //ParseException: Unparseable date: "2018年03-11 11:18:57",注意,模式必須與以前一致
14         Date date1 = sdf.parse("2018年03-11  11:18:57"); 15  System.out.println(date1); 16         System.out.println(date1.getTime());

 

Calendar

  Calendar爲抽象類,因爲語言敏感性,Calendar類在建立對象時並不是直接建立,而是經過靜態方法建立,返回子類對象

  根據Calendar類的API文檔,經常使用方法有:

  • public int get(int field):返回給定日曆字段的值。
  • public void set(int field, int value):將給定的日曆字段設置爲給定值。
  • public abstract void add(int field, int amount):根據日曆的規則,爲給定的日曆字段添加或減去指定的時間量。
  • public Date getTime():返回一個表示此Calendar時間值(從曆元到如今的毫秒偏移量)的Date對象。

  Calendar類中提供不少成員常量,表明給定的日曆字段:

字段值

含義

YEAR

MONTH

月(從0開始,能夠+1使用)

DAY_OF_MONTH

月中的天(幾號)

HOUR

時(12小時制)

HOUR_OF_DAY

時(24小時制)

MINUTE

SECOND

DAY_OF_WEEK

週中的天(周幾,週日爲1,能夠-1使用)

 

 1 import java.util.Calendar;  2 
 3 public class CalendarUtil {  4     public static void main(String[] args) {  5         //get方法  6         // 建立Calendar對象
 7         Calendar cal = Calendar.getInstance();  8         // 設置年 
 9         int year = cal.get(Calendar.YEAR); 10         // 設置月
11         int month = cal.get(Calendar.MONTH) + 1; 12         // 設置日
13         int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH); 14         //set方法
15         Calendar cal = Calendar.getInstance(); 16         cal.set(Calendar.YEAR, 2020); 17         //add方法
18         cal.add(Calendar.DAY_OF_MONTH, 2); // 加2天
19         cal.add(Calendar.YEAR, -3); // 減3年 20         //getTime方法
21         Date date = cal.getTime(); 22  } 23 }

 

 

System

  • public static long currentTimeMillis():返回以毫秒爲單位的當前時間。
  • public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length):將數組中指定的數據拷貝到另外一個數組中。

 

  currentTimeMillis方法

1 import java.util.Date; 2 
3 public class SystemDemo { 4     public static void main(String[] args) { 5            //獲取當前時間毫秒值
6         System.out.println(System.currentTimeMillis()); // 1516090531144
7  } 8 }

 

  arraycopy方法

參數序號

參數名稱

參數類型

參數含義

1

src

Object

源數組

2

srcPos

int

源數組索引發始位置

3

dest

Object

目標數組

4

destPos

int

目標數組索引發始位置

5

length

int

複製元素個數

 1 import java.util.Arrays;  2 
 3 public class Demo11SystemArrayCopy {  4     public static void main(String[] args) {  5         int[] src = new int[]{1,2,3,4,5};  6         int[] dest = new int[]{6,7,8,9,10};  7         System.arraycopy( src, 0, dest, 0, 3);  8         /*代碼運行後:兩個數組中的元素髮生了變化  9  src數組元素[1,2,3,4,5] 10  dest數組元素[1,2,3,9,10] 11         */
12  } 13 }

 

 

Random

  構造方法:

  Random() 建立一個新的隨機數生成器。

  成員方法 :

    int nextInt() 從這個隨機數生成器的序列返回下一個僞隨機數,均勻分佈的 int值。

    int nextInt(int bound) ,均勻分佈 返回值介於0(含)和指定值bound(不包括),從該隨機數生成器的序列繪製

 1         Random random = new Random();  2         /*for (int i = 0; i < 10; i++) {  3  System.out.println(random.nextInt());  4  }*/
 5 
 6         /*for (int i = 0; i < 10; i++) {  7  int j = random.nextInt(10);  8  System.out.println(j);  9  }*/
10 
11         //來一個隨機值,這個數據的範圍必須是1~100,33~66 54~78 12         //random.nextInt(100);//0~99 +1 -> 1~100
13         /*33~66 - 33 -> 0~33 14  for (int i = 0; i < 10; i++) { 15  System.out.println(random.nextInt(34) + 33); 16  }*/
17 
18         //54~78 - 54 -> 0~24
19         for (int i = 0; i < 10; i++) { 20             System.out.println(random.nextInt(25) + 54); 21         }

 

 

比較器Comparable<T> 和 Comparator<T>

  java.lang Comparable<T> : 該接口對實現它的每一個類的對象強加一個總體排序。 這個排序被稱爲類的天然排序 ,類的compareTo方法被稱爲其天然比較方法 。

  java中規定 某個類只要實現了Comparable 接口以後,才能經過重寫compareTo()具有比較的功能。

  抽象方法:

    int compareTo​(T o) 將此對象(this)與 指定( o )的對象進行比較以進行排序。

    this > o : 返回正數

    this = o : 返回0

    this < o : 返回負數

    ' this - o : 表示按照升序排序。 o - this : 表示按照降序排序。

  ' 小結 : 若是Java中的對象須要比較大小,那麼對象所屬的類要實現Comparable接口,而後重寫compareTo(T o)實現比較的方式。

1 public class Student implements Comparable<Student>{ 2  .... 3  @Override 4     public int compareTo(Student o) { 5         return this.age-o.age;//升序
6  } 7 }

 

  java.util Comparator<T> : 比較器接口。

  抽象方法:

    int compare​( T o1, T o2 ) 比較其兩個參數的大小順序。

  比較器接口的使用場景:

    1. Arrays.sort() : static <T> void sort​( T[] a, Comparator c)

    2. Collections 集合工具類 : void sort​(List<T> list, Comparator<> c) 根據指定的比較器給集合中的元素進行排序。

    3. TreeSet 集合 : 構造方法 TreeSet( Comparator c )

    補充 : 在後面我還會介紹JDK1.8 的新特性(Lambda  函數式代碼優化)  進行優化此類接口 

 1 ArrayList<String> list = new ArrayList<String>();  2         list.add("cba");  3         list.add("aba");  4         list.add("sba");  5         list.add("nba");  6         //排序方法 按照第一個單詞的降序
 7         Collections.sort(list, new Comparator<String>() {  8  @Override  9             public int compare(String o1, String o2) { 10                 int rs = o2.getCj() - o1.getCj(); 11                 return rs==0 ? o1.getAge()-o2.getAge():rs; 12 // return o2.charAt(0) - o1.charAt(0);
13  } 14  }); 15         System.out.println(list);

  Comparable 和 Comparator 區別:

    Comparable : 對實現了它的類進行總體排序。

    Comparator : 對傳遞了此比較器接口的集合或數組中的元素進行指定方式的排序。

相關文章
相關標籤/搜索