JAVA笔记__System&Runtime&Math&Date(Day 20)

System

java.lang.System
全是静态的属性和行为。

out:标准输出流,默认对应设备是显示器。
in:标准输入流,默认的设备是键盘。
public static long currentTimeMillis()
返回以毫秒为单位的当前时间
public static Properties getProperties()
确定当前的系统属性

时间演示:

//SystemDemo
class ExtendsDemo3 {
	public static void main(String[] args) {
		//currentTimeMillis,返回以毫秒为单位的当前时间
		long time=System.currentTimeMillis();
		System.out.println(time);
	}
}

系统演示:
属性列表中每个键及其对应值都是一个字符串。所以不需要定义泛型。

import java.util.Properties;
import java.util.Set;

import org.omg.Messaging.SyncScopeHelper;

//SystemDemo
class ExtendsDemo3 {
	public static void main(String[] args) {
		
		//获取到的系统信息都存储到Properties键值集合中了。
		Properties prop=System.getProperties();
		
	    //如何取出属性集。
		Set<String> keySet=prop.stringPropertyNames();
		
		for(String key:keySet) {
			String value=prop.getProperty(key);
			System.out.println(key+":"+value);
		}
		
		//看运行的系统名称
		System.out.println(prop.getProperty("os.name"));
		
		//路径,文件间隔符,各系统同域
		System.out.println("c:"+System.getProperty("file.separator")+"abc"+System.getProperty("file.separator")+"1.text");
		
		//换行
		System.out.println("hello"+System.getProperty("line.separator")+"world");
		
		//路径分隔符 windows;  linux:
		System.getProperty(System.getProperty("path.separator"));
		
	}
}

//所有属性
java.runtime.name:Java(TM) SE Runtime Environment
sun.boot.library.path:E:\jre\bin
java.vm.version:25.191-b12
java.vm.vendor:Oracle Corporation
java.vendor.url:http://java.oracle.com/
path.separator:;
java.vm.name:Java HotSpot(TM) 64-Bit Server VM
file.encoding.pkg:sun.io
user.script:
user.country:CN
sun.java.launcher:SUN_STANDARD
sun.os.patch.level:
java.vm.specification.name:Java Virtual Machine Specification
user.dir:F:\eclipse_workspace\hello
java.runtime.version:1.8.0_191-b12
java.awt.graphicsenv:sun.awt.Win32GraphicsEnvironment
java.endorsed.dirs:E:\jre\lib\endorsed
os.arch:amd64
java.io.tmpdir:C:\Users\lenovo\AppData\Local\Temp\
line.separator:

java.vm.specification.vendor:Oracle Corporation
user.variant:
os.name:Windows 10
sun.jnu.encoding:GBK
java.library.path:E:\jre\bin;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;E:/jre/bin/server;E:/jre/bin;E:/jre/lib/amd64;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;E:\latex\CTEX\UserData\miktex\bin;E:\latex\CTEX\MiKTeX\miktex\bin;E:\latex\CTEX\CTeX\ctex\bin;E:\latex\CTEX\CTeX\cct\bin;E:\latex\CTEX\CTeX\ty\bin;E:\latex\CTEX\Ghostscript\gs9.05\bin;E:\latex\CTEX\GSview\gsview;E:\latex\CTEX\WinEdt;C:\WINDOWS\System32\OpenSSH\;";E:\jdk1.8\bin;E:\jdk1.8\jre\bin";E:\jdk1.8\bin;E:\python3.5.3\Scripts\;E:\python3.5.3\;C:\Users\lenovo\AppData\Local\Microsoft\WindowsApps;;E:\learning\eclipseapk\eclipse-jee-2018-09-win32-x86_64\eclipse;;.
java.specification.name:Java Platform API Specification
java.class.version:52.0
sun.management.compiler:HotSpot 64-Bit Tiered Compilers
os.version:10.0
user.home:C:\Users\lenovo
user.timezone:
java.awt.printerjob:sun.awt.windows.WPrinterJob
file.encoding:GBK
java.specification.version:1.8
user.name:lenovo
java.class.path:F:\eclipse_workspace\hello\bin
java.vm.specification.version:1.8
sun.arch.data.model:64
java.home:E:\jre
sun.java.command:com.covnew.demo.ExtendsDemo3
java.specification.vendor:Oracle Corporation
user.language:zh
awt.toolkit:sun.awt.windows.WToolkit
java.vm.info:mixed mode
java.version:1.8.0_191
java.ext.dirs:E:\jre\lib\ext;C:\WINDOWS\Sun\Java\lib\ext
sun.boot.class.path:E:\jre\lib\resources.jar;E:\jre\lib\rt.jar;E:\jre\lib\sunrsasign.jar;E:\jre\lib\jsse.jar;E:\jre\lib\jce.jar;E:\jre\lib\charsets.jar;E:\jre\lib\jfr.jar;E:\jre\classes
java.vendor:Oracle Corporation
file.separator:\
java.vendor.url.bug:http://bugreport.sun.com/bugreport/
sun.cpu.endian:little
sun.io.unicode.encoding:UnicodeLittle
sun.desktop:windows
sun.cpu.isalist:amd64

Runtime

没有构造方法 不能新建对象
如果一个类在没有构造器的情况下还有非静态方法,说明这个类至少还有一个静态的方法。

可以获得虚拟机内存
演示

import java.io.IOException;
import java.util.Properties;
import java.util.Set;

import org.omg.Messaging.SyncScopeHelper;

//RuntimeDemo
class ExtendsDemo3 {
	public static void main(String[] args) throws IOException {
		/*
		 * 单例模式的对象Runtime
		 */
		Runtime r=Runtime.getRuntime();
		//运行记事本
		r.exec("notepad.exe");
		//r.exec("notepad.exe"+路径);可以打开一个文档
	}
}

Math

java.lang.Math
Math:数学类,都是静态的成员。

import java.util.Random;

//MathDemo
class ExtendsDemo3 {
	public static void main(String[] args) {

		// 大于参数的最小整数
		double d1 = Math.ceil(12.34);
		System.out.println(d1);// 13.0

		// 小于参数的最大整数
		double d2 = Math.floor(12.34);
		System.out.println(d2);// 12.0

		// 四舍五入
		double d3 = Math.round(12.34);
		System.out.println(d3);// 12.0

		// 10的3次方
		System.out.println(Math.pow(10, 3));

		// 随机数[0,1)
		for (int x = 0; x < 10; x++) {
			double d = Math.random();
			System.out.println(d);
		}

		// 随机数[0,6)
		for (int x = 0; x < 10; x++) {
			double d = Math.random() * 6;
			System.out.println(d);
		}

		// 随机数的向上取整
		// 随机数[0,6)
		for (int x = 0; x < 10; x++) {
			int d = (int) Math.ceil(Math.random() * 6);
			System.out.println(d);
		}

		// java.util.Random
		Random r = new Random();
		for (int x = 0; x < 10; x++) {
			double d = r.nextDouble();
			int d11 = r.nextInt(6)+1;//[1,7),相当于(0,6]
			System.out.println("random:double" + d);
			System.out.println("random:int" + d11);
		}
	}
}

Date

java.util.Date

日期的格式化

演示Date对象:

风格(style):
默认:2019-3-14
FULL:2019314日 星期四
LONG:2019314日
MEDIUM:2019-3-14
SHORT:19-3-14

DateFormat dateFormat2=DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL):
2019314日 星期四 下午044313秒 CST

DateFormat dateFormat1=DateFormat.getDateInstance(DateFormat.FULL);



使用DateFormat的format方法对日期对象进行格式化。将日期对象转成日期格式的字符串。
String str_date1=dateFormat1.format(date);
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

//DateDemo
class ExtendsDemo3 {
	public static void main(String[] args) {

		Date date=new Date();
		System.out.println(date);//Thu Mar 14 16:01:31 CST 2019
			
		/*
		 * 想要把日期 按照我们的习惯格式化一下。
		 * 找到了DateFormat类
		 */
		
		//通过DateFormat类中的静态工厂方法获取实例。
		DateFormat dateFormat=DateFormat.getDateInstance();
		//使用DateFormat的format方法对日期对象进行格式化。
		String str_date=dateFormat.format(date);
		System.out.println(str_date);//2019-3-14
		
		
		//加入风格。
		DateFormat dateFormat1=DateFormat.getDateInstance(DateFormat.FULL);
		String str_date1=dateFormat1.format(date);
		System.out.println(str_date1);//2019年3月14日 星期四
		
		
		DateFormat dateFormat2=DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL);
		
		String str_date2=dateFormat2.format(date);//将日期对象转成日期格式的字符串。
		System.out.println(str_date2);//2019年3月14日 星期四 下午04时43分13秒 CST
		
		//自定义格式
		DateFormat dateFormat3=new SimpleDateFormat("yyyy/MM/dd hh:mm:ss");
		String str_date3=dateFormat3.format(date);//将日期对象转成日期格式的字符串。
		System.out.println(str_date3);//2019/03/16 07:28:10
	}
}

日期的解析

“日期格式的字符串:2013-07-17”
需要将日期格式的字符串转成日期对象。解析。

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

//DateDemo2
class ExtendsDemo3 {
	/*
	 * "日期格式的字符串:2013-07-17"
             需要将日期格式的字符串转成日期对象。解析。
	 */
	public static void main(String[] args) throws ParseException {

		String str_date="2013-07-17";
		
		DateFormat dateFormat=DateFormat.getDateInstance();//返回的是日期对象。
		
		Date date=dateFormat.parse(str_date);
		
		System.out.println(date);//Wed Jul 17 00:00:00 CST 2013
	}
}

日期对象和毫秒值的转换

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

//DateDemo3
class ExtendsDemo3 {
	
	public static void main(String[] args)  {
		//==========毫秒值-->日期对象  构造函数 seTime方法。===========
		long time=System.currentTimeMillis();
		System.out.println(time);//1552737944603
		
		
		//long time1=1352737944603;
		Date date =new Date(time);
		
		DateFormat dateFormat=DateFormat.getDateInstance(DateFormat.LONG);
		String str_date=dateFormat.format(date);
		System.out.println(str_date);
		
		//日期对象转成毫秒值。Date的对象getTime方法======毫秒值能相加相减
		long time2=date.getTime();
		System.out.println(time2);
	}
}

日历对象Calendar

演示

注:mouth=[0,11]
星期:日,一,二,三……

演示:

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

//Calender
class ExtendsDemo3 {

	public static void main(String[] args) {
		Calendar c = Calendar.getInstance();
		System.out.println(c);
		//注:mouth=[0,11]
		
		//获取其中的所需日期。
		int year=c.get(Calendar.YEAR);
		int month=c.get(Calendar.MONTH)+1;
		int day=c.get(Calendar.DAY_OF_MONTH);
		String week=getweek(c.get(Calendar.DAY_OF_WEEK));
		System.out.println(year+"年"+month+"月"+day+"日"+week);

	}

	private static String getweek(int i) {
		if(i>7||i<0) {
			throw new NoWeekException("没有对应的星期");
		}
		String[] weeks= {"","星期日","星期一","星期二","星期三","星期四","星期五","星期六",};
		return weeks[i];
	}
}

时间设置&偏移

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

//Calender
class ExtendsDemo3 {

	public static void main(String[] args) {
		Calendar c = Calendar.getInstance();
		System.out.println(c);
		//注:mouth=[0,11]
		
		//对日历对象进行其中日期的定义。
		//c.set(Calendar.YEAR,2014);
		//c.set(2014,4,1);//2014年5月1日
		
		//对日期的偏移
		c.add(Calendar.YEAR,4);//在年的基础上加4年
		c.add(Calendar.MONTH,6);//在月的基础上减4年(实际的月比当前月少1)
		
		//获取其中的所需日期。
		showDate(c);
	}

	private static void showDate(Calendar c) {
		int year=c.get(Calendar.YEAR);
		int month=c.get(Calendar.MONTH)+1;
		int day=c.get(Calendar.DAY_OF_MONTH);
		String week=getweek(c.get(Calendar.DAY_OF_WEEK));
		System.out.println(year+"年"+month+"月"+day+"日"+week);
	}

	private static String getweek(int i) {
		if(i>7||i<0) {
			throw new NoWeekException("没有对应的星期");
		}
		String[] weeks= {"","星期日","星期一","星期二","星期三","星期四","星期五","星期六",};
		return weeks[i];
	}
}

练习

任意一年二月有多少天。
三月一日的前一天就是。

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

//Calender
class ExtendsDemo3 {

	public static void main(String[] args) {
		Calendar c = Calendar.getInstance();
		System.out.println(c);
		//注:mouth=[0,11]
	
		//任意一年二月有多少天。三月一日的前一天就是。
		int year=2012;
		c.set(year,2,1);
		c.add(Calendar.DAY_OF_MONTH,-1);
		
		//获取其中的所需日期。
		showDate(c);
	}

	private static void showDate(Calendar c) {
		int year=c.get(Calendar.YEAR);
		int month=c.get(Calendar.MONTH)+1;
		int day=c.get(Calendar.DAY_OF_MONTH);
		String week=getweek(c.get(Calendar.DAY_OF_WEEK));
		System.out.println(year+"年"+month+"月"+day+"日"+week);
	}

	private static String getweek(int i) {
		if(i>7||i<0) {
			throw new NoWeekException("没有对应的星期");
		}
		String[] weeks= {"","星期日","星期一","星期二","星期三","星期四","星期五","星期六",};
		return weeks[i];
	}
}

日历对象练习

需求:"2012/3/17 ","2012-5-28"间,间隔多少天?
1.只有毫秒可以相减/
2.获取毫秒值,字符串–>日期对象–>毫秒值。

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

import javax.swing.text.SimpleAttributeSet;

//Calender
class ExtendsDemo3 {

	public static void main(String[] args) throws ParseException {
		getDays();
	}
	
	public static void getDays() throws ParseException {
		String str_date1="2012/3/17";
		String str_date2="2012-5-28";
		
		//如何将日期格式字符串解析成日期对象呢?
		//DateFormat parse
		//1.自定义yyyy/MM/dd对象。
		DateFormat dateFormat1=new SimpleDateFormat("yyyy/MM/dd");
		
		//2.定义一个默认的风格。
		//DateFormat dateFormat2=new SimpleDateFormat("yyyy-MM-dd");
		DateFormat dateFormat2=DateFormat.getDateInstance(DateFormat.MEDIUM);
		
		//3.对日期格式字符串进行解析。
		Date date1=dateFormat1.parse(str_date1);
		Date date2=dateFormat2.parse(str_date2);
		
		//System.out.println(date1);
		//System.out.println(date2);
		
		//4.通过日期对象获取毫秒值。
		long time1=date1.getTime();
		long time2=date2.getTime();
		
		//5.相减,得到得以毫秒为单位
		long time=Math.abs(time1-time2);
		
		//从毫秒转化为天
		int day=transDay(time);
		
		System.out.println(day);
	}

	private static int transDay(long time) {
		
		return (int)(time/1000/60/60/24);
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值