首页 > 代码库 > 黑马程序员——Java基础——其他流

黑马程序员——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=http://www.mamicode.com/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型的count13        3)返回count14  *     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 }

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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