Day21 常见对象
一、System类
1、特点
不能实例化对象,提供的方法都是静态的。
2、System类中获取本地系统信息的方法
系统属性信息:程序在运行时获取到Jvm以及所在操作系统的一些固有信息,获取了这些信息,能为后面的程序运行提供了数据。
public static void systemMethodDemo(){
//获取系统信息并存储到Properties中
Properties p = System.getProperties();
//properties是map集合的小弟,可以将其转成set集合获取其中的信息
Set<String> set = p.stringPropertyNames();
for (String string : set) {
System.out.println(string+p.getProperty(string));
}
//获取指定名称的系统信息
System.out.println(p.getProperty("os.name"));
}
获取不同系统中的换行符:-------->将其定义为一个常量!
public class SystemDemo {
private static final String LINE_SEPARATOR = System.getProperty("line.separator");
public static void main(String[] args) {
systemMethodDemo();
}
public static void systemMethodDemo(){
System.out.println("hello"+LINE_SEPARATOR+"world");
}
}
static long currentTimeMillis():获取当前时间,以毫秒为单位。
static void exit(int status) :退出当前程序。
static void gc():调用垃圾回收器。
static Properties getProperties():获取当前系统属性
static String getProperty(String key):根据关键字获取系统属性名称
static String setProperty(String key, String value):设置属性的键和值。
Properties类
properties集合中存储都是string类型的键和值,最好使用它自己的存储和取出的方法来完成元素的操作。
常用方法:
Properties getProperty(String key):返回指定的属性
Object setProperty(String key,String value):设置属性的键和值
void load(InputStream inStream) :加载输入流
Set<String> stringPropertyNames() :返回属性键的集合。
二、Runtime类
没有构造方法摘要,说明该类不可以创建对象,又发现还有非静态的方法,说明该类应该提供静态的返回该类对象的方法,而且只有一个,说明runtime类使用了单例设计模式。
1、Runtime api查阅时,你看到了什么,想到了什么?
我看到了exec方法返回的是一个进程,想到了系统中的可执行文件可以通过该方法启动一个程序。
Runtime r=Runtime.getRuntime();
r.exec("notepad.exe");//打开记事本程序
//r.exec("baofengyinying.exe" e:\dianying\变形金刚);//使用暴风影音播放变形金刚电影。
三、Math类
|
1、Math中的常见方法使用
提供了操作数学元素的方法,都是静态的
int abs(int a)返回整数的绝对值
int max(int a, int b)返回两个整数的最大值
double random()返回一个伪随机值(0--1之间)
double sqrt(double a)返回一个数的平方根
double ceil()返回大于参数的最小整数
double floor():返回小于参数的最大整数
double round():返回四舍五入的值。
double pow(a,b):a的b次方
四、Date类
Date():将当前日期和时间封装成对象
Date(long time):将指定毫秒值封装成Date对象。
1、日期对和毫秒值之间的转换
- 毫秒值----->日期对象
1.通过Date对象的构造方法new Date(timeMilles)
Date d = new Date(122394272384947)
2.还可以通过setTime方法设置
Date d = new Date( );
d.setTime(122394272384947);
- 为什么要把毫秒值转成日期对象呢?
因为你可以通过Date对象的方法对该日期中的各个字段(年月日等)进行操作
- 日期对象----->毫秒值long getTime()方法
- 为什么要把日期对象转成毫秒值呢?
因为可以通过绝缘体的数值进行运算。
2、对日期对象进行格式化
将日期对象----->日期格式的字符串,使用的是DateFormat类中的format方法
获取日期格式对象,具体默认的风格。FULL、LONG等可以指定风格
public static void dateFormatDemo(){
Date d = new Date();
//使用默认风格
DateFormat df = DateFormat.getDateInstance();//获取DateFormat对象
//使用指定风格
df = DateFormat.getDateInstance(DateFormat.FULL);
//使用指定风格,包含日期和时间
df = DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG);
//使用自定义风格
df = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
String str_date = df.format(d);//将日期对象----->日期格式的字符串
System.out.println(str_date);
}
将日期格式的字符串----->日期对象,使用的是DateFormat类中的parse方法
public static void dateFormatDemo1() throws ParseException{
//日期字符串
String str_date = "2012-8-1";
//定义日期格式化对象
DateFormat df = DateFormat.getDateInstance();
Date date = df.parse(str_date);
System.out.println(date);
}
自定义日期格式,使用SimpleDateFormat构造完成
练习:2012/4/12和2012/6/2相差多少天?
public class DateTest {
public static void main(String[] args) throws ParseException {
String str1 = "2012/4/12";
String str2 = "2012/6/2";
long day = getDay(str1, str2);
System.out.println(day);
}
public static long getDay(String str1,String str2) throws ParseException{
DateFormat df = new SimpleDateFormat("yyyy/MM/dd");
Date d1 = df.parse(str1);
Date d2 = df.parse(str2);
long time1 = d1.getTime();
long time2 = d2.getTime();
long time = Math.abs(time1-time2)/1000/60/60/24;
return time;