麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

JDK中工具類的使用

2019-11-14 15:36:00
字體:
來源:轉載
供稿:網友

JDK中內置了很多常用的工具類,且多以“s”結尾,如:集合工具類Collections,數組工具類Arrays,對象工具類Objects,文件工具類Files,路徑工具類Paths,數學工具類Maths;但也有一些不是以“s”結尾的工具類,如TimeUnit和System。

下面就簡單介紹各工具類的用法。
(1)Objects中定義很多有用的API,如空指針判斷,對象相等比較等。比較常用的API有以下幾個:
? 用于判斷兩個對象是否相等,兩個參數都可以為null
? public static boolean equals(Object a, Object b)
 用于判斷一個對象是否為空
? public static boolean isNull(Object obj)
 用于判斷一個對象是否不為空
 public static boolean nonNull(Object obj)
 用于對變量進行非空校驗,如果為空則拋出空指針異常,不為空則返回此變量,還可以拋出指 定異常信息
 public static <T> T requireNonNull(T obj)
 public static <T> T requireNonNull(T obj, String message)

? Objects使用示例:

 1     static void uSEObjects() { 2         String str1 = null; 3         String str2 = "Hello java"; 4          5         // 判斷str1與str2是否相等 6         boolean equalFlag = Objects.equals(str1, str2); 7          8         // 進行空指針判斷,如果為null就會拋出空指針異常,否則返回原值 9         str1 = Objects.requireNonNull(str1);10         str2 = Objects.requireNonNull(str2, "Str2 is null");11         12         // 判斷str1是否為null13         boolean nullFlag = Objects.isNull(str1);14         // 判斷str2是否為非空15         boolean nonNullFlag = Objects.nonNull(str2);16     }
View Code

 

(2)Arrays中定義了很多與數組相關API,常用的主要有一下幾個API

  // 數組排序
  public static void sort(int[] a)
  // 二分法查找數組中的元素
  public static int binarySearch(long[] a, long key)
  // 判斷兩個數組是否相等(數組元素對應相等,且數組長度一致)
  public static boolean equals(long[] a, long[] a2)
  // 使用指定值填充數組
  public static void fill(long[] a, long val)
  // 復制數組
  public static <T> T[] copyOf(T[] original, int newLength)
  // 獲取數組的hashCode
  public static int hashCode(long a[])
  // 將整個數組轉化為形如:[a, b, c, ..., d]的格式的字符串
  public static String toString(int[] a)

  Arrays使用示例代碼如下:

 1     static void useArrays() { 2         int[] arr1 = {5, 3, 2, 1, 4}; 3         int[] arr2 = {5, 3, 2, 1, 4, 5}; 4          5         // 對arr1進行排序,默認是升序排序 6         Arrays.sort(arr1); 7          8         // 搜索2在arr1中的位置,返回索引值,arr1必須是有序的 9         int index = Arrays.binarySearch(arr1, 2);10         11         // 判斷arr1與arr2是否相等12         boolean equalFlag = Arrays.equals(arr1, arr2);13         14         int[] newArr = new int[10];15         // 使用10填充newArr數組16         Arrays.fill(newArr, 10);17         18         // 復制newArr的數組0--4的元素,并返回新數組19         int[] ansArr = Arrays.copyOf(newArr, 5);20         21         // 獲得ansArr的hashCode22         int ansHashCode = Arrays.hashCode(ansArr);23         24         // 將ansArr轉化為一個字符串25         String str = Arrays.toString(ansArr);26     }
View Code

 

(3)Collections中定義了許多集合常用的API,常用的API如下:
  // 對List進行排序
  public static <T extends Comparable<? super T>> void sort(List<T> list)
  // 二分法查找List中的元素索引值,List必須有序
  public static <T> int binarySearch(List<? extends Comparable<? super T>> list, T key)
  // 翻轉List
  public static void reverse(List<?> list)
  // 尋找出List中的最小元素值
  public static <T extends Object & Comparable<? super T>>
  T min(Collection<? extends T> coll)
  // 尋找出List中的最大元素值
  public static <T extends Object & Comparable<? super T>>
  T max(Collection<? extends T> coll)

  Collections的使用示例代碼如下:

 1     static void useCollections() { 2         List<Integer> nums = new ArrayList<>(); 3         nums.add(1); 4         nums.add(3); 5         nums.add(2); 6         nums.add(5); 7         nums.add(4); 8         // 對List中的元素進行排序 9         Collections.sort(nums);10         11         // 尋找5在nums中的索引值12         int index = Collections.binarySearch(nums, 5);13         14         // 翻轉nums15         Collections.reverse(nums);16         // 尋找出nums中的最小值17         Collections.min(nums);18         // 尋找出nums中的最大值19         Collections.max(nums);20     }
View Code

 

(4)Files中定義了許多常用的與文件相關的API,常用API如下:
  // 獲取指定文件的字節輸入流
  public static InputStream newInputStream(Path path, OpenOption... options)
  // 獲取指定文件的字節輸出流
  public static OutputStream newOutputStream(Path path, OpenOption... options)
  // 以指定編碼獲取指定文件的字符輸入流
  public static BufferedReader newBufferedReader(Path path, Charset cs)
  // 以指定編碼獲取指定文件的字符輸出流
  public static BufferedWriter
  newBufferedWriter(Path path, Charset cs, OpenOption... options)
  // 以指定編碼獲取一個文件中的所有內容,并以字符串流返回
  public static Stream<String> lines(Path path, Charset cs)
  // 創建文件
  public static Path createFile(Path path, FileAttribute<?>... attrs)
  // 創建路徑
  public static Path createDirectory(Path dir, FileAttribute<?>... attrs)
  // 刪除文件
  public static void delete(Path path)
  // 如果文件存在,則刪除文件
  public static boolean deleteIfExists(Path path
  // 文件復制
  public static Path copy(Path source, Path target, CopyOption... options)
  // 文件移動
  public static Path move(Path source, Path target, CopyOption... options)

  Files使用示例代碼如下:

 1     static void useFiles() throws IOException { 2         Path dataPath = Paths.get("data.txt"); 3         // 獲取字符輸入流 4         InputStream is = Files.newInputStream(dataPath); 5         // 獲取字符輸出流 6         OutputStream os = Files.newOutputStream(dataPath); 7         // 獲取字符輸入流 8         BufferedReader reader = Files.newBufferedReader(dataPath); 9         // 獲取字符輸出流10         BufferedWriter writer = Files.newBufferedWriter(dataPath);11         // 獲取文件中的所有內容,并以字符串流返回,每個字符串代表文件的一行文本12         Stream<String> lines = Files.lines(dataPath, Charset.forName("UTF-8"));13         14         // 創建一個文件路徑15         Files.createDirectories(Paths.get("hello"));16         // 創建一個文件17         Files.createFile(Paths.get("config.txt"));18         19         // 刪除文件或文件夾,如果不存在,則會拋出異常20         Files.delete(Paths.get("data.txt"));21         // 刪除文件或文件夾,如果不存在則不會執行刪除操作,也不會拋出異常22         Files.deleteIfExists(Paths.get("hello"));23         24         // 只能進行文件復制,不能進行文件夾復制25         Files.copy(Paths.get("1.txt"), Paths.get("2.txt"));26         27         // 文件或文件夾移動28         Files.move(Paths.get("SRC"), Paths.get("DES"));29     }
View Code

 

(5)Paths主要和Files,File搭配使用,沒有什么需要講的。

(6)Maths主要封裝了一些常用的與數學相關的操作,這是大家最為熟悉的工具類,也不需要講解。

(7)TimeUnit主要是線程sleep的時候比較方便:
  // 線程休眠5小時
  TimeUnit.HOURS.sleep(5);
  // 線程休眠5分鐘
  TimeUnit.MINUTES.sleep(5);
  // 線程休眠5秒
  TimeUnit.SECONDS.sleep(5);

(8)System也是大家比較熟悉的一個工具類,比如大家最常用的控制臺輸出就是用的
  System.out.PRintln(),常用的API有:
  // 獲取當前時間,值是以毫秒為單位
  public static native long currentTimeMillis()
  // 結束Java程序運行
  public static void exit(int status)
  // 數組復制
  public static native
  void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)

  System使用示例代碼如下:

 1     static void useSystem() { 2         // 獲取當前時間,單位是毫秒 3         long time = System.currentTimeMillis(); 4          5         // 將數組1復制到數組2 6         int[] arr1 = {1, 2, 3, 4, 5}; 7         int[] arr2 = new int[5]; 8         System.arraycopy(arr1, 0, arr2, 0, arr1.length); 9         10         // 正常退出程序11         System.exit(0);12     }
View Code

本文章只是粗略的介紹了各工具類的用法,更詳細的用法請觀看相應的API文檔。

如有錯誤,敬請指出。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久草手机在线观看视频 | 午夜网站视频 | 久久综合久久美利坚合众国 | 色婷婷tv| 免费欧美精品 | 欧美在线a| 91丝袜| 视频一区二区三区中文字幕 | av免费在线免费观看 | 1314av| 日韩黄色免费观看 | 欧美日韩精品一区二区三区不卡 | 一级观看免费完整版视频 | 免费观看一级黄色片 | 涩涩99 | 一级一级一级一级毛片 | www深夜成人 | 久久免费视频精品 | 久久国产成人午夜av浪潮 | 伊人亚洲精品 | 国产亚洲精品久久久久5区 日韩一级片一区二区三区 国产精品久久久久av | 欧美成人免费一级 | 国产精品久久久乱弄 | 亚洲二区三区在线 | 91午夜免费视频 | 成年人视频在线免费观看 | 成人免费毛片一 | 天堂福利电影 | 日韩精品网站在线观看 | 黄色片网站免费看 | 国产精品午夜未成人免费观看 | 国产亲子伦在线观看 | av手机在线电影 | 久久久久九九九女人毛片 | 欧美老外a级毛片 | 成年性羞羞视频免费观看 | 沉沦的校花奴性郑依婷c到失禁 | 日本在线一区二区 | 免费国产一级淫片 | 精品日韩欧美 | 嫩草www |