JAVASE_day04(2)常用类(System/数学类/字符串/随机数/日期)

本文介绍了Java中的关键概念和技术,包括垃圾回收机制、数学运算、字符串操作、日期处理、随机数生成等内容,为Java开发者提供了实用的技术指导。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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());
		
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值