黑马程序员——Java基础——其他流

 

第一讲  System与Runtime类

概述:
 1、System是描述系统一些信息的类,类中的属性和方法是静态的。不能被实例化,没有提供构造函数
 2、
 out:标准输出流,默认屏幕
 in: 标准输入流,默认是键盘

 方法:
 1、获取系统的属性信息
   Properties getProperties();
 说明:
 1)该方法返回的双列集合,键与值;因为Properties是HashTablee的子类,所以能用Map 的方法获取集合元素;
 2)该集合存储的都是字符串。没有泛型的定义
 2、获取指定属性信息
 String getProperty(key)
 3、在系统内定义特有信息
 String setProperty(key,value)
 4、如何在jvm启动时,加载一下属性信息
 java -D《name》=《value》 程序 就可以设置特有的系统属性信息

Runtime类
 概述:
 1、每一个java应用程序都有一个Runtime实例,使用应用程序能与其中运行的环境相连接,
 应用程序不能创建自己的Runtime类的实例,是由系统底层自己创建的;
 2、该类中并没有提供构造函数。说明不能new对象,而又不全是static。所以必然有一个static
 的方法获得本类对象。
 3、这也是单例设计模式的一种
 方法:
 1)static Runtime getRuntime()
 2)Process exec(String Command)
 3)void destroy();//注意只能结束java 开启的程序

举个栗子:

package System;
import java.util.*;
public class SystemDemo {
    public static void main(String[] args)throws Exception{
//        Properties p=System.getProperties();//获得系统的系统信息
//        System.out.println(p);    
//        String value=System.getProperty("os.name");//获得键值为os。name的value,即系统明
//        System.out.println(value);
//        
//        System.setProperty("我云","水音");
//      System.out.println(p);
//Runtime类        
//        String s=System.getProperty("我云");
//        System.out.println(s);
        Runtime r=Runtime.getRuntime();//用static法获得本类对象
        Process p=r.exec("Uedit32.exe SystemDemo.java");//执行记事本程序
        Thread.sleep(40000);//等个40000毫秒
        p.destroy();//程序p结束
    }
}

 

第二讲  时间类

Date类 

 1、概述:Date类表示特点瞬间 java中的特定格式如:Mon Jun 10 20:35:21 CST2014

 2、自定义格式
 默认的格式不实用,我们需要DateFormat中的format方法实现

 Calendar类
 1 、概述:Calendar是抽象类,比Date好用一些
 2、基本获得方法:

  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

设置时间

  1)void set(year,month,day)

  2)int add(Calendat.DAY_OF_MONTH,-1);将他向上推一天

  3)void set(Calendat.DAY_OF_MONTH,3);设置这天为3;

  4)int get(int field)//得到某个数据

举些栗子:

package System;
import java.util.*;
import java.text.*;
public class TimeDemo {
	public static void main(String[] args){
		Date d=new Date();//得到时间对象,即得到现在时间
		System.out.println(d);//看一看它的格式
		
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy年"
				+ "MM月dd日E HH:mm:ss");//变格式
		String time=sdf.format(d);//sdf的格式被用于d,再赋予String类的time
		System.out.println(time);
//		看一看另一种方法
		Calendar c=Calendar.getInstance();//也是获得现在时间,注意是静态方法getINstance
		c.set(2015,1,1);//设置时间2015年2月1日
		System.out.println(pattern(c));//显示当今时间
		c.add(Calendar.YEAR,3);//增加三年
		System.out.println(pattern(c));//自定义的pattern方法
	}
	//获取指定日期和时间	
	private static String pattern(Calendar c) {//获取时间
		String s=nian(c)+yue(c)+ri(c)+" "+time(c);
		return s;
	}
	private static String time(Calendar c) {
		String time=c.get(Calendar.HOUR_OF_DAY)+":"+c.get(Calendar.MINUTE)+":"+
				c.get(Calendar.SECOND);
		return time;
	}	
	private static String ri(Calendar c) {
		String s=c.get(Calendar.DAY_OF_MONTH)+"日";
		return s;
	}
	private static String yue(Calendar c) {//查表法,可用于星期,可用于小写变大写
		String[] yue={"一月","二月","三月","四月","五月","六月","七月","八月",
				"九月","十月","十一月","十二月"};
		return yue[c.get(Calendar.MONTH)];
	}
	private static String nian(Calendar c) {//获取年
			String s = c.get(Calendar.YEAR)+"年";
			return s;
	}	
}

 

做3个小练习

 1 /*练习:
 2  * 1、获取任意年二月多少年
 3  *     c.set(yue,2,1)//三月1日
 4  *     c.add(Calenar.DAY_OF_MONth,-1);
 5  *     c.get(Calendar.DAy_OF_MONth);
 6  * 2、获取前一天现在这个时刻
 7  *     c.add(Calenar.DAY_OF_MONth,-1);
 8  * 
 9  * 3、计算有序上课天数
10  * 思路:1)设置两个时间类如:    c1.set(2013,5,5);c2.set(2144,4,4);
11        2)用c1.get(Calendar.DAY_OF_MONTH)!=c2.get(Calendar.DAY_OF_MONTH)中循环
12        并c1.add(Calendar.DAY_OF_MONTH,1)遍历非周末的天数,计入int型的count
13        3)返回count
14  *     
15  */
16 public class TestDemo {
17     public static void main(String[] args){
18                 eryue(2015);
           lastime();
           howDay(2013,5,5,2014,5,4);//从2013年5月5日到2014年5月4日  19 } 20 21 public static int eryue(int year){//获得二月天 22 Calendar c=Calendar.getInstance(); 23 c.set(year,2,1); 24 c.add(Calendar.DAY_OF_MONTH,-1); 25 return c.get(Calendar.DAY_OF_MONTH); 26 } 27 //获得前一天 28 public static String lasttime(){ 29 Calendar c=Calendar.getInstance(); 30 c.add(Calendar.DAY_OF_MONTH,-1); 31 return pattern(c); 32 } 33 34 //计算有效天数 35 public static int howDay(int y,int m,int d,int y2,int m2,int d2){ 36 Calendar c1=Calendar.getInstance(); 37 Calendar c2=Calendar.getInstance(); 38 c1.set(y,m,d); 39 c2.set(y2,m2,d2); 40 int count=0; 41 42 for(;c1.get(Calendar.DAY_OF_MONTH)!=c2.get(Calendar.DAY_OF_MONTH) 43 ;c1.add(Calendar.DAY_OF_MONTH,1)){ 44 if(c1.get(Calendar.DAY_OF_WEEK)!=1&&c1.get(Calendar.DAY_OF_WEEK)!=7) 45 count++; 46 } 47 48 return count; 49 } 50 private static String pattern(Calendar c) {//获取时间 51 String s=nian(c)+yue(c)+ri(c)+" "+time(c); 52 return s; 53 } 54 private static String time(Calendar c) { 55 String time=c.get(Calendar.HOUR_OF_DAY)+":"+c.get(Calendar.MINUTE)+":"+ 56 c.get(Calendar.SECOND); 57 return time; 58 } 59 private static String ri(Calendar c) { 60 String s=c.get(Calendar.DAY_OF_MONTH)+"日"; 61 return s; 62 } 63 private static String yue(Calendar c) {//获得月 64 String[] yue={"一月","二月","三月","四月","五月","六月","七月","八月", 65 "九月","十月","十一月","十二月"}; 66 return yue[c.get(Calendar.MONTH)]; 67 } 68 private static String nian(Calendar c) {//获取年 69 String s = c.get(Calendar.YEAR)+"年"; 70 return s; 71 } 72 }

第三讲  Math类

 一、概述

  Math类是最基本执行的属性运行法

 二、方法

  1、double ceil(double d);返回大于指定数据的最小整形,如-1.6就返回-1,1.6返回2.0

  2、double floor(double d);//返回小于指定数据的最大正数

  3、double pow(double a,double b);//a的b次方

  4、long round(double b);四舍五入

  5、double random();大于0小于1.0的随机数;

 1 package System;
//做练习
2 /*给定一个小数,保留这个小数点的后n位 3 * 1、先乘以10的n次方,再四舍五入; 4 * 2、将此除以10的n次方; 5 */ 6 public class xiaos { 7 public static void main(String[] args){ 8 // double d=baoNiu(12.1564,2); 9 // System.out.println(d); 10 // } 11 // 12 // private static double baoNiu(double d, int i) { 13 // double d1=d*Math.pow(d, 2); 14 // long l=Math.round(d1); 15 // return l/Math.pow(d, 2); 16 System.out.println(Math.ceil(1.6)); 17 System.out.println(Math.round(2.4)+"--"+Math.round(2.6)); 18 System.out.println(Math.floor(2.4)+"-=-"+Math.pow(2.6,4)); 19 for(int i=0;i<10;i++) 20 System.out.println(Math.random()*10); 21 // 四舍五入练习 22 System.out.println(retention(13.654,2)); 23 } 24 25 private static double retention(double d,int i) { 26 double d1=d*Math.pow(10, i);//小数点前移i位 27 long l=Math.round(d1);//小数点后四舍五入 28 return l/Math.pow(10, i);// 29 } 30 }

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。