javaseday20(系统类 时间 runtime math date calendar)
2017-08-15 15:53
507 查看
类中没有构造方法 说明构造方法被私有了 不能创建对象 而且里面的方法都是静态的
但是又具备 非静态方法 那么说明有一个方法是静态的而且 返回一个对象 这就是单例设计模式
/*
* System:类中的方法和属性都是静态的
*
* 常见方法
* long currentTimeMills() 获取当前时间的毫秒值
*/
public class SystemDemo01 {
private static final String LINE_SEPARATOR = System.getProperty("line.separator");//常量大写
public static void main(String[] args) {
long l1 = System.currentTimeMillis();
System.out.println(l1);
long l2 = System.currentTimeMillis();
System.out.println(l2-l1);
// demo_1();
//给系统设置一些属性信息 这些信息是全局的 其他程序都可以用
System.setProperty("myclasspath", "c:/myclass");
System.setProperty("mykey", "mayvalue");
System.out.println("hello "+LINE_SEPARATOR+" world");//unix 只认\n换行 所以用系统的
}
//虚拟机启动的时候都会先拿系统上的信息
public static void demo_1(){
//获取系统的属性信息 并存储到 Properties集合中 是Map集合
Properties prop = System.getProperties();//键和值都是String 所以没泛型
/*
* Properties集合存储的都是String类型的值
* 最好使用它自己的存储和取出方法来完成元素的操作
*/
Set<String> nameSet = prop.stringPropertyNames();
for(String a :nameSet){
String value = prop.getProperty(a);
System.out.println(a+".."+value);
}
}
}
/*
* Runtime 没有构造方法摘要 说明该类不可以创建对象
* 又发现还有非静态的方法 说明该类 应该提供静态的返回该类对象的方法
* 而且只有一个 说明Runtime类使用了单例设计模式
*
* 保证了对象唯一性
*/
Runtime r = Runtime.getRuntime();
//execute 执行 xxx.exe exe就是execute的简称
try {
r.exec("notepad.exe");//当前找不到就去系统路径找
} catch (IOException e) {
e.printStackTrace();
}
// r.exec("c:\\abc\\QQ.exe");//绝对 路径 \是转译 所以用两个
// r.exec("baofengyingyin.exe c:\\RuntimeDemo.avi");//用暴风影音解析 播放文件
Process p = r.exec("notepad.exe");
p.destroy();
}
}
/*
* Math:提供了操作数学运算的方法都是静态的
*
* 常用方法
* ceil();
* floor();
* round();
* pow(a,b); a的b次方
*/
// double d1 = Math.ceil(12.43);//返回大于参数的最小整数
// double d2 = Math.floor(12.55);//返回小于参数的最大整数
// double d3 = Math.round(213.1);//返回四舍五入的整数
// sop("d1="+d1);
// sop("d2="+d2);
// sop("d3="+d3);
// double d4 = Math.pow(10, 2);
// sop("d4="+d4);
Random r = new Random();
for (int i = 0; i < 10; i++) {
double d = Math.floor(Math.random()*10);//0~9
double d1 = Math.ceil(Math.random()*10);//1~10
double d2 = (int)(Math.random()*6+1);//骰子
int d3 = r.nextInt(6)+1;//还有其他扩展方法
System.out.println(d);
}
}
private static void sop(String string) {
System.out.println(string);
}
}
/*
* 13月就是下一年的一月
* 时间是连续的 计算机中0是1月
*/
public class DateDemo01 {
public static void main(String[] args) throws ParseException {
// Demo01();
// Demo02();
Demo03();
}//格式化 是指这个事物按照指定的格式进行转换 重新按照格式建立
/**
* 对日期对象进行格式化
* 将日期对象——>日期格式的字符串
* 使用的是DateFormat中的format方法
*/
private static void Demo02() {
Date date = new Date();
//获取日期格式对象 具备默认风格
MEDIUM是默认
DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.FULL);
dateFormat = DateFormat.getDateTimeInstance(DateFormat.FULL,DateFormat.LONG);
//如果风格是自定义的
System.out.println(dateFormat);
dateFormat = new SimpleDateFormat("yyyy MM dd");
String str_date = dateFormat.format(date);
System.out.println(str_date);
}
/**
* 将日期格式的字符串 ——>日期对象
* 使用的是DateFormat类中的parse()方法
* @throws ParseException
*/
public static void Demo03() throws ParseException{
String str_date = "2012---4--11";
DateFormat dateFormat = DateFormat.getDateInstance();
dateFormat = new SimpleDateFormat("yyyy---MM--dd");//自己创个格式匹配传入的字符串
Date date = dateFormat.parse(str_date); //通过parse()方法解析
System.out.println(date);
}
/**
* 日期对象和毫秒值之间的转换
*
* 毫秒值——>日期对象
* 1、通过Date对象的构造方法 new Date(timeMillis);
* 2、还可以通过setTime设置
* 因为可以通过Date对象的方法对该日期中的各个字段(年月日等)进行操作 能解析毫秒值
*
* 日期对象——>毫秒值
* 2、getTime方法
* 因为可以通过具体的数值进行 运算 2个对象不能减 毫秒值可以减 可以算相差的时间
*
*
*/
public static void Demo01() {
long time = System.currentTimeMillis();
System.out.println(time);
Date date = new Date();//将当前日期和时间封装成Date对象
System.out.println(date);
Date date2 = new Date(1502778013059l);//将指定毫秒值封装成对象 注意加l表示长整型不然无法默认int
System.out.println(date2);
}
}
/*
* 练习
* "2017-8-15"到"2017-9-16"
* 中间有多少天
* 思路
* 两个日期相减
* 怎么减?
* 必须要有两个可以进行减法运算的数
* 能减的可以是毫秒值 如何获取毫秒值 通过date对象
* 如何获取date 对象 可以将字符串转成date对象
*
* 1、将日期格式的字符串转成date对象
* 2、将Date对象转成毫秒值
* 3、相减 再变成天数
*
*
*/
public static void main(String[] args) throws ParseException {
String str_date1 = "2017-8-15";
String str_date2 = "2017-9-16";
test(str_date1,str_date2);
}
private static void test(String str_date1,String str_date2) throws ParseException {
//1、将日期字符串转成日期对象
//定义日期格式对象
DateFormat dateFormat = DateFormat.getDateInstance();
dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date1 = dateFormat.parse(str_date1);
Date date2 = dateFormat.parse(str_date2);
long time1 = date1.getTime();
long time2 = date2.getTime();
long time = Math.abs(time1-time2);
int day = getDay(time);
System.out.println(day);
}
private static int getDay(long time) {
int day = (int) (time/1000/60/60/24);
return day;
}
public static void main(String[] args) {
Calendar c = Calendar.getInstance();
int year =1111;
showDays(year);
// Demo_02();
// Demo_01();
}
public static void Demo_0(int year) {
Calendar c = Calendar.getInstance();
c.set(year,11,4);
//在此基础上偏移
c.add(Calendar.YEAR, 2); //2往右边偏移
c.add(Calendar.MONTH, 2);//时间是连续的 注意到头
showDate(c);
}
public static void showDays(int year) {
Calendar c = Calendar.getInstance();
c.set(year,2,1);
c.add(Calendar.DAY_OF_MONTH, -1);//获取2月的天数
showDate(c);
}
public static void showDate(Calendar c) {
// System.out.println(c);
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH)+1;
int day = c.get(Calendar.DAY_OF_MONTH);
int week = c.get(Calendar.DAY_OF_WEEK); //对老外来将星期日是第一天
System.out.println(year+"."+month+"."+day+"."+getWeek(week));
// System.out.println(c.get(Calendar.YEAR));
}
public static void Demo_01() {
Calendar c = Calendar.getInstance();
// System.out.println(c);
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH)+1;
int day = c.get(Calendar.DAY_OF_MONTH);
int week = c.get(Calendar.DAY_OF_WEEK); //对老外来将星期日是第一天
System.out.println(year+"."+month+"."+day+"."+getWeek(week));
// System.out.println(c.get(Calendar.YEAR));
}
public static String getWeek(int i ){
String[] week = {"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};//角标1是星期日
return week[i];
}
但是又具备 非静态方法 那么说明有一个方法是静态的而且 返回一个对象 这就是单例设计模式
/*
* System:类中的方法和属性都是静态的
*
* 常见方法
* long currentTimeMills() 获取当前时间的毫秒值
*/
public class SystemDemo01 {
private static final String LINE_SEPARATOR = System.getProperty("line.separator");//常量大写
public static void main(String[] args) {
long l1 = System.currentTimeMillis();
System.out.println(l1);
long l2 = System.currentTimeMillis();
System.out.println(l2-l1);
// demo_1();
//给系统设置一些属性信息 这些信息是全局的 其他程序都可以用
System.setProperty("myclasspath", "c:/myclass");
System.setProperty("mykey", "mayvalue");
System.out.println("hello "+LINE_SEPARATOR+" world");//unix 只认\n换行 所以用系统的
}
//虚拟机启动的时候都会先拿系统上的信息
public static void demo_1(){
//获取系统的属性信息 并存储到 Properties集合中 是Map集合
Properties prop = System.getProperties();//键和值都是String 所以没泛型
/*
* Properties集合存储的都是String类型的值
* 最好使用它自己的存储和取出方法来完成元素的操作
*/
Set<String> nameSet = prop.stringPropertyNames();
for(String a :nameSet){
String value = prop.getProperty(a);
System.out.println(a+".."+value);
}
}
}
/*
* Runtime 没有构造方法摘要 说明该类不可以创建对象
* 又发现还有非静态的方法 说明该类 应该提供静态的返回该类对象的方法
* 而且只有一个 说明Runtime类使用了单例设计模式
*
* 保证了对象唯一性
*/
Runtime r = Runtime.getRuntime();
//execute 执行 xxx.exe exe就是execute的简称
try {
r.exec("notepad.exe");//当前找不到就去系统路径找
} catch (IOException e) {
e.printStackTrace();
}
// r.exec("c:\\abc\\QQ.exe");//绝对 路径 \是转译 所以用两个
// r.exec("baofengyingyin.exe c:\\RuntimeDemo.avi");//用暴风影音解析 播放文件
Process p = r.exec("notepad.exe");
p.destroy();
}
}
/*
* Math:提供了操作数学运算的方法都是静态的
*
* 常用方法
* ceil();
* floor();
* round();
* pow(a,b); a的b次方
*/
// double d1 = Math.ceil(12.43);//返回大于参数的最小整数
// double d2 = Math.floor(12.55);//返回小于参数的最大整数
// double d3 = Math.round(213.1);//返回四舍五入的整数
// sop("d1="+d1);
// sop("d2="+d2);
// sop("d3="+d3);
// double d4 = Math.pow(10, 2);
// sop("d4="+d4);
Random r = new Random();
for (int i = 0; i < 10; i++) {
double d = Math.floor(Math.random()*10);//0~9
double d1 = Math.ceil(Math.random()*10);//1~10
double d2 = (int)(Math.random()*6+1);//骰子
int d3 = r.nextInt(6)+1;//还有其他扩展方法
System.out.println(d);
}
}
private static void sop(String string) {
System.out.println(string);
}
}
/*
* 13月就是下一年的一月
* 时间是连续的 计算机中0是1月
*/
public class DateDemo01 {
public static void main(String[] args) throws ParseException {
// Demo01();
// Demo02();
Demo03();
}//格式化 是指这个事物按照指定的格式进行转换 重新按照格式建立
/**
* 对日期对象进行格式化
* 将日期对象——>日期格式的字符串
* 使用的是DateFormat中的format方法
*/
private static void Demo02() {
Date date = new Date();
//获取日期格式对象 具备默认风格
MEDIUM是默认
DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.FULL);
dateFormat = DateFormat.getDateTimeInstance(DateFormat.FULL,DateFormat.LONG);
//如果风格是自定义的
System.out.println(dateFormat);
dateFormat = new SimpleDateFormat("yyyy MM dd");
String str_date = dateFormat.format(date);
System.out.println(str_date);
}
/**
* 将日期格式的字符串 ——>日期对象
* 使用的是DateFormat类中的parse()方法
* @throws ParseException
*/
public static void Demo03() throws ParseException{
String str_date = "2012---4--11";
DateFormat dateFormat = DateFormat.getDateInstance();
dateFormat = new SimpleDateFormat("yyyy---MM--dd");//自己创个格式匹配传入的字符串
Date date = dateFormat.parse(str_date); //通过parse()方法解析
System.out.println(date);
}
/**
* 日期对象和毫秒值之间的转换
*
* 毫秒值——>日期对象
* 1、通过Date对象的构造方法 new Date(timeMillis);
* 2、还可以通过setTime设置
* 因为可以通过Date对象的方法对该日期中的各个字段(年月日等)进行操作 能解析毫秒值
*
* 日期对象——>毫秒值
* 2、getTime方法
* 因为可以通过具体的数值进行 运算 2个对象不能减 毫秒值可以减 可以算相差的时间
*
*
*/
public static void Demo01() {
long time = System.currentTimeMillis();
System.out.println(time);
Date date = new Date();//将当前日期和时间封装成Date对象
System.out.println(date);
Date date2 = new Date(1502778013059l);//将指定毫秒值封装成对象 注意加l表示长整型不然无法默认int
System.out.println(date2);
}
}
/*
* 练习
* "2017-8-15"到"2017-9-16"
* 中间有多少天
* 思路
* 两个日期相减
* 怎么减?
* 必须要有两个可以进行减法运算的数
* 能减的可以是毫秒值 如何获取毫秒值 通过date对象
* 如何获取date 对象 可以将字符串转成date对象
*
* 1、将日期格式的字符串转成date对象
* 2、将Date对象转成毫秒值
* 3、相减 再变成天数
*
*
*/
public static void main(String[] args) throws ParseException {
String str_date1 = "2017-8-15";
String str_date2 = "2017-9-16";
test(str_date1,str_date2);
}
private static void test(String str_date1,String str_date2) throws ParseException {
//1、将日期字符串转成日期对象
//定义日期格式对象
DateFormat dateFormat = DateFormat.getDateInstance();
dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date1 = dateFormat.parse(str_date1);
Date date2 = dateFormat.parse(str_date2);
long time1 = date1.getTime();
long time2 = date2.getTime();
long time = Math.abs(time1-time2);
int day = getDay(time);
System.out.println(day);
}
private static int getDay(long time) {
int day = (int) (time/1000/60/60/24);
return day;
}
public static void main(String[] args) {
Calendar c = Calendar.getInstance();
int year =1111;
showDays(year);
// Demo_02();
// Demo_01();
}
public static void Demo_0(int year) {
Calendar c = Calendar.getInstance();
c.set(year,11,4);
//在此基础上偏移
c.add(Calendar.YEAR, 2); //2往右边偏移
c.add(Calendar.MONTH, 2);//时间是连续的 注意到头
showDate(c);
}
public static void showDays(int year) {
Calendar c = Calendar.getInstance();
c.set(year,2,1);
c.add(Calendar.DAY_OF_MONTH, -1);//获取2月的天数
showDate(c);
}
public static void showDate(Calendar c) {
// System.out.println(c);
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH)+1;
int day = c.get(Calendar.DAY_OF_MONTH);
int week = c.get(Calendar.DAY_OF_WEEK); //对老外来将星期日是第一天
System.out.println(year+"."+month+"."+day+"."+getWeek(week));
// System.out.println(c.get(Calendar.YEAR));
}
public static void Demo_01() {
Calendar c = Calendar.getInstance();
// System.out.println(c);
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH)+1;
int day = c.get(Calendar.DAY_OF_MONTH);
int week = c.get(Calendar.DAY_OF_WEEK); //对老外来将星期日是第一天
System.out.println(year+"."+month+"."+day+"."+getWeek(week));
// System.out.println(c.get(Calendar.YEAR));
}
public static String getWeek(int i ){
String[] week = {"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};//角标1是星期日
return week[i];
}
相关文章推荐
- 黑马程序员——Java基础——其他对象(System、Runtime、Date、Calendar、Math)
- Java基础 System,Runtime,Date,Calendar,Math-Random,Io流
- Java基础之常用类--System、Runtime、Date、Calendar、Math、Random
- Java的系统类:System、Runtime ;和时间类:Date、Calendar
- 黑马程序员--------java Collections、Arrays、高级for、可变参数、静态导入、System、Runtime、Math、Date、Calendar
- Java基础(其他对象System、时间类(Date、Calendar)、Math)
- java基础03 System,Runtime,Date,Calendar,Math
- JAVA之旅(二十三)——System,RunTime,Date,Calendar,Math的数学运算
- java--jdk api中其他对象(System,Runtime,Calendar,Math,Random,Date)
- java--其他对象(System,Runtime,Date,Calendar,Math)
- (十一)Core Java 其他对象(Sysem,Runtime,Date,Calendar,Math-Random) (105)
- 黑马程序员_学习笔记:12) 其他API:java.lang.Runtime、java.util.Math、java.util.Date、java.util. Calendar
- 黑马程序员 Java基础之System,Runtime,Date,Calendar,Math.Random对象
- Java的系统类:System、Runtime ;和时间类:Date、Calendar
- 黑马程序员——JAVA基础之System,Runtime,Date,Calendar,Math
- java--jdk api中其他对象(System,Runtime,Calendar,Math,Random,Date)
- 黑马程序员--Java笔记11--静态类(Collections、Arrays、System、Runtime、Date、Calendar、Math)
- java基础-API-System、Runtime、Date、Calendar、Math
- Java基础19--System--Runtime--Math--Date--Calendar
- 黑马程序员_JAVA- System、Runtime、Math、Date、Calendar