黑马程序员——其他对象(System、Runtime、Date、Math)

   System类

一、Systerm类概述

1、System类是系统类,虚拟机启动时加载系统信息的类,类中的属性和方法都是静态的。不能被实例化,没有构造函数。在 System 类提供的设施中,有标准输入、标准输出和错误输出流;对外部定义的属性和环境变量的访问;加载文件和库的方法;还有快速复制数组的一部分的实用方法。

2、字段摘要

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

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

 

二、方法

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

       Properties prop=System.getProperties();//系统类调用getProperties()方法,结果返回Properties类型。

说明:

        1)因为Properties是Hahstable的子类,也就是Map集合的一个子类对象,所以可以通过Map方法取出该集合中的元素。

        2)该集合存储的都是字符串,没有泛型定义。

2、获取单个指定属性信息:

       String value=System.getProperty(“os.name”);//只获取系统名称(例如当跨平台时可能需要获取单个系统信息,如果某个应用程序只能在windox系统下运行,则可以获取系统名称以后用if判断。)

3、在系统启动时在系统中设置一些自定义信息:

       String setProperty(“mykey”,”myvalue”);

4、如何在虚拟机启动时,动态加载一些属性信息:

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

示例:

[java] view plaincopy

1.  import java.util.*;  

2.  class SystemDemo   

3.  {  

4.      public static void main(String[] args)   

5.      {  

6.          Properties prop=System.getProperties();//获取当前的系统属性  

7.          sop(prop);  

8.    

9.          String value=System.getProperty("os.name");//只获取系统名称属性  

10.         sop("os.name="+value);  

11.   

12.         System.setProperty("mykey","myvalue");//设置指定键指示的系统属性信息  

13.         sop(prop);  

14.           

15.         String s= System.getProperty("haha");//当系统中没有该键值,返回null  

16.         sop(s);  

17.   

18.     }  

19.   

20.     public static void sop(Object obj)  

21.     {  

22.         System.out.println(obj);  

23.     }  

24. }  

 

  Runtime类

一、概述

        1、每个java应用程序都有一个Runtime类实例,使用应用程序能与其中运行的环境相连接,应用程序不能创建自己的Runtime类的实例,是由系统底层自己创建的,getRuntime方法就是系统运行时自动创建的,只需要调用即可。

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

        3、由以上特点可以看出该类使用了单例设计模式完成,保证了对象的唯一性。

 

二、方法

1、获取本类对象

       static Runtime.getRuntime();

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

       Process p= r.exec(String command);

3、利用应用程序打开某文件

     r.exec(“notepad.exe  RuntimeDemo.java”);//用记事本打开指定文件

4、在Process中有一个杀掉子进程的方法,可将exec方法开启的进程快速结束,秒杀。

        p.destroy();

5、延迟进程

    Thread.sleep(4000);//应用程序延迟4秒钟。

示例:

[java] view plaincopy

1.  class RuntimeDemo   

2.  {  

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

4.      {  

5.          Runtime r=Runtime.getRuntime();//获取本类对象  

6.    

7.          Process p=r.exec("notepad.exe");//执行记事本程序  

8.          r.exec("notepad.exe  RuntimeDemo.java");//用记事本打开指定文件  

9.    

10.         Thread.sleep(3000);//让线程等待3  

11.         p.destroy();//杀掉指定进程  

12.     }  

13. }  

 

     时间类

一、Date类

1、概述

       Date类表示特定的瞬间,精确到毫秒。

       java中的默认显示格式为:MonJun 10 22:35:21 CST2013

2、自定义格式

        默认的格式不一定满足每个人的需求,那么就需要自定义格式化模式。因为Date类中的大部分方法已过时,所以只能找其子类来实现。子类DateFormat中有format方法可以实现,但是DateFormat是抽象类,不能实例化。但是其下有个SimpleDateFormat子类,可以定义时间模式。

具体步骤:

        1)创建Date对象

        2)将时间模式封装到SimpleDateFormat对象中

        3)调用format方法让格式化模式指定Date对象

代码如下:

[java] view plaincopy

1.  import java.util.*;  

2.  import java.text.*;  

3.  class DateDemo   

4.  {  

5.      public static void main(String[] args)   

6.      {  

7.          Date d=new Date();//创建Date对象  

8.          //sop(d);  

9.    

10.         将模式封装到SimpleDateformat对象中。  

11.         SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMddE HH:mm:ss");  //Date对象的格式“XXXX年XX月XX日星期X 时:分:秒”

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

13.         String time=sdf.format(d);  

14.         sop(time);  

15.     }  

16.   

17.     public static void sop(Object ojb)  

18.     {  

19.         System.out.println(ojb);  

20.     }  

21. }  


二、Carendar类

1、概述:

        1)Calendar是一个抽象类,它为特定瞬间与一组诸如YEAR、MONTH、DAY_OF_MONTH等日历字段之间的转换提供了一些方法。

        2)Calendar可以对年月日等时间进行获取。并提供了相应的子段值。可参阅API文档。

2、方法:

2.1、基本获取时间

        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

2.2、设置时间:

        1)根据日历的规则,为给定的日历字段添加或减去指定的时间量:

               void add(int field,int amount);

        2)获取指定的日历字段对应的时间值:

               int get(int field);

        3)将给定日历字段对应的时间值设置为给定值:

               void set(int field,int value);

       设置日历字段 YEAR、MONTH和DAY_OF_MONTH的值:

               void set(int year,int month,int date);

示例:

[java] view plaincopy

1.  import java.util.*;  

2.  class  CalendarDemo  

3.  {  

4.      public static void main(String[] args)   

5.      {  

6.          Calendar c=Calendar.getInstance();  

7.            

8.          sop(pattern(c));//显示今天日期和当前时间  

9.            

10.         c.add(Calendar.YEAR,3);//年份变为3年后  

11.   

12.         sop(pattern(c));//显示指定日期和时间  

13.   

14.     }  

15.   

16.     //获取指定日期和时间  

17.     public static String pattern(Calendar c)  

18.     {  

19.         String s=year(c)+month(c)+day(c)+week(c)+" "+time(c);  

20.         return s;  

21.     }  

22.       

23.     //获取年份  

24.     public static int year(Calendar c)  

25.     {  

26.         return c.get(Calendar.YEAR);  

27.     }  

28.     //获取月份  

29.     public static String month(Calendar c)  

30.     {  

31.         String[] yue={"一月","二月","三月","四月",  

32.                     "五月","六月","七月","八月",  

33.                     "九月","十月","十一月","十二月"};  

34.         return yue[c.get(Calendar.MONTH)];  

35.     }  

36.     //获取日期  

37.     public static int day(Calendar c)  

38.     {  

39.         return c.get(Calendar.DAY_OF_MONTH);  

40.     }  

41.     //获取星期  

42.     public static String week(Calendar c)  

43.     {  

44.         String[] day={"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};  

45.         return day[c.get(Calendar.DAY_OF_WEEK)];  

46.     }  

47.     //获取时间,格式为时:分:秒  

48.     public static String time(Calendar c)  

49.     {  

50.         String s=c.get(Calendar.HOUR_OF_DAY)+":"+c.get(Calendar.MINUTE)+":"+c.get(Calendar.SECOND);  

51.         return s;  

52.     }  

53.   

54.     //打印输出  

55.     public static void sop(Object obj)  

56.     {  

57.         System.out.println(obj);  

58.     }  

59. }  

小练习:

[java] view plaincopy

1.  /* 

2.  练习 

3.  1、获取任意年的二月有多少天: 

4.      思路:根据指定年设置一个时间就是  

5.      c.set(year,2,1)//某一年的31日。 

6.      c.add(Calenar.DAY_OF_MONTH,-1);//31日,往前推一天,就是2月最后一天。 

7.   

8.  2、获取前一天的现在这个时刻 

9.      思路:c.add(Calenar.DAY_OF_MONTH,-1); 

10.  

11. 3、计算有效上课天数,每周六日不上课,计算任意年从九月到十月的有效上课天数 

12.     思路; 

13.     1、根据指定年设定一个时间就是c.set(year,8,1)//某一年的91 

14.     2、定义一个计数器,判断指定时间是否是星期六或者星期日,不是则计数加1 

15.     3、日期偏移量1天,直至判断到这个月的最后一天 

16. */  

17.   

18. import java.util.*;  

19.   

20. class  OtherClassTest  

21. {  

22.     public static void main(String[] args)   

23.     {  

24.         //练习1测试  

25.         sop("2014年二月份有"+whatDay(2014)+"");  

26.   

27.         //练习2测试  

28.         sop("昨天的现在这个时刻:"+lastNowTime());  

29.   

30.         //练习3测试  

31.         sop("20149月到10月上了"+howDay(2014)+"天课");  

32.     }  

33.   

34.     //练习1  

35.     public static int whatDay(int year)  

36.     {  

37.         Calendar c=Calendar.getInstance();  

38.         c.set(year,2,1); //某一年的3月1号 

39.         c.add(Calendar.DAY_OF_MONTH,-1);  //3月1号往前移1天就是2月的最后一天

40.         return c.get(Calendar.DAY_OF_MONTH);  //将2月的最后一天返回来就是2月的天数

41.     }  

42.   

43.     //练习2  

44.     public static String lastNowTime()  

45.     {  

46.         Calendar c=Calendar.getInstance();  

47.         c.add(Calendar.DAY_OF_MONTH,-1);  

48.         return pattern(c);  

49.     }  

50.   

51.     //练习3  

52.     public static int howDay(int year)  

53.     {  

54.         Calendar c=Calendar.getInstance();  

55.         c.set(year,8,1);  //设置时间为某一年的9月1号

56.         int count=0;  

57.         for (int x=c.get(Calendar.DAY_OF_MONTH); x<=30;x++ )  

58.         {  

59.             if(c.get(Calendar.DAY_OF_WEEK)!=1&&c.get(Calendar.DAY_OF_WEEK)!=7)  //如果不是周六日就加1自增

60.                 count++;  

61.             c.add(Calendar.DAY_OF_MONTH,1);  //如果是周六日则不自增,日期往后推一天

62.         }  

63.         return count;  

64.     }  

65.   

66.     //获取指定日期和时间  

67.     public static String pattern(Calendar c)  

68.     {  

69.         String s=year(c)+month(c)+day(c)+week(c)+" "+time(c);  

70.         return s;  

71.     }  

72.       

73.     //获取年份  

74.     public static int year(Calendar c)  

75.     {  

76.         return c.get(Calendar.YEAR);  

77.     }  

78.     //获取月份  

79.     public static String month(Calendar c)  

80.     {  

81.         String[] yue={"一月","二月","三月","四月",  

82.                     "五月","六月","七月","八月",  

83.                     "九月","十月","十一月","十二月"};  

84.         return yue[c.get(Calendar.MONTH)];  

85.     }  

86.     //获取日期  

87.     public static int day(Calendar c)  

88.     {  

89.         return c.get(Calendar.DAY_OF_MONTH);  

90.     }  

91.     //获取星期  

92.     public static String week(Calendar c)  

93.     {  

94.         String[] day={"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};  

95.         return day[c.get(Calendar.DAY_OF_WEEK)];  

96.     }  

97.     //获取时间,格式为时:分:秒  

98.     public static String time(Calendar c)  

99.     {  

100.         String s=c.get(Calendar.HOUR_OF_DAY)+":"+c.get(Calendar.MINUTE)+":"+c.get(Calendar.SECOND);  

101.         return s;  

102.     }  

103.   

104.     //打印输出  

105.     public static void sop(Object obj)  

106.     {  

107.         System.out.println(obj);  

108.     }  

109. }  

                                                                                                                                                   Math类

一、概述

       Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。该类全为静态方法。

 

二、方法

        1、doubleceil(doubled);//返回大于指定数据的最小整数

        2、doublefloor(doubled);//返回小于指定数据的最大整数

        3、doublepow(doublea,double b);//返回a的b次方

        4、longround(doubleb);//返回b四舍五入的值 

        5、doublerandom();//返回正号的double值,是一个大于等于0.0且小于1.0的随机数

 

三、Random类

        这是java.util中的一个单独的类,该类对象用于获取随机数。与Math中的random方法是一样的,不过这个类有自身的方法,可以将相应的随机数强转为指定基本数据类型。

        如:int nextInt(intn);//返回一个伪随机数,它是取自此随机数生成器序列的、在 0(包括)和指定值(不包括)之间均匀分布的 int值。

小练习:

[java] view plaincopy

1.  /* 

2.  练习:给定一个小数,保留该小数的后n位。 

3.     思路: 1、先把给定小数乘以10n次方,四舍五入保留整数部分 

4.                  2、再把该整数除以10n次方 

5.  */  

6.  class MathTest   

7.  {  

8.      public static void main(String[] args)   

9.      {  

10.           

11.         double d=retention(13.6572,2);  

12.   

13.         System.out.println("d="+d);  

14.     }  

15.       

16.     //保留小数位方法  

17.     public static double retention(double d,int n)  

18.     {  

19.         double d1=d*Math.pow(10,n);//先将要保留的小数位变为整数  

20.         long l=Math.round(d1);//将小数四舍五入  

21.         return l/Math.pow(10,n);//返回保留了指定小数位的小数  

22.     }  

23. }  

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,请给我一些时间处理一下您的请求。 已经为您创建了一个ChitGPT实例,我将按照您的要求回答您的问题。 您的第一个问题是如何创建学生对象并模拟生成学生集合。以下是一个示例代码,可以实现您的要求: ```java import java.util.ArrayList; import java.util.Date; import java.util.List; public class Student { // 姓名 private String name; // 年龄 private int age; // 住址 private String address; // 出生年月 private Date birthDate; public Student(String name, int age, String address, Date birthDate) { this.name = name; this.age = age; this.address = address; this.birthDate = birthDate; } public static List<Student> generateRandomStudentList(int count) { List<Student> studentList = new ArrayList<Student>(); for (int i = 0; i < count; i++) { String name = "Student " + i; int age = (int) (Math.random() * 20 + 15); String address = "Address " + i; Date birthDate = new Date(); studentList.add(new Student(name, age, address, birthDate)); } return studentList; } public static void main(String[] args) { List<Student> studentList = generateRandomStudentList(10); printStudentList(studentList); } public static void printStudentList(List<Student> studentList) { System.out.println("姓名\t年龄\t住址\t出生年月"); for (Student student : studentList) { System.out.println(student.getName() + "\t" + student.getAge() + "\t" + student.getAddress() + "\t" + student.getBirthDate()); } } // Getters and Setters public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public Date getBirthDate() { return birthDate; } public void setBirthDate(Date birthDate) { this.birthDate = birthDate; } } ``` 以上示例代码实现了一个学生类,包括姓名、年龄、住址、出生年月等属性,同时提供了一个静态方法 `generateRandomStudentList`,可以随机生成指定数量的学生数据。该代码还包括了一个打印学生集合的方法 `printStudentList`,可以将学生集合格式化输出。 您可以直接运行 main 方法来测试该代码的效果。当然,您也可以根据需求修改该代码,例如增加注解来实现字段注解的功能。 关于输出格式,您可以根据需要选择相应的输出方式,例如将输出结果写入文件、将结果导出为 Excel 或 HTML 等格式,具体实现方式与输出格式关系密切,需要针对具体需求进行编写,这里不再赘述。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值