Java常用類介紹

常用類

包裝類

基本介紹

包裝類位於java.lang包,用法類似;

基本數據類型與包裝類的對應關係:

基本數據類型 包裝類
byte Byte
boolean Boolean
short Short
char Character
int Integer
long Long
float Float
double Double

由於包裝類的常用方法類似,此處拿Integer舉例;

數字相關的包裝類都繼承了Number類;Byte,Short,Integer,Long,Float,Double等。

常用方法示例:

public class TestInteger {
	public static void main(String[] args) {
		//1.基本數據類型轉成包裝類對象
		Integer a = new Integer(1);
		Integer b = Integer.valueOf(2);
		//2.包裝類對象轉成基本數據類型
		int c = b.intValue();
		double d = b.doubleValue();		
		//3.字符串轉成包裝類對象
		Integer e = new Integer("8888");	
		//4.包裝類對象轉成字符串
		String f = e.toString();	
		//5.包裝類中的常量
		System.out.println("Integer中最大值:"+Integer.MAX_VALUE);
		System.out.println("Size:"+Integer.SIZE);
	}
}

自動裝箱和拆箱

// 自動裝箱 
Integer a = 2;//相當於 Integer a = Integer.valueOf(2); 
// 自動拆箱
int b = a; //編譯器自動轉爲:int b = a.intValue();
  • 緩存問題:緩存[-128,127]之間的數字,系統初始化時創建的一個緩存數組;
Integer a = 124;
Integer b = 124;
System.out.println(a==b); //true
System.out.println(a.equals(b)); //true

Integer c = 128;
Integer d = 128;
System.out.println(c==d); //false
System.out.println(c.equals(d)); //true

String

public final class String
    implements java.io.Serializable, Comparable<String>, CharSequence {
    /** The value is used for character storage. */
    private final char value[];   
}
  • String類是不可變字符序列;
  • 判斷String對象值是否相等使用equals()方法

常用方法

JDK8 API

方法 解釋說明
char charAt(int index) 返回字符串中索引爲index的字符,索引範圍(0,lenth()-1);
boolean equals(Object anObject) 如果字符串與anObject相等,返回true;否則返回false;
boolean equalsIgnoreCase(String other) 判斷字符串是否相等(忽略大小寫);
int indexOf(String str) 返回從頭開始查找的第一個子字符串str在字符串中的索引位置。如果未找到子字符串str,則返回-1;
int lastIndexOf() 返回從末尾開始查找的第一個子字符串str在字符串中的索引位置。如果未找到子字符串str,則返回-1;
int length() 返回字符串的長度;
String replace(char oldChar,char new Char) 返回一個新串,它是通過用newChar替換此字符串中出現的所有oldChar而生成的;
boolean startsWith(String prefix) 如果字符串以prefix開始,則返回true;
boolean endsWith(String prefix) 如果字符串以prefix結尾,則返回true;
String substring(int beginIndex) 返回一個新字符串,該串包含從原始字符串beginIndex到串尾;
String substring(int beginIndex, int endIndex) 返回一個新字符串,該串包含從原始字符串beginIndex到串尾或endIndex-1的所有字符;
String toLowerCase() 返回一個新字符串,該串將原始字符串中的所有大寫字母改成小寫字母;
String toUpperCase() 返回一個新字符串,該串將原始字符串中的所有小寫字母改成大寫字母;
String trim() 返回一個新字符串,該串刪除了原始字符串頭部和尾部的空格

StringBuilder和StringBuffer

StringBuilder和StringBuffer共同的父類AbstractStringBuilder

abstract class AbstractStringBuilder implements Appendable, CharSequence {
    /**
     * The value is used for character storage.
     */
    char[] value;
}
  • StringBuilder和StringBuffer是可變字符序列;
  • StringBuffer JDK1.0版本提供的類,線程安全,做線程同步檢查,效率較低;
  • StringBuilder JDK1.5版本提供的類,線程不安全,不做線程同步檢查,因此效率較高,常用;

常用方法

方法 解釋說明
public StringBuilder append(…) 重載的方法,可以爲StringBuilder對象添加字符序列,仍然返回自身對象;
public StringBuilder delete(int start,int end) 可以刪除從start到end-1爲止的一段字符串序列,仍然返回自身對象;
public StringBuilder deleteCharAt(int index) 移除此序列索引爲index的字符,仍然返回自身對象;
public StringBuilder insert(…) 重載的方法,可以爲StringBuilder對象在指定位置插入字符序列,仍然返回自身對象;
public StringBuilder reverse() 將字符串序列逆序,仍然返回自身對象;
public String toString() 返回此序列中數據的字符串表示形式;
public void setCharAt(int index,char c) 將c替換到原字符序列索引爲index的位置;
indexOf(),substring(),length(),charAt() 類似String類中的方法;

時間處理相關類

  • 以1970年1月1日 00:00:00定爲基準時間,度量單位爲毫秒(千分之一秒)

  • 用long類型的變量保存時間;

  • 獲得現在時刻的“時刻數值”,

    long now = System.currentTimeMillis();
    

Date

public class Date
    implements java.io.Serializable, Cloneable, Comparable<Date>
{
	public Date() {
        this(System.currentTimeMillis());
    }
}
  • Date的構造方法返回了當前時間的毫秒值,說明新創建的Date對象的時間爲當前時間;
  • Date帶參構造,參數是一個毫秒數,表示從基準時間過了參數毫秒值的時間;
  • boolean after(Date when) 判斷此時間是否在指定時間之後;
  • boolean before(Date when) 判斷此時間是否在指定時間之前;
  • boolean equals(Date when)判斷兩個日期的相等性;
  • long getTime() 返回自基準時間到該Date對象時間所經過的毫秒數;
  • String toString() 把Date對象轉換成java源碼中設定格式的字符串輸出;

DateFormat

  • 把時間對象轉化成指定格式的字符串,反之,把指定格式的字符串轉化成時間對象;
  • DateFormat是一個抽象類,一般使用它的子類SimpleDateFormat類來實現

方法:

方法 解釋說明
public String format(Date date) 返回將date轉化爲指定格式的字符串;
public Date parse(String str) 將指定格式的字符串轉化爲Date對象並返回;
//把時間對象轉成字符串
DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date date = new Date();
String str = df.format(date);
//把字符串裝成時間對象
Date date = df.parse("2019-9-9 11:11:11"); //需要捕獲異常

其他格式化字符:SimpleDateFormat

比如 D 表示當前時間是當前年份的第多少天

Calendar

  • Calendar類是一個抽象類,爲我們提供了關於日期計算的相關功能,比如:年月日時分秒的展示和計算;
  • GregorianCalendar是Calendar的一個具體子類,提供了世界上大多數國家/地區使用的標準日曆系統;
  • 注意:0-11表示對應的月份,0是1月,11代表12月;
  • 1-7表示星期,1是星期日,7代表星期六

方法:

  • get(param):根據傳的參數,獲得對應的日期屬性;
  • set(params):根據參數,給日期對象設置日期屬性;
  • add(params):根據參數,進行日期的計算;
  • Date getTime():轉化成一個時間類對象;
  • Calender setTime(Date date):將時間類對象轉化爲日期類;

可視化日曆程序

		String str = "2020-2-29";  //平年天數超出不做判斷
		DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
		Date date = df.parse(str); // 有異常
		Calendar c = new GregorianCalendar();
		c.setTime(date);
		int today = c.get(Calendar.DAY_OF_MONTH);// 保存當前日期爲哪一天

		System.out.println(" 日\t一\t二\t三\t四\t五\t六");

		c.set(Calendar.DAY_OF_MONTH, 1); // 從當前月的第一天開始

		// 計算出當前月的第一天是周幾
		for (int i = 0; i < c.get(Calendar.DAY_OF_WEEK) - 1; i++) {
			System.out.print("\t");
		}

		int days = c.getActualMaximum(Calendar.DATE); // 當前月一共有多少天
		for (int i = 1; i <= days; i++) {
			if (i == today) // 如果是今天,則在日期後面加上*
				System.out.print(c.get(Calendar.DAY_OF_MONTH) + "*\t");
			else
				System.out.print(c.get(Calendar.DAY_OF_MONTH) + "\t");

			// 週六換行
			if (c.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY) {
				System.out.println();
			}
			c.add(Calendar.DAY_OF_MONTH, 1);
		}

Math

  • abs :絕對值
  • sqrt :平方根
  • pow(double a, double b) :a的b次冪
  • max,min :最大最小值
  • ceil(double a) :大於a的最小整數
  • floor(double a) :小於a的最大整數
  • random() :返回0.0到1.0的隨機數
  • long round(double a) :double類型的數據a轉成long型(四捨五入)

Random

專門用於生成隨機數的類;

Random rand = new Random();
// 隨機生成[0,1)之間的double類型的數據
System.out.println(rand.nextDouble());

// 隨機生成int類型允許範圍之內的整型數據
System.out.println(rand.nextInt());
// 隨機生成[0,1)之間的float類型的數據
System.out.println(rand.nextFloat());

// 隨機生成false或者true
System.out.println(rand.nextBoolean());

// 隨機生成[0,10)之間的int類型的數據
System.out.println(rand.nextInt(10));
// 隨機生成[20,30)之間的int類型的數據
System.out.println(20 + rand.nextInt(10));
// 隨機生成[20,30)之間的int類型的數據(此種方法計算較爲複雜)
System.out.print(20 + (int) (rand.nextDouble() * 10));

File

  • java.io.File類:代表文件和目錄;
  • 構造方法:傳入一個目錄地址;
File f = new File("d:\\a.txt");
//File f = new File("d:/a.txt");

常用方法:

方法 說明
public boolean exists() 判斷File是否存在
public boolean isDirectory() 判斷File是否爲目錄
public boolean isFile() 判斷File是否爲文件
public long lastMidified() 返回File最後修改時間
public long length() 返回File大小
public String getName() 返回文件名
public String getPath() 返回文件的目錄路徑

創建新目錄:

File f = new File("d:/電影/華語/大陸");
boolean flag = f.mkdir(); // false 目錄結構中有一個不存在,則不會創建整個目錄樹
boolean flag = f.mkdirs(); //創建整個目錄樹

遞歸遍歷目錄樹結構:

public static void main(String[] args) {
		File  f = new File("D:\\2345\\Downloads");
		printFile(f,0);
	}
	static void  printFile(File  file, int  level){	
		//輸出層數
		for(int i=0;i<level;i++){
			System.out.print("-");
		}	
		System.out.println(file.getName());
		if(file.isDirectory()){
			File[] files = file.listFiles();
			
			for(File  temp: files){
				printFile(temp,level+1);
			}	
		}
	}

枚舉

  • JDK1.5引入了枚舉類型,枚舉類型的定義包括枚舉聲明和枚舉體。

    enum 枚舉名{
    	枚舉體(常量列表)
    }
    
  • 枚舉體就是放置一些常量;

  • 枚舉類型隱性地繼承自java.lang.Enum。

  • 枚舉實質上還是類,而每個被枚舉的成員實質就是一個枚舉類型的實例,他們默認都是public static final修飾的,提議直接通過枚舉類型名使用它們;

enum Season {
	SPRING, SUMMER, AUTUMN, WINTER
}
public class TestEnum {
	public static void main(String[] args) {
		Season a = Season.AUTUMN;
		switch(a){
		case SPRING:
			System.out.println("春天");
			break;
		case SUMMER:
			System.out.println("夏天");
			break;
		case AUTUMN:
			System.out.println("秋天");
			break;
		case WINTER:
			System.out.println("冬天");
			break;
		}
	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章