码迷,mamicode.com
首页 > 其他好文 > 详细

13:常用类

时间:2015-10-26 22:01:16      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:

第一  System类

一、概述:

1、System类是描述系统一些信息的类,不可以实例化,也无构造函数

2、System类中的方法和属性都是静态的

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

      out:标准输出流,默认是控制台

二、方法:Properties集合的方法

1、获取系统的属性信息:

      Properties getProperties();

说明:1)此方法返回的双列集合,即键值对;因为Properties是Hahstable的子类,也就是Map集合的一个子类对象,那么通过Map方法取出该集合中的元素。

           2)该集合存储的都是字符串,不用泛型定义

2、获取指定属性信息:

      String System.getProperty(String key);(取,用set集合)

3、在系统内定义特有信息:

      void System.setProperty(String key,String value);相当于put(存)

4、如何在jvm启动时,加载一些属性信息:

      通过命令:java -D<name>=<value> 可以设置特有的系统属性信息

技术分享

技术分享

技术分享

  1. import java.util.Properties;
  2. import java.util.Set;
  3. class SystemDemo {
  4. private static final String LINE_SEPARATOR = System
  5. .getProperty("line.separator"); // 这是一启动就获取到
  6. // System.out.println("hello"+LINE_SEPARATOR+" world");
  7. // \r\n,window这样换行,但Java是跨平台的,这样写所有的系统都能识别。这是键的值获取键的值public class SystemDemo
  8. // {
  9. public static void main(String[] args) {
  10. /*
  11. *
  12. * System:类中的方法和属性都是静态的。
  13. *
  14. * 常见方法:
  15. *
  16. * long currentTimeMillis();获取当前时间的毫秒值。
  17. */
  18. // long l1 = 1335664696656l;//System.currentTimeMillis();
  19. // System.out.println(l1/1000/60/60/24);//1335664696656
  20. // code..加个程序,显示程序运行的时间
  21. // long l2 = System.currentTimeMillis();//距离上一个时间走了多长时间
  22. // System.out.println(l2-l1);
  23. // demo_1();
  24. // 给系统设置一些属性信息。这些信息是全局,其他程序都可以使用。
  25. // System.setProperty("myclasspath", "c:\myclass");
  26. }
  27. public static void demo_1() {
  28. // 获取系统的属性信息,并存储到了Properties集合中。
  29. /*
  30. *
  31. * properties集合中存储都是String类型的键和值。
  32. *
  33. * 最好使用它自己的存储和取出的方法来完成元素的操作。
  34. */
  35. Properties prop = System.getProperties();
  36. Set<String> nameSet = prop.stringPropertyNames();// 用set集合
  37. // 遍历set集合,获取全部信息
  38. for (String name : nameSet) {
  39. String value = prop.getProperty(name);// getProperty返回string类型,不用强转了
  40. System.out.println(name + "::" + value);
  41. }
  42. }
  43. }


第二  Runtime类

一、概述:

1、每个java应用程序都有一个Runtime类实例,使应用程序能与其中运行的环境相连接,应用程序不能创建自己的Runtime类的实例,是由系统底层自己创建的。

2、该类并未提供构造函数:说明不可以new对象,那么会直接想到该类中的方法都是静态的。查阅API文档发现,该类中还有非静态方法,说明该类中肯定会提供方法获取该类对象,并且该方法是静态的,且返回值类型是该类类型。

3、由这个特点可以看出该类使用了单例设计模式。

二、方法:

1、获取本类对象:

       static Runtime getRuntime();

2、在单独的进程中执行指定字符串命令:

      Process exec(String command);  execute: 执行。 xxx.exe 

3、在Process中有一个杀掉子进程的方法,可将exec方法开启的进程杀掉

      void destroy();

技术分享

  1. import java.io.IOException;
  2. class RuntimeDemo {
  3. public static void main(String[] args) {
  4. // 获取本类对象
  5. Runtime runtime = Runtime.getRuntime();
  6. try {
  7. // 调用对象执行命令,返回一个进程
  8. Process p = runtime.exec("notepad.exe");
  9. // 转义字符加路径
  10. try {
  11. Thread.sleep(5000); // 睡了5秒,为了看见杀
  12. } catch (InterruptedException e) {
  13. e.printStackTrace();
  14. }
  15. // 杀掉子进程
  16. p.destroy();
  17. // 通过程序打开文件
  18. runtime.exec("notepad.exe RuntimeDemo.java");
  19. } catch (IOException e) {
  20. e.printStackTrace();
  21. }
  22. }
  23. }


第三  Math类

一、概述:

Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数(测绘软件)。

二、方法:

1、double ceil(double d)      --->   返回大于指定数据的最小整数
2、double floor(double d)    --->   返回小于指定数据的最大整数

3、double pow(double a,double b)         --->   返回a的b次方
4、double/float round(double/float m)    --->   返回m四舍五入的值

5、double random()    --->   返回0到1的随机数,包含0不包含1

  1. public class MathDemo {
  2. public static void main(String[] args) {
  3. method();
  4. randomNum();
  5. saveTwo(12.3456, 2, true);
  6. }
  7. /*
  8. * 练习。给定一个小数。 保留该两位小数。
  9. */
  10. public static void saveTwo(double d, int scale, boolean isRound) {
  11. double base = Math.pow(10, scale);
  12. double num = isRound ? Math.round(d * base) / base : ((int) (d * base))
  13. / base;
  14. System.out.println("num=" + num);
  15. /*
  16. * double d1 = d*100; sop("d1="+d1); d1 = d1+0.5; double d2 = (int)d1;
  17. * sop("d2="+d2); double d3 = d2/100; sop("d3="+d3);
  18. */
  19. }
  20. /*
  21. * math方法演示
  22. */
  23. public static void method() {
  24. double d = Math.ceil(-16.23);// 返回大于指定数据的最小整数
  25. System.out.println("Math.ceil:" + d);
  26. double d1 = Math.floor(-12.99);// 返回小于给定数据的最大整数
  27. System.out.println("Math.floor:" + d1);
  28. long l = Math.round(-12.46);// 四舍五入
  29. System.out.println("Math.round:" + l);
  30. double d2 = Math.pow(2, 3);// 返回第一个参数的第二个参数次幂的值。
  31. System.out.println("Math.pow:" + d2);
  32. }
  33. /*
  34. * 取随机数
  35. */
  36. public static void randomNum() {
  37. Random r = new Random();// 可以用math中的random方法,也可以使用Random类(变成了对象)
  38. for (int x = 0; x < 10; x++) {
  39. // double d = Math.random();
  40. // double d = Math.ceil(Math.random()*10);
  41. // double d = (int)(Math.random()*6+1); 筛子1-6
  42. // double d = (int)(r.nextDouble()*6+1);
  43. int d = r.nextInt(10) + 1; // 上边的这个的简写
  44. System.out.println(d);
  45. }
  46. }
  47. }
  1. 技术分享
  2. 技术分享


第三  时间类

一、Date类

1、概述:类 Date 表示特定的瞬间,精确到毫秒。

2、转换:因为Date类获取到当前时间并以美国方式显示,所以并不是我们所需要的,也就是这样我们需要用到SimpleDateFormat类为其进行转成我们想要的类型。SimpleDateFormat接收一个模式,用于格式化。


  1. public class DateDemo {
  2.  public static void main(String[] args) throws ParseException {
  3.   methodDemo_3();
  4.  } 
  * 日期对象和毫秒值之间的转换。
  *
  * 毫秒值-->日期对象 :
  * 1,通过Date对象的构造方法  new Date(timeMillis);
  *  2,还可以通过setTime设置。
  *  因为可以通过Date对象的方法对该日期中的各个字段(年月日等)进行操作。
  *  
  *
  * 日期对象-->毫秒值:
  * getTime方法。
  * 因为可以通过具体的数值进行运算。
  *技术分享

  1.  public static void methodDemo_1() {
  2.   long time = System.currentTimeMillis();//
  3. // System.out.println(time);//1335671230671
  4.   Date date = new Date();//将当前日期和时间封装成Date对象。
  5.   System.out.println(date);//Sun Apr 29 11:48:02 CST 2012
  6.   Date date2 = new Date(1335664696656l);//将指定毫秒值封装成Date对象。从上边看出走了多长时间
  7.   System.out.println(date2);
  8.  }
  * 对日期对象进行格式化。
  * 将日期对象-->日期格式的字符串。(转换成本国的)
  * 使用的是DateFormat类(抽象类)中的format方法。
  1.  public static void methodDemo_2() {
  2.   Date date = new Date();
  3.   //获取日期格式对象。具体着默认的风格。 FULL 、LONG等可以指定风格
  4.   DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.LONG);//日期
  5.  dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG);//日期时间
  6. // System.out.println(dateFormat);
技术分享
技术分享
技术分享
专门用于生产对象的就是工厂,如单例模式。虽然DateFormat不能new对象,
但是他可以通过getDateInstance这个方法来获取对象(实例),getDateTimeInstance获取日期的实例

  //如果风格是自定义的如何解决呢?
  1.   dateFormat = new SimpleDateFormat("yyyy--MM--dd");//用  dateFormat的子类
  2.   String str_date = dateFormat.format(date);//dateFormat实例的format方法,它date传进去
  3.    System.out.println(str_date);
     }
 技术分享

  * 将日期格式的字符串-->日期对象。 (网上写下日期,网络把它需要转成对象进行操作)
  * 使用的是DateFormat类中的parse()方法。
  *
  * @throws ParseException ,写了不是日期格式的字符串
  1.  public  static void methodDemo_3() throws ParseException {
  2.   String str_date = "2012年4月19日"; //写了个日期字符串
  3.   str_date = "2011---8---17";
  4. //DateFormat对象,写成2012年4月19日就需要改格式
  5.   DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.LONG);
  6.   dateFormat = new SimpleDateFormat("yyyy---MM---dd"); //解析自定义格式需要这么写
  7.     Date date = dateFormat.parse(str_date); 
  8.   System.out.println(date);
  9.  } 
  10. } 

 * 类 Date 表示特定的瞬间,精确到毫秒。 
    1. public class DateDemo {  
    2.     public static void main(String[] args) {  
    3.         Date d = new Date();  
    4.         System.out.println(d);//打印的时间不是理想中的格式,所以需要对其进行转化  
    5.           
    6.         //将模型封装在simpledateformat对象中,SimpleDateFormat接收一个模式,用于格式化  
    7.         SimpleDateFormat smf = new SimpleDateFormat("yyyy年MM月dd日 E hh:mm:ss");  
    8.         //调用format方法让模式格式化指定的date对象  
    9.         String time = smf.format(d);  
    10.         System.out.println(time);  
    11.           
    12.         long l = System.currentTimeMillis();  
    13.         Date d1 = new Date(l);  
    14.         System.out.println(d1);  
    15.     } 

练习:
 * "2012-3-17"到"2012-4-6"
 * 中间有多少天?
 * 思路:
 * 两个日期相减就哦了。
 * 咋减呢?
 * 必须要有两个可以进行减法运算的数。
 * 能减可以是毫秒值。如何获取毫秒值?通过date对象。
 * 如何获取date对象呢?可以将字符串转成date对象。
 *
 * 1,将日期格式的字符串转成Date对象。
 * 2,将Date对象转成毫秒值。
 * 3,相减,在变成天数

  1. public class DateTest {
  2. public static void main(String[] args) throws ParseException {
  3. String str_date1 = "2012-3-17";
  4. String str_date2 = "2012-4-18";
  5. test(str_date1, str_date2);
  6. }
  7. public static void test(String str_date1, String str_date2)
  8. throws ParseException {
  9. // 1,将日期字符串转成日期对象。
  10. // 定义日期格式对象。
  11. DateFormat dateFormat = DateFormat.getDateInstance(); // 方法1
  12. dateFormat = new SimpleDateFormat("yyyy-MM-dd"); // 方法2,俩种都行,择其一
  13. Date date1 = dateFormat.parse(str_date1);
  14. Date date2 = dateFormat.parse(str_date2);
  15. // 2,将Date对象转成毫秒值。
  16. long time1 = date1.getTime();
  17. long time2 = date2.getTime();
  18. long time = Math.abs(time1 - time2); // 变成正数
  19. int day = getDay(time);
  20. System.out.println(day);
  21. }
  22. private static int getDay(long time) {
  23. int day = (int) (time / 1000 / 60 / 60 / 24);
  24. return day;
  25. }
  26. }

Date & DateFormat 类

Date类在java.util包中。使用Date类的无参数构造方法创建的对象可以获取本地当前时间。

SimpleDateFormat来实现日期的格式化。

public SimpleDateFormat(String pattern);

该构造方法可以用 参数pattern 指定的格式创建一个对象,该对象调用:

public String format(Date date):方法格式化时间对象date

静态工厂方法是一种模式

首先是一个静态方法,然后通过这个方法可以返回指定的对象,而不用具体去关心这个这个对象是如何创建的。

技术分享 

技术分享 

 

另外一种方法

技术分享 



二、Calendar类(Date类因为不够国际化,被它取代了

1、概述:

Calendar是一个抽象类,它为特定瞬间与一组诸如YEAR、MONTH、DAY_OF_MONTH等日历字段之间的转换提供了一些方法。Calendar可以对年月日等时间进行获取。并提供了相应的子段值。可参阅API文档。也不能new

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

8)为给定的日历字段添加或减去指定的时间值:   --->   void add(int field,int amount);

9)获取指定的日历字段对应的时间值:                  --->   int get(int field);

10)将给定日历字段对应的时间值设置为给定值:  --->   void set(int field,int value);  设置日历字段 YEAR、MONTH和DAY_OF_MONTH的值: --->   void set(int year,int month,int date);



  1. public static void main(String[] args) {
  2.   Calendar c = Calendar.getInstance();
  3. 指定日期,偏移
  4. 技术分享
  5.  } 
  1. public static void showDate(Calendar c) {
  2.   int year = c.get(Calendar.YEAR); YEAR是静态的已有的字段,不能直接写
  3.   int month = c.get(Calendar.MONTH)+1; ,月是0-11
  4.   int day = c.get(Calendar.DAY_OF_MONTH);
  5.   int week = c.get(Calendar.DAY_OF_WEEK);
  6.   System.out.println(year+"年"+month+"月"+day+"日"+getWeek(week));
  7.  }
  8.  public static String getWeek(int i) { //改成中国的星期方法
  9.   String[] weeks = {"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
  10.   return weeks[i];
  11.  }
  12.     public static void printCalendar(Calendar c) {  
  13.         // 设置月  
  14.         String[] month = { "一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月",  
  15.                 "九月", "十月", "十一月", "十二月" };  
  16.         // 设置月份  
  17.         int indexm = c.get(Calendar.MONTH);  
  18.         System.out.println(month[indexm]);  
  19.   
  20.         // 设置星期  
  21.         String[] weeks = { "", "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", };  
  22.         // 获取星期  
  23.         int indexw = c.get(Calendar.DAY_OF_WEEK);  
  24.         System.out.println(weeks[indexw]);  
  25.   
  26.         // 获取年  
  27.         System.out.println(c.get(Calendar.YEAR) + "年");  
  28.         // 月  
  29.         System.out.println(c.get(Calendar.MONTH) + 1 + "月");  
  30.         // 日子  
  31.         System.out.println(c.get(Calendar.DAY_OF_WEEK) + "日");  
  32.   
  33.     }  
  34. }
练习:
  1.  * 获取任意年的二月有多少天。  
  2.  *   
  3.  * 思路:根据指定年设置一个时间就是   
  4.  * c.set(year,2,1)//某一年的3月1日。  
  5.  * c.add(Calenar.DAY_OF_MONTH,-1);//3月1日,往前推一天,就是2月最后一天。  
    1. public class CalendarTest {  
    2.     public static void main(String[] args) {  
    3.         getFebNum(2016);  
    4.     }  
    5.       
    6.     public static void getFebNum(int year){  
    7.         Calendar c = Calendar.getInstance();  
    8.         System.out.println("时间:" + c.getTime());  
    9.         c.set(year,2,1);//某一年的3月1日。  
    10.         c.add(Calendar.DAY_OF_MONTH, -1);//3月1日,往前推一天,就是2月最后一天。  
    11.         System.out.println(c.get(Calendar.DAY_OF_MONTH));  
    12.     }  
    13. }









13:常用类

标签:

原文地址:http://www.cnblogs.com/liuyu0529/p/4912370.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!