——- android培训、java培训、期待与您交流! ———-
1.System类
System是描述系统一些信息的类,类中的属性和方法都是静态的。不能被实例化,没有提供构造函数。
out:标准输出流。默认是控制台。
in:标准输入流。默认是键盘。
1、获取系统的属性信息:getProperties(); 返回值类型为Properties
1)此方法返回的双列集合,即键值对;因为Properties是Hahstable的子类,也就是Map集合的一个子类对象,那么通过Map方法取出该集合中的元素。
2)该集合存储的都是字符串,没有泛型定义
2、获取指定属性信息:getProperty(String key); 返回值类型为String
3、在系统内定义特有信息: setProperty(String key, String value); 返回值类型为String
4、 通过命令:java -D=可以设置特有的系统属性信息
代码记录:
/**
* 因为Properties是Hashtable的子类,
* 也就是Map集合的一个子类对象,
* 所以可以通过map的方法取出该集合中的元素
* 该集合中存储都是字符串,没有泛型定义。
*/
Properties p = System.getProperties();
/**
* 在系统中自定义一些特有信息
*/
System.setProperty("mykey","mavalue");
/**
* 获取指定属性信息。
*/
String value = System.getProperty("os.name");
System.out.println("os.name:"+value);
/**
* 获取全部系统信息
* 系统信息为 键值对应
* obj为键,value为值
*/
for(Object obj : p.keySet()){
String value = (String)p.get(obj);
System.out.println(obj+"::"+value);
}
2.Runtime类
1、获取本类对象
static RuntimegetRuntime();
2、在单独的进程中执行指定字符串命令
Processexec(String command);
3、将exec方法开启的进程结束的方法
void destroy();
代码记录:
/**
* Runtime类
* 该类没有提供构造函数
* 说明不可以new对象,
* 直接想该类中的方法都是静态的,
* 说明该类肯定会提供方法获取本类对象,而且该方法是静态的,
* 并返回值类型是本类类型。
* 使用了单例设计模式
* 该方式是static Runtime getRuntime();
*/
public class RuntimeDemo {
public static void main(String[] args) {
Runtime r = Runtime.getRuntime();
try {
Process p = r.exec("notepad.exe");
Thread.sleep(4000);//进程等待
p.destroy();//杀死进程
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
3.Date类
Date类表示特定的瞬间,精确到毫秒。
java中的默认显示格式为:Mon Jun 10 22:35:21 CST2013
默认显示格式不易于观看,可以通过子类DateFormat的子类SimpleDateFormat来调用format方法来自定义时间格式。
代码记录:
Date d = new Date();
// System.out.println(d);
// 打印出类似这样“Fri Sep 11 12:19:59 CST 2015”
// 将模式封装到SimpleDateFormat对象中
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 E hh:mm:ss");
// 调用format方法将模式格式化date对象
String time = sdf.format(d);
System.out.println(time);
// 只取其中一部分
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy年");
String year = sdf1.format(d);
System.out.println(year);
4.Calendar类
Calendar是一个抽象类,它为特定瞬间与一组诸如YEAR、MONTH、DAY_OF_MONTH等日历字段之间的转换提供了一些方法。
Calendar可以对年月日等时间进行获取。并提供了相应的子段值。可参阅API文档。
基本获取时间:
1)获取年份:Calendar.YEAR
2)获取月份:Calendar.MONTH
3)获取日期:Calendar.DAY_OF_MONTH
4)获取星期:Calendar.DAY_OF_WEEK
5)获取小时:Calendar.HOUR_OF_DAY
6)获取分钟:Calendar.MINUTE
7)获取秒数:Calendar.SECOND
代码记录:
// 打印方法
public static void sop(Object o) {
System.out.println(o);
}
// 打印日历方法的封装,代码简化,高效实用
public static void printCalander(Calendar cal) {
// 查表法
String[] month = {"一月","二月","三月","四月",
"五月","六月","七月","八月",
"九月","十月","十一月","十二月"};
int indexmonth = cal.get(Calendar.MONTH);
String[] week = {"","星期日","星期一",
"星期二","星期三","星期四","星期五","星期六"};
int indexweek = cal.get(Calendar.DAY_OF_WEEK);
sop(cal.get(Calendar.YEAR)+"年");
sop(month[indexmonth]);
sop(cal.get(Calendar.DAY_OF_MONTH)+"号");
sop(week[indexweek]);
}
public static void main(String[] args) {
Calendar cal =Calendar.getInstance();
/*// cal.set(2020, 10, 1); 设置时间
cal.add(Calendar.YEAR, 2);
cal.add(Calendar.MONTH, 10);*/
/*// 任意年的二月多少天
Scanner in =new Scanner(System.in);
System.out.println("输入年份:");
// 输入年的3月1日
cal.set(in.nextInt(), 2,1);
//3月1日往前一天,确定2月最后一天
cal.add(Calendar.DAY_OF_MONTH, -1);
printCalander(cal);*/
// 昨天的这个时刻
cal.add(Calendar.DAY_OF_MONTH, -1);
printCalander(cal);
}
}
4.Math类
1、doubleceil(double d);//返回大于指定数据的最小整数
2、doublefloor(double d);//返回小于指定数据的最大整数
3、double pow(doublea,double b);//返回a的b次方
4、long round(doubleb);//返回b四舍五入的值
5、doublerandom();//返回正号的double值,是一个大于等于0.0且小于1.0的随机数
代码记录:
public static void sop(Object o) {
System.out.println(o);
}
public static void show() {
double d1 = Math.ceil(17.8);//ceil返回大于指定数据的最小整数
sop(d1);
double d2 = Math.floor(17.8);//floor返回小于指定数据的最大整数
sop(d2);
long l1 = Math.round(17.8);// 四舍五入
sop(l1);
double d3 = Math.pow(2, 3);// 2的3次方
sop(d3);
}
通过Math类和Random类生成随机数的两种方法:
// 生成10个1到10的随机数。
// Math类
for(int i=0;i<10;i++){
int d = (int) (Math.random()*10+1);
sop(d);
// Random类
Random r = new Random();
for(int i=0;i<10;i++){
int d = r.nextInt(10)+1;
sop(d);
}
练习:
给定任意一个小数,保留后n位。
/*给定一个小数,保留n位小数
* 先把给定小数乘以10的n次方,然后四舍五入取整
* 得到的整数再除以10的n次方
*/
public static double baoliu(double d,int n) {
double d1 = d*Math.pow(10, n);
long l1 = Math.round(d1);
return l1/Math.pow(10, n);
}
Scanner in = new Scanner(System.in);
sop("小数为:");
double d = in.nextDouble();
sop("保留位数:");
int n = in.nextInt();
sop(baoliu(d,n));