其他对象API
System类
API——— java.lang.System: 属性和行为都是静态的。
long currentTimeMillis(); // 返回当前时间毫秒值
//作用演示
long l1 =1335664696656l;//System.currentTimeMillis();
System.out.println(l1/1000/60/60/24);//1335664696656
//code..
long l2 =System.currentTimeMillis();
System.out.println(l2-l1);
//可以看你的程序从开始到结束用了多长时间。
exit(); // 退出虚拟机
System.out.println(System.getProperties("line.separator"));//获取指定键指示的系统属性。 操作系统的换行符。
Properties getProperties() ;// 获取当前系统的属性信息
Properties prop = System.getProperties(); //获取系统的属性信息,并将这些信息存储到Properties集合中。
//方法演示:
public static void demo_1(){
//获取系统的属性信息,并存储到了Properties集合中。
/*
* properties集合中存储都是String类型的键和值。
* 最好使用它自己的存储和取出的方法来完成元素的操作。
*/
Properties prop =System.getProperties();
Set<String>nameSet = prop.stringPropertyNames();
for(String name : nameSet){
String value = prop.getProperty(name);
System.out.println(name+"::"+value);
}
}
System.setProperty("myclasspath","c:\myclass"); //给系统属性信息集添加具体的属性信息。这些信息是全局,其他程序都可以使用。
/*临时设置方式:运行jvm时,可以通过jvm的参数进行系统属性的临时设置,
可以在java命令的后面加入 –D<name>=<value> 用法:java –Dmyname=小明 类名。*/
String name = System.getProperty("os.name"); //获取指定属性的信息
想要知道该系统是否是该软件所支持的系统中的一个。
Set<String> hs = new HashSet<String>();
hs.add("Windows XP");
hs.add("Windows 7");
if(hs.contains(name))
System.out.println("可以支持");
else
System.out.println("不支持");
Runtime类
API——— java.lang.Runtime: 类中没有构造方法,不能创建对象。
但是有非静态方法。说明该类中应该定义好了对象,并可以通过一个static方法获取这个对象。用这个对象来调用非静态方法。这个方法就是 static Runtime getRuntime();
这个Runtime其实使用单例设计模式进行设计。
class RuntimeDemo {
public static void main(String[] args) throws Exception {
Runtime r = Runtime.getRuntime();
Process p = r.exec("notepad.exe SystemDemo.java"); //运行指定的程序
Thread.sleep(4000);
p.destroy(); //杀掉进程 java只能杀掉自己开启的进程。
}
Math类
API****——— java.util.Math: 用于数学运算的工具类,属性和行为都是静态的。该类是final不允许继承。
static double ceil(double a); //返回大于指定数值的最小整数
static double floor(double a); //返回小于指定数值的最大整数
static long round(double a); //四舍五入成整数
static double pow(double a,double b); //a的b次幂
static double random(); //返回0~1的伪随机数
public static void main(String[]args){
Random r=new Random();
for(int x=0;x<10;x++){
//double d = Math.floor(Math.random()*10+1);
//int d = (int)(Math.random()*10+1);
int d=r.nextInt(10)+1;
System.out.println(d);
}
}
Dath类(★★
API——— java.util.Date:日期类,月份从0—11;
/**
这个要求大家必须会了
* 日期对象和毫秒值之间的转换。
* 毫秒值-->日期对象 :
* 1,通过Date对象的构造方法 new Date(timeMillis);
* 2,还可以通过setTime设置。
* 因为可以通过Date对象的方法对该日期中的各个字段(年月日等)进行操作。
* 日期对象-->毫秒值:
* 2,getTime方法。
* 因为可以通过具体的数值进行运算。
*/
public static void methodDemo_1() {
long time = System.currentTimeMillis();//
// System.out.println(time);//1335671230671
Date date = new Date();//将当前日期和时间封装成Date对象。
System.out.println(date);//Sun Apr 29 11:48:02 CST 2012
Date date2 = new Date(1335664696656l);//将指定毫秒值封装成Date对象。
System.out.println(date2);
}
日期对象转成字符串
/**
* 对日期对象进行格式化。
* 将日期对象-->日期格式的字符串。
* 使用的是DateFormat类中的format方法。
*/
public 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()方法。
* @throws ParseException
*/
public 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);
}
练习
/* 练习:
* "2012-3-17"到"2012-4-6" 中间有多少天?
* 思路:
* 两个日期相减就哦了。
* 咋减呢?
* 必须要有两个可以进行减法运算的数。
* 能减可以是毫秒值。如何获取毫秒值?通过date对象。
* 如何获取date对象呢?可以将字符串转成date对象。
* 1,将日期格式的字符串转成Date对象。
* 2,将Date对象转成毫秒值。
* 3,相减,在变成天数
*/
public class DateTest {
/**
* @param args
* @throws ParseException
*/
public static void main(String[] args) throws ParseException {
String str_date1 = "2012-3-17";
String str_date2 = "2012-4-18";
test(str_date1,str_date2);
}
public static void test(Stringstr_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;
}
Calendar类
public static void method() {
Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH) + 1;//0-11
String days = getNum(c.get(Calendar.DAY_OF_MONTH));
int week = c.get(Calendar.DAY_OF_WEEK);
System.out.println(year+ "年" + month+ "月"+days+"日" + getWeek(week));
}
public static String getNum(int num) {
return num > 9 ? String.valueOf(num) : "0" + num;
}
public static String getWeek(int index) {
/*
查表法:建立数据的对应关系.
最好:数据个数是确定的,而且有对应关系。如果对应关系的一方,是数字,而且可以作为角标,那么可以通过数组来作为表。
s
*/
String[] weeks = {"", "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};//国外的第一天是星期日
return weeks[index];
}
练习
/*面试题,任何一年中的2月有多少天,这就是Calendar中set()和add,方法的使用,
那我就设置3月一号,然后设置偏移量也就是减一,那就是二月的最后一天*/
public class Demo {
public static void main(String[] args) {
Calendar c =Calendar.getInstance();
int year = 2012;
showDays(year);
}
public static void showDays(int year) {
Calendar c = Calendar.getInstance();
c.set(year, 2, 1); //月份0-11
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 days = c.get(Calendar.DAY_OF_MONTH);
System.out.println(year+ "年" + month+ "月"+days+"日");
}
}