System:
System类中的方法都是静态的。
常见方法:
long crrentTimeMillis():获取当前时间的毫秒值。
setProperty:给系统设置一些属性信息。这些信息是全局的,其他程序都可以使用。
getProperty:获取系统的属性信息。
public static void main(String[] args) {
final String LINE_SEPARATOR=System.getProperty("line.separator");
/*
System:类中的方法和属性都是静态的。
常见方法:
long currentTimeMillis();获取当前时间的毫秒值
*/
/*
long l1=153974181;//System.currentTimeMillis();
System.out.println(l1/10000/60/60/24);
long l2=System.currentTimeMillis();
System.out.println(l2-l1);
*/
System.out.println("hello-"+LINE_SEPARATOR+"world");//line.separator:系统提供的用于换行的方法,适用于各种平台
demo_1();
// 给系统设置一些属性信息。这些信息是全局的,其他程序都可以使用。
// System.setProperty("myclasspath", "c:\myclass");
}
private static void demo_1() {
// 获取系统的属性信息,并存储到了Properties集合中。
/*
properties集合中存储的都是String类型的键和值。
最好使用它自己的存储和取出的方法来完成元素的操作
*/
Properties prop=System.getProperties();
Set nameSet=prop.stringPropertyNames();
for(String name :nameSet){
String value=prop.getProperty(name);
System.out.println(name+": :"+value);
}
}
运行:
Runtime:
没有构造方法摘要,说明该类不可以创建队形。又发现还有非静态的方法。说明该类应该提供静态的返回该类队形的方法。而且只有一个,说明Runtime类使用了单例设计模式。
public static void main(String[] args) throws IOException, InterruptedException {
/*
Runtime:没有构造方法摘要,说明该类不可以创建对象。
又发现还有非静态的方法。说明该类应该提供静态的返回该类对象的方法。
而且只有一个,说明Runtime类使用了单例设计模式。
*/
Runtime r=Runtime.getRuntime();
// execute:执行。xx.exe
Process p=r.exec("notepad.exe");//打开notepad.exe进程,主要用于执行外部的程序或命令。
Thread.sleep(5000);
p.destroy();//在任务管理器中销毁notepad.exe进程
}
运行:
Math:
提供了操作数学运算的方法,都是静态的。
常用的方法:
ceil():返回大于参数的最小整数。
floor():返回小于参数的最大整数。
round():返回四舍五入的整数。
pow():a的b次方。
random():随机数,也可用Random封装类。
public static void main(String[] args) {
/*
Math:提供了操作数学运算的方法。都是静态的。
常用的方法:
ceil():返回大于参数的最小整数。
floor():返回小于参数的最大整数。
round():返回四舍五入的整数。
pow(a,b):a的b次方。
*/
double d1=Math.ceil(12.56);
double d2=Math.floor(12.56);
double d3=Math.round(12.56);
// sop("d1="+d1);
// sop("d2="+d2);
// sop("d3="+d3);
// double d=Math.pow(10, 2);
// sop("d="+d);
Random r=new Random();//Random封装类
for(int i=0;i<10;i++){
// double d = Math.ceil(Math.random()*10);//Math提供的random方法
// double d = (int)(Math.random()*6+1);
// double d = (int)(r.nextDouble()*6+1);
int d=r.nextInt(6)+1;
System.out.println(d);
}
}
private static void sop(String string) {
System.out.println(string);
}
运行:
Date:
日期对象和毫秒值之间的转换。
毫秒值-->日期对象:
1,通过Date对象的构造方法 new Date(timeMillis);
2,还可以通过setTime设置。因为还可以通过Date对象的方法对改日期中的各个字段(年月日等)进行操作。
日期对象-->毫秒值:
3,getTime方法。因为可以通过具体的数值进行计算。
private static void methodDemo_1() {
long time=System.currentTimeMillis();
System.out.println(time);//1539785990166
Date date=new Date();//将当前日期和时间封装成Date对象。
System.out.println(date);
Date date2=new Date(time);
System.out.println(date2);
}
对日期对象进行格式化。
将日期对象-->日期格式的字符串。使用的是DateFormat类中的format方法。
private static void methodDemo_2() {
Date date=new Date();
//获取日期格式对象。具备着默认的风格。FULL LONG等可以指定风格。
DateFormat dateFormat=DateFormat.getDateInstance(DateFormat.LONG);
dateFormat=DateFormat.getDateTimeInstance(DateFormat.LONG,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()方法。
private static void methodDemo_3() throws ParseException {
String str_date="2012年4月19日";
str_date="2011---8---17";
DateFormat dateFormat=DateFormat.getDateInstance(DateFormat.LONG);
dateFormat=new SimpleDateFormat("yyyy---MM--dd");
Date date=dateFormat.parse(str_date);
System.out.println(date);
}
运行:
CalendarDemo:
public static void main(String[] args) {
Calendar c=Calendar.getInstance();
int year =2012;
showDays(year);
}
private static void showDays(int year) {
Calendar c=Calendar.getInstance();
c.set(year,2,1);
c.add(Calendar.DAY_OF_MONTH, 2);
showDate(c);
}
private static void showDate(Calendar c) {
int year=c.get(Calendar.YEAR);
int month=c.get(Calendar.MONTH);
int day=c.get(Calendar.DAY_OF_MONTH);
int week=c.get(Calendar.DAY_OF_WEEK);
System.out.println(year+"年"+month+"月"+day+"日"+getWeek(week));
}
private static String getWeek(int i) {
String[] weeks = {"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
return weeks[i];
}
运行:
DateTest:
练习:
“2012-3-17”到“2012-4-6”
中间有多少天?
思路:
两个日期相减就可以了。
怎么减呢?
必须要有两个可以进行减法运算的数。
能减可以是毫秒数。如何获取毫秒值?通过date对象。
如何获取date对象呢?可以将字符串转成date对象。
1.将日期格式的字符串转成date对象。
2.将date对象转成毫秒值。
3.相减,则变成天数。
public static void main(String[] args) throws ParseException {
String str_date1="2013-3-17";
String str_date2="2012-4-18";
test(str_date1,str_date2);
}
private static void test(String str_date1, String str_date2) throws ParseException {
// 1.将日期字符串转成日期对象
//定义日期格式对象。
DateFormat dateFormat=DateFormat.getDateInstance();//直接类就可以调用静态方法
//通过getDateInstanse返回的对象是继承了DateFormat抽象类的一个对象,所以该对象也有format方法,这是一种多态的形式
dateFormat=new SimpleDateFormat("yyy-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;
}
运行: