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:2019年3月14日 星期四
LONG:2019年3月14日
MEDIUM:2019-3-14
SHORT:19-3-14
DateFormat dateFormat2=DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL):
2019年3月14日 星期四 下午04时43分13秒 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);
}
}