JAVASE_day04(2)常用類(System/數學類/字符串/隨機數/日期)

System:

----------------------------------------分割線----------------------------------------------

System:

package com.anonymous.javase.day04;


public class Demo3 {
	protected void finalize() {
		System.out.println("我被回收了");
	}
	//System
	public static void main(String[] args) {
		//返回當前系統時間(毫秒數)
		/**
		 * 一般使用在數據庫中的某個文件的創建時間和保存時間
		 */
		long times = System.currentTimeMillis();
		System.out.println(times);
		
		//垃圾收集器運行(表示強制回收)(用的很少)
		new Demo3();
		new Demo3(); 
		System.gc();
		//底層默認調用Runtime中的gc()方法
		/**
		 * 底層Runtime對象不可以創建對象,這說明一個問題,只要是某個類中,沒有提供
		 * 給我們創建的,說明一定採用單利模式,
		 * 那麼該類中一定有一個靜態的實例可以返回對象,
		 * 實例的命名一般是get....();
		 */

		//終止當前的虛擬機
		/**
		 * 很少用,一般用於一些程序運行不了,就終止該程序運行
		 */
		//System.exit(-1);(避免影響後面的程序)
	}
}

Math/BigDecimal/BigInteger(這裏不演示BigInteger)(很少很少用到一般的long就足夠處理了)

package com.anonymous.javase.day04;

import java.math.BigDecimal;

public class Demo4 {
	/*	和數學常用三個相關的常用類:
		1.Math:Math 類包含用於執行基本數學運算的方法,
		如初等指數、對數、平方根和三角函數。 

		2.BigDecimal:float和double都不能表示精確的小數,
		此時使用BigDecimal,用於處理金錢的精確度來表示

		3.BigInteger:表示大型整數,當兩個long相加時,
		long儲存不了數據此時使用BigInteger來儲存
		加減乘除和BigDecimal來表示*/
	
	public static void main(String[] args) {
		//Math:
		//返回絕對值:
		int abs = Math.abs(-34);
		System.out.println(abs);//34
		
		//返回n次冪
		/**
		 * 如果出現數據過大,而double無法裝載,
		 * 將包裝數據之後再進行輸出
		 */
		double pow = Math.pow(4, 4);
		System.out.println(pow);//256.0
		//最大數&最小數
		int max = Math.max(34, 45);
		System.out.println(max);//45
		int min = Math.min(34, 11);
		System.out.println(min);//11
		
		//隨機數
		double random = Math.random()*10;//範圍[0-1]
		double floor = Math.floor(random+1);
		System.out.println(floor);
		
		//向下取整
		/**
		 * 去掉小數點
		 */
		double floor2 = Math.floor(23.9);
		double floor3 = Math.floor(23.1);
		System.out.println(floor2);//23
		System.out.println(floor3);//23

		//向上取整
		/**
		 * 去掉小數點+1
		 */
		double ceil = Math.ceil(34.1);
		double ceil2 = Math.ceil(34.9);
		System.out.println(ceil);//34
		System.out.println(ceil2);//34
		
		//四捨五入
		long round = Math.round(34.1);
		long round2 = Math.round(34.9);
		System.out.println(round);//34
		System.out.println(round2);//35
		
		
		/*-----------------------------------------------*/
		double d1 =  0.01;
		double d2 = 0.09;
		System.out.println(d1+d2);
		//0.09999999999999999
		//可以利用BigDecimal解決數據混亂問題
		BigDecimal b1 = new BigDecimal(0.01);
		BigDecimal b2 = new BigDecimal(0.09);
		BigDecimal add = b1.add(b2);
		System.out.println(add);
		//0.09999999999999999687749774324174723005853593349456787109375
		/**
		 * 怎麼數據還是出現錯誤,難道這個類有問題?
		 * 其實是使用錯誤.
		 * BigDecimal中有一句:
		 * 此構造方法的結果有一定的不可預知性。
		 * 有人可能認爲在 Java 中寫入 new BigDecimal(0.1) 
		 * 所創建的 BigDecimal 正好等於 0.1(非標度值 1,其標度爲 1),
		 * 但是它實際上等於 0.1000000000000000055511151231257827021181583404541015625。
		 * 這是因爲 0.1 無法準確地表示爲 double(或者說對於該情況,
		 * 不能表示爲任何有限長度的二進制小數)。這樣,
		 * 傳入 到構造方法的值不會正好等於 0.1(雖然表面上等於該值)。 
			另一方面,String 構造方法是完全可預知的:
			寫入 new BigDecimal("0.1") 將創建一個 BigDecimal,
			它正好 等於預期的 0.1。因此,比較而言,
			通常建議優先使用 String 構造方法。 
		 */
		/*上面說的就是直接傳入duoble或者float類型的數據,就會出現數據不能預知的效果,
		 * 需要將數據轉換爲字符串之後,在將數據進行運算
		 */
		
		BigDecimal b3 = new BigDecimal("0.01");
		BigDecimal b4 = new BigDecimal("0.09");
		//相加
		BigDecimal add2 = b3.add(b4);
		System.out.println(add2);//0.10
		//相乘
		BigDecimal multiply = b3.multiply(b4);
		System.out.println(multiply);//0.0009
		//相除
		BigDecimal divide = b4.divide(b3);
		//如果使用b3除b4.會出現無限循環小數,計算機不可控制,就會報錯(可以將數據處理在輸出)
		System.out.println(divide);//9
		//相減
		BigDecimal subtract = b3.subtract(b4);
		System.out.println(subtract);//-0.08
		
	}

}

package com.anonymous.javase.day04;

public class Demo5 {
	public static void main(String[] args) {
		//String轉換爲byte
		System.out.println("String-->byte".getBytes());//[B@5c3eeab3
		//String轉換爲char
		System.out.println("String-->char".toCharArray());//String-->char
		//byte轉換爲String
		System.out.println(new String("String-->byte".getBytes()));//String-->byte
		//char轉換爲String
		System.out.println(new String("String-->char".toCharArray()));//String-->char
		
		/*--------------------------------*/
		String str = "AStringABCD";
		//字符串的長度
		System.out.println(str.length());//10
		//獲取指定位置的的字符
		System.out.println(str.charAt(3));//i
		//獲取指定字符第一次出現的位置(從左往右)
		System.out.println(str.indexOf("A"));//0
		//獲取字符最後一次出現的位置(從右往左)
		System.out.println(str.lastIndexOf("A"));
		
		/*字符串的判斷*/
		//比較字符是否相等
		/**
		 * ==是比較地址是否相同
		 * equals是比較字符串的內容
		 */
		System.out.println("str".equals("str"));//true
		
		//忽略大小寫,比較字符串內容是否相同
		System.out.println("STR".equalsIgnoreCase("str"));//true
		
		/*大小寫轉換*/
		//大轉小
		System.out.println("STRING".toLowerCase());//string
		//小轉大
		System.out.println("string".toUpperCase());//STRING
		
		//trim的使用忽略前後空格
		System.out.println(" String ");// String 
		System.out.println(" String ".trim());//String
		String str2 = "";
		boolean trim = isTrim(str2);
		System.out.println(trim);
		System.out.println(isNull(str2));
	}

	//判斷不爲空
	private static boolean isTrim(String str) {
		if(str!=null&&!"".equals(str.trim())){
			return true;
		}
		return false;
	}
	
	//判斷爲空
	private static boolean isNull(String str){
		return !isTrim(str);
	}
}

package com.anonymous.javase.day04;


abstract class TestTime{
	final public void getTime(){
		long start= System.currentTimeMillis();
		this.getwork();
		System.out.println(System.currentTimeMillis()-start);
	}
	abstract public void getwork();
}
//String
class StringTest extends TestTime{
	public void getwork(){
		String str = "1";
		for (int i = 0; i < 100000; i++) {
			str +="23";
		}
	}
}

//StringBuffer
class StringBufferTest extends TestTime{

	@Override
	public void getwork() {
		StringBuffer stringBuffer = new StringBuffer("123");
		for (int i = 0; i < 100000; i++) {
			stringBuffer.append("23");
		}
	}
	
}

//StringBuilder
class StringBuilderTest extends TestTime{

	@Override
	public void getwork() {
		StringBuilder stringBuffer = new StringBuilder("123");
		for (int i = 0; i < 100000; i++) {
			stringBuffer.append("23");
		}
	}
	
}

public class Demo6 {
	public static void main(String[] args) {
		new StringTest().getTime();//5457
		new StringBufferTest().getTime();//5
		new StringBuilderTest().getTime();//3
		
	}
}

package com.anonymous.javase.day04;

import java.util.Random;
import java.util.UUID;
import java.util.concurrent.ThreadLocalRandom;

public class Demo7 {
	public static void main(String[] args) {
		//Random
		Random random = new Random();
		//獲取[-2147483648,2147483647]的隨機數
		int nextInt = random.nextInt();
		System.out.println(nextInt); 
		//獲取[0,1000]隨機數
		int nextInt2 = random.nextInt(1000);
		System.out.println(nextInt2);
		//獲取[true,false]隨機值
		boolean nextBoolean = random.nextBoolean();
		System.out.println(nextBoolean);
		/**
		 * 其他用法差不多
		 */
		
		/*ThreadLocalRandom(java1.7)*/
		
		ThreadLocalRandom current = ThreadLocalRandom.current();
		
		int nextInt3 = current.nextInt();
		//獲取[-2147483648,2147483647]的隨機數
		System.out.println(nextInt3);
		//獲取[20,40]的值
		System.out.println(current.nextInt(20, 40));
		
		/*UUID(java1.8)*/
		UUID randomUUID = UUID.randomUUID();
		System.out.println(randomUUID);
	}
}

日期:

package com.anonymous.javase.day04;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
//Date日期類使用
//DateFormat日期的格式化操作.(固定格式)
/**
 * 
 * Date中的大部分方法已經被禁用,不做詳細解釋
 *
 */
public class Demo8 {
	public static void main(String[] args) throws ParseException {
		//Date
		dateTest();
		//DateFormat
		dateFormatTest();
		//SimpleDateFormat
		simpleDateFormatTest();
		//Calendar
		calendarTest();
		
	}
	
	public static void dateTest(){
		Date date = new Date();
		//測試給出的日期是否在當前日期之後
		System.out.println(date.after(new Date(344234213L)));
		//測試給出的日期是否在當前日期之前
		System.out.println(date.before(new Date(345092452L)));
		System.out.println(date);
	} 
	
	public static void dateFormatTest() throws ParseException{
		//如果不設置參數(按照本機環境來格式化日期)
		/**getDateInstance()
		 * 默認本機格式化--->表示自己所在的地區來設置
		 */
		DateFormat format = DateFormat.getDateInstance();
		String format2 = format.format(new Date());
		System.out.println(format2);//2018-5-4
		//DateFormat設置參數
		//只顯示日期,不顯示時間
		DateFormat format3 = DateFormat.getDateInstance(DateFormat.LONG,//表示日期是長風格(DateFormat.LONG)還是短風格(DateFormat.SHORT)
									Locale.US//表示設置當前日期的所在地區的
									//CHINA--->2018年5月4日
									//US--->May 4, 2018
		);
		String format4 = format3.format(new Date());
		System.out.println(format4);
		
		
		//顯示日期和時間
		/**getDateTimeInstance()
		 * 默認是按照本地環境來轉換時間格式,同樣是
		 */
		DateFormat dateTimeInstance = DateFormat.getDateTimeInstance();
		String format5 = dateTimeInstance.format(new Date());
		System.out.println(format5);//2018-5-4 11:49:34
		
		DateFormat dateTimeInstance2 = DateFormat.getDateTimeInstance(
						DateFormat.LONG,//日期的長風格
						DateFormat.LONG,//時間的長風格
						Locale.US);//設置區域
		String format6 = dateTimeInstance2.format(new Date());
		System.out.println(format6);//May 4, 2018 11:53:06 AM CST
		
		
		DateFormat dateTimeInstance3 = DateFormat.getDateTimeInstance(
						DateFormat.SHORT,//日期短風格
						DateFormat.SHORT,//日期短風格
						Locale.CHINA);//設置區域
		String format7 = dateTimeInstance3.format(new Date());
		System.out.println(format7);//18-5-4 上午11:55
		
	} 
	
	public static void simpleDateFormatTest() throws ParseException{

		/*SimpleDateFormat*/
		
		SimpleDateFormat simpleDateFormat = new SimpleDateFormat();
		String pattern = "yyyy/MM/dd HH:mm:ss:SSSS";
		//申請格式化方式
		simpleDateFormat.applyPattern(pattern);
		//格式化
		String format8 = simpleDateFormat.format(new Date());
		System.out.println(format8);
		//解析
		Date parse = simpleDateFormat.parse(format8);
		System.out.println(parse);
	}
	
	/*Calendar*/
	/**
	 * 
	 */
	public static void calendarTest(){
		Calendar instance = Calendar.getInstance(Locale.CHINA);
		Date time = instance.getTime();
		System.out.println(time);
		System.out.println("年:"+instance.get(Calendar.YEAR));
		System.out.println("月:"+(instance.get(Calendar.MONTH)+1));
		System.out.println("日:"+instance.get(Calendar.DATE));
		System.out.println("時:"+instance.get(Calendar.HOUR_OF_DAY));
		System.out.println("分:"+instance.get(Calendar.MINUTE));
		System.out.println("秒:"+instance.get(Calendar.SECOND));
		int week = instance.get(Calendar.DAY_OF_WEEK)-1;
		String weekDay = null;
		switch(week){
		case 1: weekDay = "一";break;
		case 2: weekDay = "二";break;
		case 3: weekDay = "三";break;
		case 4: weekDay = "四";break;
		case 5: weekDay = "五";break;
		case 6: weekDay = "六";break;
		default: weekDay = "天";
		
		}
		System.out.println("星期"+weekDay);
	}
}

日期的格式化和解析:


package com.anonymous.javase.day04;

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

public class Demo9 {
	private static final String DEFAUL_DATE = "yyyy-MM-dd HH-mm-ss"; 
	
	public static String getDefaulDate() {
		return DEFAUL_DATE;
	}

	public static void main(String[] args) {
		/*日期的練習操作(String和Date的相互轉換)*/
		//格式化操作
		//Date---->String
		String dateString = DateString("asdfs",new Date());
		System.out.println(dateString);
		//String---->Date
		
		
	}
	
	public static String DateString(String parse,Date date){
		SimpleDateFormat simpleDateFormat = new SimpleDateFormat();
		if(parse==null||"".equals(parse.trim())){
			parse = getDefaulDate();
		}
		try{
			simpleDateFormat.applyPattern(parse);
		}catch(Exception e){
			throw new IllegalArgumentException("格式不正確");
		}
		String format = simpleDateFormat.format(date);
		return format;
	}
	
	public static Date StringDate(String parse,String disDate) throws ParseException{
		SimpleDateFormat simpleDateFormat = new SimpleDateFormat(disDate);
		if(parse==null||"".equals(parse.trim())){
			parse = getDefaulDate();
		}
			Date parse2 = simpleDateFormat.parse(parse);
		return parse2;
	}
}

案例:


package com.anonymous.javase.day04;

import java.util.Calendar;
import java.util.Date;

public class Demo10 {
	public static void main(String[] args){
		Calendar instance = Calendar.getInstance();
		//開始時間
		instance.add(Calendar.YEAR, -3);
		instance.set(Calendar.HOUR_OF_DAY, 00);
		instance.set(Calendar.MINUTE, 00);
		instance.set(Calendar.SECOND, 00);
		Date time = instance.getTime();
		instance.add(Calendar.DAY_OF_MONTH, 7);
		Date time2 = instance.getTime();
		System.out.println("開始時間"+time.toLocaleString());
		System.out.println("結束時間"+time2.toLocaleString());
		
	}
}


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