首页 > 代码库 > 黑马程序员——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基础——其他流