java学习笔记IO输入与输出——常用工具类(1)


一、System类:

包含一些有用的类字段和方法,他不能被实例化没有提供构造参数。

out:标注输出流,默认是控制台或者屏幕。

in:标准输入流,默认是键盘。

描述系统一些信息。

System可以描述系统环境。

获取系统属性信息:Properties getProperties(); // 返回一个Properties

设置属性信息:setProperty(“mykey”,”myvalue”);

在虚拟机启动时动态的加载一些属性信息:java命令的-D<name>=<value> eg:java–Dhaha=qqqq

import java.util.*;

classSystemDemo

{

         public static void main(String[] args)

         {      

                   Properties prop =System.getProperties(); //定义一个Properties对象接受系统调用的getProperties方法。

                   // 因为Properties是Hashtable的子类,也就是Map集合的一个子类对象。

                   // 那么可以通过map的方法取出该集合中的元素。

                   // 该集合中存储的都是字符串,没有泛型定义。所以下面输出时候不强转也可以。

                   // 获取所有属性信息

                   for(Object obj :prop.keySet())  // 输出查看属性

                   {

                            String value =(String)prop.get(obj);

                            System.out.println(obj+”::”+value);

                   }

                   // 如何在系统中自定义一些特有信息呢?

                   // 通过setProperty(“mykey”,”myvalue”);  

                   System.setProperty(“mykey”,”myvalue”);     //  调用方法设置特有属性信息

                   for(Object obj :prop.keySet())   // 再次输出查看属性

                   {

                            String value =(String)prop.get(obj);  // 强转动作,变成字符串。此处不强转也可以。

                            System.out.println(obj+”::”+value);

                   }

                   // 获取指定属性信息

                   String value =System.getProperty(“os.name”);

                   System.out.println(”value=”+value);

                   // 可不可以在虚拟机启动时动态的加载一些属性信息呢?

                   // java命令的-D<name>=<value>      eg: java –Dhaha=qqqq

                   String v =System.getProperty(“haha”);  //  获取haha的信息赋给v

                   System.out.println(”v=”+v);   // 输出haha的值

         }

}

 

二、Runtime类:

每个Java应用程序都有个Runtime类实例使应用程序能与其运行的环境相连接。

Runtime类没有构造函数,不能手动建立对象。但其有非静态方法,因为他有一个静态方法getRuntime(),用于返回与当前Java应用程序相关的运行时对象。(单利设计模式)

Runtime对象,该类中并没有提供构造函数,说明不可以new对象,那么会直接想到该类中的方法都是静态的。说明该类肯定会提供方法获取本类对象,而且该方法是静态的,并且返回值类型是本类类型。那么,该方法就是:static Runtime getRuntime();由这个特点可以看出该类使用了单例设计模式完成,保证了对象的唯一性。

exec方法返回一个Process进程,Process的一个实例。Process是一个抽象类。其中的方法都是抽象的。

Process类中有一个destroy();方法,用于杀掉子进程。

classRuntimeDemo

{

         public static void main(String[] args)throws Exception

         {

                   Runtime r =Runtime.getRuntime();

                   //  执行扫雷。由于地址可能出错所以要抛出异常。

                   Process p = r.exec(“c:\\winmine.exe”);   \\    \为转意字符所以\\

                   Thread.sleep(4000);   // 线程创建后等四秒。在杀死

                   p.destroy();  // 杀死进程。

                   Process p = r.exec(“notepad.exeSystemDemo.java”);  //以记事本打开SystemDemo.java这个java文件

         }

}

 

Date类:表示特定的瞬间,精确到毫秒。此类有构造方法。但大部分已过时只剩两个。

DateFormat类:日期格式化抽象类不能实例化对象。但他有一个非抽象子类SimpleDateFormat此类在java.text包中。

importjava.util.*;

importjava.text.*;

classDateDemo

{

         Date d = new Date();

         System.out.println(d);   // 打印结果:Sun Jan16 10:58:47 CST 2011

         // 打印的结果的时间看不懂希望有些格式。

         // 将模式封装到SimpleDateformat对象中。

         SimpleDateFormat sdf = newSimpleDateFormat(“yyyy年mm月dd日E hh:mm:ss”);

         // 调用format方法让模式格式化指定Date对象。

         sdf.format(d);

         System.out.println(“time=”+time);  // 结果为:time=2011年01月16日星期日11:06:54

{


三、Calendar类

Calendar日历抽象类可以单独获取日期中的月、日、年。有一个子类GregorianCalendar

注意获取月份从0开始。

importjava.util.*;

classCalendarDemo

{

         public static void main(String[] args)

         {

                   Calendar c =Calendar.getInstance();

                   String[] mons = {“一月”,”二月”,”三月”,”四月”,”五月”,”六月”,”七月”,”八月”,”九月”,”十月”,”十一

                        月”,” 十二月”};

                   String[] weeks = {“星期一”,”星期二”,”星期三”,”星期四”,”星期五”,”星期六”,”星期日”};

                   int index =c.get(Calendar.MONTH);

                   int index1 =c.get(Calendar.DAY_OF_WEEK);

                   //  直接获取YEAR、MONTH、DAY_OF_MONTH

                   sop(c.get(Calendar.YEAR)+”年”);

                   // 查表法替换

                   sop(mons[index]);         // sop((c.get(Calendar.MONTH)+1)+”月”);

                   sop(c.get(Calendar. DAY_OF_MONTH)+”日”);  

                   // 查表法替换

                   sop(weeks[index1]);         // sop(“星期”+c.get(Calendar.DAY_OF_WEEK));

 

                   /*

                   Date d = new Date();

                   SimpleDateFormat sdf = newSimpleDateFormat(“yyyy”);

                   String year = sdf.format(d);

                   System.out.println(year);

                   */

         }

         public static void sop(Object obj)   //  定义输出方法。

         {

                   System.out.println(obj);

         }

}

Calendar类其它操作:

importjava.util.*;

classCalendarDemo2

{

         public static void main(String[] args)

         {

                   Calendar c = Calendar.getInstance();

                   c.set(2012,2,23);    //  设置时间。

                   printCalendar(c);   // 打印结果为2012年三月23日星期五

                   c.add(Calendar.YEAR,4);   //  将年字段加四

                   c.add(Calendar.MONTH,4);    //  将月字段加四

                   c.add(Calendar.MONTH,-4);   // 将月字段往前推一四个月。月份超出自动处理年的变换

         }

         public static void printCalendar(Calendarc)  // 定义方法用于输出打印日期

         {

                   String[] mons = {“一月”,”二月”,”三月”,”四月”,”五月”,”六月”,”七月”,”八月”,”九月”,”十月”,”十一

                        月”,” 十二月”};

                   String[] weeks = {“星期一”,”星期二”,”星期三”,”星期四”,”星期五”,”星期六”,”星期日”};

                   int index =c.get(Calendar.MONTH);

                   int index1 =c.get(Calendar.DAY_OF_WEEK);

                   //  直接获取YEAR、MONTH、DAY_OF_MONTH

                   sop(c.get(Calendar.YEAR)+”年”);

                   // 查表法替换

                   sop(mons[index]);         // sop((c.get(Calendar.MONTH)+1)+”月”);

                   sop(c.get(Calendar. DAY_OF_MONTH)+”日”);  

                   // 查表法替换

                   sop(weeks[index1]);

         }

         public static void sop(Object obj)   //  定义输出方法。

         {

                   System.out.println(obj);

         }

}

 

四、类Math:

工具类,没有特有数据,其中的方法都是静态方法。包含用于执行基本数学运算的方法。

util包中提供了一个Random类。要比Math中的方法更多。

importjava.util.*;   // 用Random类需要导包。

classMathDemo

{

         public static void main(String[] args)

         {

                   // Math.random()  第一种方法

                   for(int x=0; x<10; x++)

                   {

                            double d=Math.random();   // random()方法演示随机产生一个大于等于0.0且小于1.0的数。

                            int d1 =(int)(Math.random()*10+1);   //  随机生成1到10的整数。

                            sop(d);

                   }

                   // Random类  第二种方法

                   Random r = new Random();

                   {

                            for(int x=0;x<10; x++)

                            {

                                     int d =r.nextInt(10)+1; // nextInt方法返回一个随机整数在0到指定数(不包含)之间

                                     sop(d);

                            }

                   }

         }

         public static void show()    //  定义Math类中方法演示的方法

         {

                   double d =Math.ceil(12.34);  // ceil方法返回大于指定数据的最小整数。

                   double d1 =Math.floor(-16.34);    // floor方法返回小于指定数据的最大整数。

                   long l =Math.round(12.34);     //  返回指定数的四舍五入结果。

                   sop(“d=”+d);     // 13.0

                   sop(“d1=”+d1);     // -16

                   sop(“l=”+l);      // 13

                   double d2 =Math.pow(2,3);     //  返回2的3次方。

                   sop(“d2=”+d2);

         }

         public static void sop(Object obj)   //  定义输出方法。

         {

                   System.out.println(obj);

         }

}



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值