天天看點

黑馬程式員——常用API——Math,System,Calendar,正規表達式

------Java教育訓練、Android教育訓練、iOS教育訓練、.Net教育訓練、期待與您交流! -------

一.Math類

1.針對數學運算進行操作的類

屬于lang包,全靜态,無構造方法.

2.常見方法

A:絕對值 public static int abs(int a)

B:向上取整 public static double ceil(double a)

C:向下取整 public static double floor(double a)

D:兩個資料中的大值 public static int max(int a,int b)

E:a的b次幂 public static double pow(double a,double b)

F:随機數 public static double random()

G:四舍五入 public static int round(double a)

H:正平方根 public static double sqrt(double a)

二.Random類

1.用于産生僞随機數的類

2.構造方法:

A:Random() 随機種子,每次産生的随機數不同

B:Random(long seed) 指定種子,每次種子相同,随機數就相同

3.成員方法:

A:public int nextInt() 傳回int範圍内的随機數

B:public int nextInt(int n) 傳回[0,n)範圍内的随機數

練習題:求50-100之間的随機數

<span style="font-family:FangSong_GB2312;font-size:18px;"><strong><span style="font-family:FangSong_GB2312;font-size:18px;">package cn.itcast;


import java.util.Random;


public class Demo {
	public static void main(String[] args) {
		Random r= new Random();
		
		for (int i = 0; i < 50; i++) {
			int nextInt=r.nextInt(50);
			if(nextInt==0){
				nextInt += 50;
			}else{
				 nextInt += 51;


			}
			System.out.println(nextInt);
		}
		
	}
}</span></strong></span>
           

三.System類

1.系統類

屬于lang包,全靜态,無構造方法,提供了一些有用的字段和方法

2.成員方法

A:運作垃圾回收器 

public static void gc()

B:退出jvm

public static void exit(int status) 

int值為0表示正常退出,為其他值表示異常退出

C:擷取目前時間的毫秒值

public static long currentTimeMillis()

D:數組複制

public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length)

src - 源數組。

srcPos  - 源數組中的起始位置。

dest - 目标數組。

destPos - 目标資料中的起始位置。

length  - 要複制的數組元素的數量。 

練習:

<span style="font-family:FangSong_GB2312;font-size:18px;"><strong><span style="font-family:FangSong_GB2312;font-size:18px;">package cn.itcast;


public class Demo1 {


	
	public static void main(String[] args) {
		//擷取目前時刻的毫秒值
		long currentTimeMillis = System.currentTimeMillis();
		System.out.println(currentTimeMillis);
		//數組複制
		int[] arr1={1,1,1,1,1};
		int[] arr2={2,2,2,2,2};
		System.arraycopy(arr1, 0, arr2, 2, 3);
		for (int i = 0; i < arr2.length; i++) {
			System.out.println(arr2[i]+" ");
		}
		//運作垃圾回收器
		System.gc();
	}


}
</span></strong></span>
           

四.BigInteger類

1.針對大型整數的運算

2.構造方法

A:BigInteger(String s)

3.成員方法

A:加 public BigInteger add(BigInteger val)

B:減 public BigInteger subtract(BigInteger val)

C:乘 public BigInteger multiply(BigInteger val)

D:除 public BigInteger divide(BigInteger val)

E:商和餘數 public BigInteger[] divideAndRemainder(BigInteger val)

練習:

<span style="font-family:FangSong_GB2312;font-size:18px;"><strong><span style="font-family:FangSong_GB2312;font-size:18px;">package cn.itcast;


import java.math.BigInteger;


public class Demo2 {


	/**
	 * public BigInteger[] divideAndRemainder(BigInteger val)
	 */
	public static void main(String[] args) {
		//商和餘數的運算
		BigInteger bi= new BigInteger("25");
		BigInteger bi2= new BigInteger("4");
		BigInteger[] bi3= bi.divideAndRemainder(bi2);
		for (int i = 0; i < bi3.length; i++) {
			System.out.println(bi3[i]);
		}
		
	}


}

</span></strong></span>
           

五.BigDecimal類

1.浮點資料做運算,會丢失精度。java為我們提供了BigDecimal.

2.構造方法

A:BigDecimal(String s)

3.成員方法:

A:加 public BigDecimal add(BigDecimal augend)

B:減 public BigDecimal subtract(BigDecimal subtrahend)

C:乘 public BigDecimal multiply(BigDecimal multiplicand)

D:除 public BigDecimal divide(BigDecimal divisor)

練習:

<span style="font-family:FangSong_GB2312;font-size:18px;"><strong><span style="font-family:FangSong_GB2312;font-size:18px;">package cn.day14;


import java.math.BigDecimal;


public class Big {


	
	public static void main(String[] args) {
		//定義BigDecimal值兩個
		BigDecimal bi = new BigDecimal("222222");
		BigDecimal bigDecimal = new BigDecimal("111111");
		//對BigDecimal進行加法操作
		BigDecimal bigDecimal2 = bi.add(bigDecimal);
		//對BigDecimal進行除法操作
		BigDecimal bigDecimal3 = bi.divide(bigDecimal);
		//對BigDecimal進行減法操作
		BigDecimal bigDecimal4 = bi.subtract(bigDecimal);
		//對BigDecimal進行乘法操作
		BigDecimal bigDecimal5 = bi.multiply(bigDecimal);
		//輸出結果
		System.out.println(bigDecimal2);
		System.out.println(bigDecimal3);
		System.out.println(bigDecimal4);
		System.out.println(bigDecimal5);


	}


}
</span></strong></span>
           

六.Date類與DateFormat類

1.Date是日期類,精确到毫秒.

毫秒代表的是距1970年1月1日00時00分00秒的時間.

A:構造方法

Date()

Date(long time)long time 為毫秒數

B:成員方法

public long getTime()

擷取定義時間的毫秒數

public void setTime(long time)

設定毫秒值

C:日期和毫秒值的互相轉換

a:Date>>long time

Date now =new Date();

long time1=now.getTime();

b:long time>>Date

直接通過構造方法

Date now =new Date(long time);

2.DateFormat是針對日期進行格式化和針對字元串進行解析的類,并且是抽象類

是以使用其子類SimpleDateFormat.

A:SimpleDateFormat(String pattern) 給定模式

yyyy-MM-dd HH:mm:ss

B:日期和字元串的轉換

a:String -- Date

解析:parse(轉換的意思)

//将一個字元串日期,轉成一個Date日期

String date = "2014年09月25日 12時24分15";

DateFormat dateFormat2 = new SimpleDateFormat("yyyy年MM月dd日 HH時mm分ss");

Date parse = dateFormat2.parse(date);

System.out.println(parse);

b:Date -- String:

格式化:format("符合的日期格式")

//将一個Date日期,轉成一個字元串日期

DateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日  HH時mm分ss秒");

String format = dateFormat.format(new Date());

System.out.println(format);

3.練習:

新中國成立多少天了?

<span style="font-family:FangSong_GB2312;font-size:18px;"><strong><span style="font-family:FangSong_GB2312;font-size:18px;">package cn.itcast;


import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;


public class Demo4 {


	/**
	 * 新中國成立多少天了?
	 */
	public static void main(String[] args) throws Throwable {
		// 擷取當下時刻的毫秒值
		Date now = new Date();
		long time = now.getTime();


		// 擷取1949年10月1日12:00:00的毫秒值,定義字元串
		String str = "1949年10月01日12:00:00";
		// 設定DateFormat格式,用他的子類SimpleDateFormat完成
		DateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日HH:mm:ss");
		// 通過dateFormat對字元串進行解析成為Date格式
		Date date = dateFormat.parse(str);
		// 擷取新中國成立那天的毫秒值
		long time2 = date.getTime();


		// 将兩者的毫秒值做差并轉換為天數
		long day = (time - time2) / 1000 / 60 / 60 / 24;
		System.out.println("新中國已經成立" + day + "天了!");
	}


}
</span></strong></span>
           

七.Calendar類

1.封裝了所有的月曆字段值,通過統一的方法根據傳入不同的月曆字段可以擷取值。

2.建立月曆對象

因為Calendar類是抽象類,很多方法以及字段被定義為Protect,是以提供了一個

類方法getInstance,進而擷取到Calendar的通用對象

Calendar rightNow = Calendar.getInstance();

本質傳回的是子類對象

3.成員方法

A:根據月曆字段得到對應的值

public int get(iCalendar.相應字段)

B:根據月曆字段和一個正負數确定是添加還是減去對應月曆字段的值

public abstract void add(int field,int amount)

C:設定月曆對象的年月日

public final void set(int year, int month,int date)

4.練習

計算任意一年的2月份有多少天?

<span style="font-family:FangSong_GB2312;font-size:18px;"><strong><span style="font-family:FangSong_GB2312;font-size:18px;">package cn.itcast;


import java.util.Calendar;


public class Demo5 {


	/**
	 * 任意一年的2月份有多少天
	 */
	public static void main(String[] args) {
		// 首先建立Calender對象
		Calendar now = Calendar.getInstance();
		int year = 2016;
		// 設定月曆對象因為月份系統的取值隻能到0-11,我們設定月份需要-1,我們設定3月為2
		now.set(year, 2, 1);


		// 通過3月1日後退一天得到二月最後一天
		now.add(Calendar.DAY_OF_MONTH, -1);


		// 通過get方法擷取2月的天數
		int i = now.get(Calendar.DAY_OF_MONTH);
		System.out.println(year + "年的2月份有" + i + "天");


	}


}
</span></strong></span>
           

八.正規表達式

1.含義:符合一定規則的字元串。

2.規則:

A:字元

x  字元 x

\\ 反斜線字元

\r 回車符

\n 換行符

B:字元類

[abc]  a、b 或 c

[^abc] 任何字元,除了 a、b 或 c  

[a-zA-Z] a 到 z 或 A 到 Z,兩頭的字母包括在内 

[0-9]  包括0-9之間的字元

C:預定義字元類

.  任何字元 

\d 數字:[0-9] 

\w 單詞字元:[a-zA-Z_0-9] 

D:邊界比對器

^ 行的開頭 

$ 行的結尾 

\b 單詞邊界

就是指這裡出現的不能使單詞字元。 

he;wor xixi

E:Greedy 數量詞 

X? X,一次或一次也沒有 

X* X,零次或多次 

X+ X,一次或多次 

X{n} X,恰好 n 次 

X{n,} X,至少 n 次 

X{n,m} X,至少 n 次,但是不超過 m 次 

F:組的概念(按照小括号從左開始編号,每一個對應着一個組)

(a(b(c)d(e)))

第一組:a(b(c)d(e))

第二組:b(c)d(e)

第三組:c

第四組:e

可以通過編号來擷取組中内容,組0表示整個表達式。

3.通過String類的功能使用正規表達式

A:判斷功能

public boolean matches(String regex)

B:分割功能

public String[] split(String regex)

C:替換功能

public String replaceAll(String regex,String newString)

疊詞:

在同一個字元串中,右邊引用左邊:"(.)\\1+"

在後一個字元串中引用前面的字元串的組内容:"(.)\\1+","$1"

4.正則正常方法使用步驟:

A:Pattern和Matcher

  Pattern p = Pattern.compile("規則");

  Matcher m = p.matcher("被比對的字元串");

B:Matcher常用方法

  public boolean matches() 比對整個字元串

  public boolean find() 判斷是有有比對到的字元串内容

  public String group() 擷取目前比對到的字元串

  public int start()  擷取目前比對到的字元串的最開始的索引

  public int end() 擷取目前比對到的字元串的最後的索引

5.練習

疊詞切割

<span style="font-family:FangSong_GB2312;font-size:18px;"><strong><span style="font-family:FangSong_GB2312;font-size:18px;">package cn.itcast;

public class Test2 {

	/**
	 * 切割字元串"aa,bb,cc" 
	 * 切割字元串"aa.bb.cc" 
	 * 切割字元串"-1   99 4     23"
	 * 疊詞切割:"sdqqfgkkkhjppppkl"
	 */
	public static void main(String[] args) {
//		定義字元串
		String s="aa,bb,cc";
		//定義切割規則
		String regex = ",";
		String[] string = s.split(regex);
		for (int i = 0; i < string.length; i++) {
			System.out.println(string[i]);
		}
		
		String s2="aa.bb.cc";
		String regex2="\\.";
		String[] string2=s2.split(regex2);
		for (int i = 0; i < string2.length; i++) {
			System.out.println(string2[i]);
		}
		
		String s3="-1   99 4     23";
		String regex3= " +";
		String[] string3=s3.split(regex3);
		for (int i = 0; i < string3.length; i++) {
			System.out.println(string3[i]);
		}
		
		String s4="sdqqfgkkkhjppppkl";
		String regex4="(.)\\1+";
		String[] string4=s4.split(regex4);
		for (int i = 0; i < string4.length; i++) {
			System.out.println(string4[i]);
		}
	}

}
</span></strong></span>
           

疊詞替換

<span style="font-family:FangSong_GB2312;font-size:18px;"><strong><span style="font-family:FangSong_GB2312;font-size:18px;">package cn.itcast;

public class Test3 {

	/**
	 * 用"#"替換疊:"sdaaafghccccjkqqqqql";
	 * 論壇中,凡是數字就使用"*"代替
	 * 用單個字元替換疊:"sdaaafghccccjkqqqqql";
	 * 
	 */
	public static void main(String[] args) {
		String s="sdaaafghccccjkqqqqql";
		
		String regex="(.)\\1+";
		
		String replaceAll = s.replaceAll(regex, "#");
		System.out.println(replaceAll);
		
		String s2="kffnkl204lfhk裡的福利等哈可耗費i1929睡覺覺222kdkd";
		String regex2="[0-9]";
		String replaceAll2 = s2.replaceAll(regex2, "*");
		System.out.println(replaceAll2);
		
		String s3="sdaaafghccccjkqqqqql";
		String regex3= "(.)\\1+";
		String replaceAll3 = s3.replaceAll(regex, "$1");
		System.out.println(replaceAll3);
		
		
		
	}

}
</span></strong></span>
           

擷取特定内容

<span style="font-family:FangSong_GB2312;font-size:18px;"><strong><span style="font-family:FangSong_GB2312;font-size:18px;">package cn.itcast;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/*String str = "da jia zhu yi le, ming tian bu fang jia, xie xie!";
想要擷取3個字母組成的單詞*/

public class Test4 {
	public static void main(String[] args) {
		
		//首先建立正則編譯對象,并綁定規則
		String regex="\\b[a-z]{3}\\b";
		Pattern p= Pattern.compile(regex);
		//組成比對引擎
		String s= "da jia zhu yi le, ming tian bu fang jia, xie xie!";
		Matcher m=p.matcher(s);
		
		//從比對引擎中查找目标類型并輸出
		while(m.find()){
			System.out.println(m.group());
		}
	}
}
</span></strong></span>
           

繼續閱讀