------- android培训、java培训、期待与您交流! ----------
今天学习了几个简单的对象的使用现在来简单介绍一下:
1、Runtime
2、Date
3、Calendar
4、Math
一、Runtime
java程序启动起来以后是跨平台的,所以每个java程序都应该有一个Runtime应用实例,使应用程序能与其运行环境相连接。想要java应用程序在某一个系统下出现进程并进行封装的话,那么就要使用Runtime来进行封装。查询API知道,该类并没有提供构造方法,这样一来就不可以建立对象。但是却有使用对象调用的非静态方法,所以断定该类肯定有一个静态方法提供了该类的实例对象,且该方法返回的本类类型,该方法就是static Runtime getRuntime()。由这个特点知道了该类使用的单例设计模式,保证了实例对象的唯一性。
获得实例对象后,就可以调用Runtime的非静态方法了
①exec()的重载方法:在单独的进程中执行字符串命令,如可以执行.exe文件等;
②Process中的destroy方法:exec是创建一个进程来执行comandante,可以创建进程,那么就有杀死进程方法。
package cn.itheima.date;
import java.io.IOException;
public class RunttimeDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Runtime r = Runtime.getRuntime();
try {
Process p=r.exec("指定要执行的文件路劲");
//打开指定程序,并向其中写入数据,比如说打开记事本,arg1为记事本程序,arg2则是要加入记事本的数据(该数据可以是一个文件)
//Process p = r.exec("要开启的文件路径,比如说打开笔记本", "向前一个参数中添加的内容");
//r.exec()启动了一个进程来执行某个文件,开启进程,则需要把进程销毁
p.destroy();//销毁进程,但是前提条件是只能是在获取Runtime驱动的对象,因为在系统进程一开始就启动了,导致了无法获得进程启动对象
//所以无法杀死该线程
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println(e.toString());
}
}
}
二、Date类
Date类可以获得当前时间
package cn.itheima.date;
import java.util.Date;
public class DateDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Date d = new Date();
System.out.println(d);
}
}
//得到的时间结果:Tue Apr 22 23:05:08 CST 2014
得到这样的时间虽然没有错误,但是不符合中国人的习性啊,所以要变为大家所适应,这里用到了DateFromat类及其子类SimpleDateFormat模式,SimpleDateFormat模式主要是规定了我们想要显示的时间格式是怎么样的,比如说这样“yyyy-MM-dd”;当然也可以指定详细的时间看”yyyy-MM-dd hh:mm:ss“,其方法format()则是将得到的时间按SimpleDateFormat模式进行转换
例子如下:
package cn.itheima.date;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//得到当前时间
Date d = new Date();
//设定时间的显示模式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
//将得到的时间变成指定的模式中
String str = sdf.format(d);
System.out.println(str);
}
}
//得到的时间结果:2014-04-22 11:18:29
三、Calendar类
想要获取某段时间中的年份、月份、或者日期、可以使用Date类的getYear()等方法,但是这些在java5开始已过时,想要得到这具体的时间值,使用Calendar类将会更加的明确、方便。下面以一个例子来讲述:
package cn.itheima.date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;
public class CalendarDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//从键盘输入一个时间格式得到输入时间
/*Scanner s = new Scanner(System.in);
String str = s.nextLine();*/
Date d = new Date();
//时间的接受模式、
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//
Calendar c = Calendar.getInstance();
try {
//将输入的字符串时间按照SimpleDateFormat的模式转换
//将日期对象装入Calendar类中
c.setTime(d);
//获得输入的时间时刻的年份、月份以及号数
System.out.println(c.get(Calendar.YEAR));
System.out.println(c.get(Calendar.MONTH)+1);
System.out.println(c.get(Calendar.DATE));
//得到这是一年中的第几天,一个月中的第几天,以及是第几个星期,星期几
System.out.println(c.get(Calendar.DAY_OF_YEAR));
System.out.println(c.get(Calendar.DAY_OF_MONTH));
System.out.println(c.get(Calendar.DAY_OF_WEEK_IN_MONTH));
System.out.println(c.get(Calendar.DAY_OF_WEEK));//这里说的是一个星期的第几天,
//由于国外是从周末开始为新的一天,故星期三是第四天
//获取明天是几号
System.out.println((c.get(Calendar.DATE) + 1));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
通过这个例子只能了解到简单的一些关于Calendar的用法,当然他的用法还不止这些,比如说可以通过add(int field ,int amount)某个时间的移量,这样就可以得到比如说某一年的二月有多少天,只需得到这一年的三月一日,再使用add方法减去一即可得到。还有得到明天的这个时刻,也只需使用Calendar的DAY属性加上一即使明天的这个时刻。当然,更多的内容请查询API文档;
四、Math
Math类有很多的方法,要意义介绍是不可能的,这里主要介绍的有:
ceil(double a):返回大于a的所有数中的最小整数
floor(double a) :放回小于a的说有数中的最大整数
round(double a): 四舍五入
Random():产生0-1的随机数,包含0,不包含1
下面通过一个例子来简单了解这几个方法的使用:
package cn.itheima.date;
import java.util.Random;
public class MathDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
double n = 78.23;
double m = -78.52;
System.out.println(Math.ceil(n));
System.out.println(Math.ceil(m));
System.out.println(Math.floor(n));
System.out.println(Math.floor(m));
System.out.println(Math.round(n));
System.out.println(Math.round(m));
System.out.println("-----------产生随机数-----------");
//产生一到十的随机数
for (int i = 0; i < 10; i++) {
System.out.print((int)(Math.random()*10+1)+" ");
}
System.out.println();
Random r =new Random();
//产生0-10的随机数,包含0 ,不包含10
int num = r.nextInt(10);
System.out.println(num);
System.out.println("==产生一个随机数,并保留小数后两位==========");
double num1 = r.nextDouble();
System.out.println(String.format("%.2f", num1));
}
}
运行结果:
79.0
-78.0
78.0
-79.0
78
-79
-----------产生随机数-----------
2 8 9 3 10 3 3 7 5 8
5
==产生一个随机数,并保留小数后两位==========
0.30