常用類/正則表達式/枚舉

Java第九天學習

常用類/正則表達式/枚舉
1:常用類(Math類,Random類,System類, Runtime類,Date類,SimpleDateFormat類,Calendar類)
1.1.Math類
Math 類提供了一序列基本數學運算和幾何函數的方法。
Math類是final類,並且它的所有成員變量成員方法都是靜態的。
靜態方法列舉:

double pow (double a, double b)

計算 的 次方

double sqrt  (double a) 

計算給定值的平方根

int abs (int a) 

計算 int 類型值 a的絕對值,也接收 longfloat 和 double 類型的參數

double ceil (double a)

返回大於等於 a的最小整數的double

double floor (double a) 

返回小於等於 a的最大整數的double

int max(int a, int b)

返回 int 型值 和 中的較大值,也接收 longfloat 和 double 類型的參數

int min(int a, int b)

返回 和 中的較小值,也可接收 longfloat 和 double 類型的參數

int round(float a);

四捨五入返回整數

double random()

返回帶正號的double值,該值大於等於0.0且小於1.0


eg:
package common;


public class MathDemo {


public static void main(String[] args) {
double powResult=Math.pow(2,3);
System.out.println("2的3次方爲:"+powResult);
System.out.println("8的平方根:"+Math.sqrt(8));
System.out.println("-7.35的絕對值是:"+Math.abs(-7.35));
System.out.println("8.1向上取整:"+Math.ceil(8.1));
System.out.println("9.9向下取整:"+Math.floor(9.9));
System.out.println("8.499四捨五入的結果:"+Math.round(8.499));
System.out.println("8.5四捨五入的結果:"+Math.round(8.5));
System.out.println("隨機返回一個從0.0(包括)到1.0(不包括)值:"+Math.random());
int ran=(int)(Math.random()*16)+3;
System.out.println("隨機返回3到18的數字:"+ran);
System.out.println("圓周率是:"+Math.PI);
}
}

1.2.Random類
Random類的對象可以生成“僞隨機數”。
     常用方法:
   (1).  public int nextInt(int   bound)     (返回從0(包含)到bound(不包含)的一個“僞隨機”   整數值.)
 
      (2).public boolean nextBoolean()     (返回一個“僞隨機”的boolean值)
eg:
package common;

import java.util.Random;

public class RandomDemo {

	public static void main(String[] args) {
		Random ran=new Random();
		int result=ran.nextInt(12)+3;
		System.out.println("隨機返回3到14的數字:"+result);
		System.out.println("隨機返回boolean值:"+ran.nextBoolean());

	}

}


1.3.System類
成員變量
System類內部包含in、out和err三個成員變量,分別代表標準輸入流(鍵盤輸入),標準輸出流(顯示器)和標準錯誤輸出流(顯示器)。
(1)成員方法
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
int[] a = {1,2,3,4};
int[] b = new int[5];
System.arraycopy(a,1,b,3,2);
(2)exit()方法
public static void exit(int status)
該方法的作用是退出程序。其中status的值爲0代表正常退出,非零代表異常退出。使用該方法可以在圖形界面編程中實現程序的退出功能等。
(3)gc()方法
public static void gc()
該方法的作用是請求系統進行垃圾回收。至於系統是否立刻回收,則取決於系統中垃圾回收算法的實現以及系統執行時的情況。
垃圾回收時,會先調用finalize()方法,釋放非java資源
eg:
package common;

public class SystemDemo {

	public static void main(String[] args) {
		System.out.println("正常輸出信息...");
		System.err.println("輸出標準錯誤信息...");
		int[] a = {1,2,3,4};
		int[] b = new int[5];//一創建一個長度爲5的新數組
		System.arraycopy(a,1,b,3,2);   // 數組拷貝,將A處索引爲1的(數字2)開始以後的元素copy到b中(從索引爲3中開始copy)
		
        for(int x:b){
        	System.out.print(x+"  ");
        }
        System.exit(0);   // 退出程序  exit方法

	}

}
gc方法:
eg:
package common;

public class FinalizeDemo {

	public static void main(String[] args) {
		Person per=new Person();
		per=null;   // 將per引用置爲null,使堆內存中的Person對象變爲“垃圾”
        System.gc();  // 顯式請求JVM進行垃圾回收gc
	}

}
(4)currentTimeMillis方法
public static long currentTimeMillis()
以毫秒爲單位返回從1970年1月1日午夜到當前時間的毫秒數
eg:
package common;

public class CurrentTimeMillisDemo {
	public static long currentTimeMillis(){
		CurrentTimeMillis C=new CurrentTimeMillis();
		System.out.println("以毫秒爲單位返回從1970年1月1日午夜到當前時間的毫秒數"+C.currentTimeMillis());
	}
}
1.4.Runtime類
作用:使應用程序與其運行的環境相關聯
通過使用getRuntime()靜態方法獲得實例。
exec(String command)在單獨的進程中執行指定的字符串命令,該方法返回Process對象,使用Process對象的 destroy()方法可以殺掉進程
eg:
package common;

import java.io.IOException;
import java.util.Scanner;

public class RuntimeDemo {

	public static void main(String[] args) {
		Runtime rt= Runtime.getRuntime();
		rt.gc();    // 顯式請求JVM進行垃圾回收gc
        System.out.println("當前JVM的內存總量是:"+rt.totalMemory()+"字節");
        System.out.println("JVM試圖使用的最大內存量:"+rt.maxMemory());   
        System.out.println("當前JVM的空閒內存量:"+rt.freeMemory());
        try {
			rt.exec("notepad");
			rt.exec("calc");
			Process qq=rt.exec("E:\Program Files\TGP\tgp_daemon.exe");   // 打開TGP
			Scanner scan=new Scanner(System.in);
			System.out.print("要打開騰訊遊戲平臺麼?y/n");
			String choice=scan.next();
			if("y".equals(choice)){
				qq.destroy();   // 銷燬進程
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}
1.5.Date類與SimpleDateFormat類
Date類:表示日期和時間:提供操作日期和時間各組成部分的方法
SimpleDateFormat類:用於定製日期時間的格式
方法:
Date date = new Date();    //創建日期對象  
SimpleDateFormat sdf= new SimpleDateFormat("yyyy-  
    MM-dd HH:mm:ss");//定製日期格式
String now = sdf.format(date);
System.out.println(now);
eg:
package common;

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

public class SimpleDateFormatDemo {

	public static void main(String[] args) {
		Date date=new Date();
		System.out.println(date);
		SimpleDateFormat sdf=new SimpleDateFormat("xxxx.xx.xx HH:mm:ss.SSS");   // 傳遞日期模版,實例化SimpleDateFormat對象
		System.out.println("現在時刻:"+sdf.format(date));//調用方法
	}

}
1.6.Calendar類
抽象類
  用於設置和獲取日期/時間數據的特定部分
Calendar類提供一些方法和靜態字段來操作日曆

方法或屬性

說明

int get(int field)

返回給定日曆字段的值

MONTH

指示月

DAY_OF_MONTH

指示一個月中的某天

DAY_OF_WEEK

指示一個星期中的某天

eg:
package common;


import java.util.Calendar;


public class CalendarDemo {


	public static void main(String[] args) {
		Calendar cal=Calendar.getInstance();
		System.out.println("第幾個月:"+(cal.get(Calendar.MONTH)+1));
        System.out.println("當前月的第幾天:"+cal.get(Calendar.DAY_OF_MONTH));
        System.out.println("星期幾:"+cal.get(Calendar.DAY_OF_WEEK));
        System.out.println("今年的第幾天:"+cal.get(Calendar.DAY_OF_YEAR));
        System.out.println("*******************************");
        cal.set(1937, 6, 7);   // 調整日曆
        System.out.println("第幾個月:"+(cal.get(Calendar.MONTH)+1));
        System.out.println("當前月的第幾天:"+cal.get(Calendar.DAY_OF_MONTH));
        System.out.println("星期幾:"+cal.get(Calendar.DAY_OF_WEEK));
        System.out.println("今年的第幾天:"+cal.get(Calendar.DAY_OF_YEAR));
	}


}
二:正則表達式
正則表達式(regex)是使用字符串來描述、匹配一系列符合某個句法規則的字符串
用途:
匹配、切割、替換、獲取字符串
常見元字符:

元字符

描述

^

匹配輸入字符串的開始位置

$

匹配輸入字符串的結束位置

\d

匹配一個數字字符。等價於[0-9]

\D

匹配一個非數字字符。等價於[^0-9]

\s

匹配任何空白字符,包括空格、製表符、換頁符等等。等價於[ \n\r\t\f]

\S

匹配任何非空白字符。等價於[^\n\r\t\f]

\w

匹配包括下劃線的任何單個字符。等價於"[A-Za-z0-9_]"




\W

匹配任何非單個字符。等價於“[^A-Za-z0-9_]”

.

匹配除“\r\n”之外的任何單個字符

{n}

n是一個非負整數。匹配確定的n

{n,}

n是一個非負整數。至少匹配n

{n,m}

mn均爲非負整數,其中n<=m。最少匹配n次且最多匹配m

          *

匹配前面的子表達式零次或多次(大於等於0)

                  ??

匹配前面的子表達式零次或一次

       +

匹配前面的子表達式一次或多次(大於等於1次)

“\”到底是個啥?****
在Java中反斜線”\”有三種含義:
1. 反斜線後面可以加特定字符,組成所謂的“轉義字符”。eg:  \n    \t  
2. 用於取消元字符的意義,使元字符變爲普通字符。eg:  “\\” 代表”\”。
3. 用於組成正則表達式中的元字符
     eg:  “\d” 在正則表達式中代表“匹配一個數字字符”。

2.1.Pattern類與Matcher類
    1. Pattern類與Matcher類都在java.util.regex包    中定義。
     2. Pattern類的對象代表正則表達式編譯之後的對象;Matcher類主要用於執行驗證。
     3.Pattern類的主要方法:
        public static Pattern compile(String regex);
        public Matcher matcher(CharSequence input)
        Matcher類的主要方法:
        public boolean matches();
eg:
package regex;

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

public class RegexMatch {

	public static void main(String[] args) {
		String birthday="1994-02-25";
		String regex="\\d{4}-\\d{2}-\\d{2}";
		Pattern pat=Pattern.compile(regex);  // 將正則表達式封裝到Pattern對象中
		Matcher mat=pat.matcher(birthday);   // 創建一個匹配器Matcher,該Matcher對象可以根據正則表達式判斷傳入的字符串是否符合要求
		if(mat.matches()){
			System.out.println("匹配成功!");
		}else{
			System.out.println("匹配失敗...");
		}

	}

}
2.2.String類對正則表達式的支持
1.  public boolean matches(String regex)
     判斷字符串是否與給定的正則表達式匹配。


2. public String replaceAll(String regex,String replacement)   字符串替換


3. public String[] split(String regex) 字符串拆分 
eg:
package regex;

public class StringRegex {

	public static void main(String[] args) {
		String str="hello1java22regex333python4444C55555";
		if(str.matches("\\w+")){
			System.out.println("匹配成功!");
		}
		System.out.println("替換後的字符串爲:"+str.replaceAll("\\d+","#")); //將數字字符替換爲#
		
		String City="西安|綏德|四十鋪|薛家寺";
		String[] array=City.split("\\|");
		for(String c:array){   //數組拷貝
			System.out.print(c+"  ");
		}

	}

}
1.  正則表達式中的問號?有兩種作用:
          第一種作用:重複前面表達式0次或1次。
          第二種作用:在表示次數的元字符後加上?    代表取消默認的貪婪匹配模 式,變爲“非貪婪匹配模式”。

eg:
package regex;

public class GreedyRegex {

	public static void main(String[] args) {
		String str="abbbbbbb";
		System.out.println("貪婪模式匹配: "+str.replaceAll("ab+","#"));    // "貪婪匹配"
		System.out.println("非貪婪模式匹配: "+str.replaceAll("ab+?","#"));

	}

}
輸出結果:
貪婪模式匹配: #
非貪婪模式匹配: #bbbbbb
練習:中國的郵政編碼都是6位
手機號碼都是11位,並且第1位都是1
Email驗證
eg:
package regex;

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

public class EmailRegex {

	public static void main(String[] args) {
		String emailRegex="\\w+@\\w+\\.\\w+\\.?\\w+";
		
        Scanner scan=new Scanner(System.in);
        System.out.print("請輸入郵箱:");
        String email=scan.next();
        Pattern pat=Pattern.compile(emailRegex);  // 將正則表達式封裝到Pattern對象中
		Matcher mat=pat.matcher(email);   // 創建一個匹配器Matcher,該Matcher對象可以根據正則表達式判斷傳入的字符串是否符合要求
		if(mat.matches()){
			System.out.println("恭喜,郵箱格式正確!");
		}else{
			System.out.println("對不起,郵箱格式不正確!");
		}

	}

}
package regex;

import java.util.Scanner;

public class PhoneNumber {

	public static void main(String[] args) {
		Scanner scan=new Scanner(System.in);
		System.out.print("請輸入手機號碼:");
		String phone=scan.next();
		if(phone.matches("1\\d{10}")){
			System.out.println("恭喜,手機號碼符合要求");
		}else{
			System.out.println("不符合要求!");
		}
		

	}

}
三. 枚舉類型
1. 枚舉類型使用一組常量值來表示特定的數據集合,該集合中數據的數目確定(通常較少),且這些數據只能取預先定義的值。
2. Java枚舉類型均自動繼承java.lang.Enum類(該類繼承了Object類)。
聲明枚舉類型:
[public] enum 枚舉類型名稱{
     枚舉對象1,枚舉對象2,…,枚舉對象n ;
}


eg:  public enum Color{
       RED,GREEN,BLUE;
}
獲取枚舉對象的兩種方法:
方法一:取得單個枚舉對象
                枚舉.對象名


方法二:取得全部枚舉對象
                枚舉.values()
     注意:枚舉.values()返回的是一個對象數組,  可以通過遍歷該對象數組獲取所有枚舉對象。
eg:
package enumdemo;

public enum ColorEnum {
   RED,GREEN,BLUE;
}



package enumdemo;

public class TestColor {

	public static void main(String[] args) {
		ColorEnum r=ColorEnum.RED;
		System.out.println(r);
		System.out.println("遍歷所有枚舉對象:");
		for(ColorEnum c:ColorEnum.values()){
			System.out.print(c+"  ");
		}

	}

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章