Java基础(其他对象System、时间类(Date、Calendar)、Math)


System

一、概述

1System是描述系统一些信息的类,类中的属性和方法都是静态的。不能被实例化,没有提供构造函数。

2、字段摘要

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

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

3、示例:

/*
System:类中的方法和属性都是静态的。
out:标准输出,默认是控制台。
in:标准输入,默认是键盘。


描述系统一些信息。

获取系统属性信息:Properties getProperties();
*/
import java.util.*;
class SystemDemo 
{
	public static void main(String[] args) 
	{

		Properties prop = System.getProperties();
		
		//因为Properties是Hashtable的子类,也就是Map集合的一个子类对象。
		//那么可以通过map的方法取出该集合中的元素。
		//该集合中存储都是字符串。没有泛型定义。
		
		//获取所有属性信息。
		for(Object obj : prop.keySet())
		{
			String value = (String)prop.get(obj);

			System.out.println(obj+"::"+value);
		}
		
		/*
		//如何在系统中自定义一些特有信息呢?
		System.setProperty("mykey","myvalue");


		//获取指定属性信息。
		String value = System.getProperty("os.name");

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

		

		//可不可以在jvm启动时,动态加载一些属性信息呢?
		String v = System.getProperty("haha");

		System.out.println("v="+v);

*/

	}
}

Runtime

一、概述

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

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

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

 

二、方法

1、获取本类对象

        static RuntimegetRuntime();

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

        Processexec(String command);

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

        void destroy();

示例:

    class RuntimeDemo   
    {  
        public static void main(String[] args)throws Exception  
        {  
            Runtime r=Runtime.getRuntime();//获取本类对象  
            //执行指定路径下的可执行程序 
            Process p=r.exec("notepad.exe");//执行记事本程序  
            r.exec("notepad.exe  RuntimeDemo.java");//用记事本打开指定文件  
      
            Thread.sleep(3000);//让线程等待3秒  
            p.destroy();//杀掉指定进程  
        }  
    }  

时间类

一、Date

1、概述

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

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

2、自定义格式

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

具体步骤:

        1)创建Date对象

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

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

代码如下:

import java.util.*;  
import java.text.*;  
class DateDemo   
{  
    public static void main(String[] args)   
    {  
        Date d=new Date();//创建Date对象  
        //sop(d);  
  
        //将模式封装到SimpleDateformat对象中。  
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日E HH:mm:ss");  
        //调用format方法让模式格式化指定Date对象。  
        String time=sdf.format(d);  
        sop(time);  

        //获取当前年份
        getTime(new SimpleDateFormat("yyyy"),d);
        //获取当前月份
        getTime(new SimpleDateFormat("MM"),d);
        //获取当前日期
        getTime(new SimpleDateFormat("dd"),d);
        //获取当前星期
        getTime(new SimpleDateFormat("E"),d);
        //获取当前小时
        getTime(new SimpleDateFormat("HH"),d);

    }  
    public static void getTime(SimpleDateFormat sd,Date d){
        sop(sd.format(d));
    }
    public static void sop(Object ojb)  
    {  
        System.out.println(ojb);  
    }  
} 


二、Carendar

1、概述:

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

        2Calendar可以对年月日等时间进行获取。并提供了相应的子段值。可参阅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);

       设置日历字段 YEARMONTHDAY_OF_MONTH的值:

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

示例:

    import java.util.*;  
    class  CalendarDemo  
    {  
        public static void main(String[] args)   
        {  
			//获取一个日历,里面包含了年月日星期等等信息
            Calendar c=Calendar.getInstance();  

	    System.out.println(c);
             
            sop(pattern(c));//显示今天日期和当前时间  
            //指定年份进行偏移
            c.add(Calendar.YEAR,3);//年份变为3年后  
      
            sop(pattern(c));//显示指定日期和时间  
			
        }  
      
        //获取指定日期和时间  
        public static String pattern(Calendar c)  
        {  
            String s=year(c)+month(c)+day(c)+week(c)+" "+time(c);  
            return s;  
        }  
          
        //获取年份  
        public static int year(Calendar c)  
        {  
            return c.get(Calendar.YEAR);  
        }  
        //获取月份  
        public static String month(Calendar c)  
        {  
            String[] yue={"一月","二月","三月","四月",  
                        "五月","六月","七月","八月",  
                        "九月","十月","十一月","十二月"};  
            return yue[c.get(Calendar.MONTH)];  
        }  
        //获取日期  
        public static int day(Calendar c)  
        {  
            return c.get(Calendar.DAY_OF_MONTH);  
        }  
        //获取星期  
        public static String week(Calendar c)  
        {  
            String[] day={"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};  
            return day[c.get(Calendar.DAY_OF_WEEK)];  
        }  
        //获取时间,格式为时:分:秒  
        public static String time(Calendar c)  
        {  
            String s=c.get(Calendar.HOUR_OF_DAY)+":"+c.get(Calendar.MINUTE)+":"+c.get(Calendar.SECOND);  
            return s;  
        }  
      
        //打印输出  
        public static void sop(Object obj)  
        {  
            System.out.println(obj);  
        }  
    }  
小练习:

    /* 
    练习 
    1、获取任意年的二月有多少天: 
        思路:根据指定年设置一个时间就是  
        c.set(year,2,1)//某一年的3月1日。 
        c.add(Calenar.DAY_OF_MONTH,-1);//3月1日,往前推一天,就是2月最后一天。 
     
    2、获取前一天的现在这个时刻 
        思路:c.add(Calenar.DAY_OF_MONTH,-1); 
     
    3、计算有效上课天数,每周六日不上课,计算任意年从九月到十月的有效上课天数 
        思路; 
        1、根据指定年设定一个时间就是c.set(year,8,1)//某一年的9月1日 
        2、定义一个计数器,判断指定时间是否是星期六或者星期日,不是则计数加1 
        3、日期偏移量1天,直至判断到这个月的最后一天 
    */  
      
    import java.util.*;  
      
    class  CalendarDemoTest 
    {  
        public static void main(String[] args)   
        {  
            //练习1测试  
            sop("2012年二月份有"+whatDay(2012)+"天");  
      
            //练习2测试  
            sop("昨天的现在这个时刻:"+lastNowTime());  
      
            //练习3测试  
            sop("2013年9月到10月上了"+howDay(2013)+"天课");  
        }  
      
        //练习1  
        public static int whatDay(int year)  
        {  
            Calendar c=Calendar.getInstance();  
            c.set(year,2,1);  
            c.add(Calendar.DAY_OF_MONTH,-1);  
            return c.get(Calendar.DAY_OF_MONTH);  
        }  
      
        //练习2  
        public static String lastNowTime()  
        {  
            Calendar c=Calendar.getInstance();  
            c.add(Calendar.DAY_OF_MONTH,-1);  
            return pattern(c);  
        }  
      
        //练习3  
        public static int howDay(int year)  
        {  
            Calendar c=Calendar.getInstance();  
            c.set(year,8,1);  
            int count=0;  
            for (int x=c.get(Calendar.DAY_OF_MONTH); x<=30;x++ )  
            {  
                if(c.get(Calendar.DAY_OF_WEEK)!=1&&c.get(Calendar.DAY_OF_WEEK)!=7)  
                    count++;  
                c.add(Calendar.DAY_OF_MONTH,1);  
            }  
            return count;  
        }  
      
        //获取指定日期和时间  
        public static String pattern(Calendar c)  
        {  
            String s=year(c)+month(c)+day(c)+week(c)+" "+time(c);  
            return s;  
        }  
          
        //获取年份  
        public static int year(Calendar c)  
        {  
            return c.get(Calendar.YEAR);  
        }  
        //获取月份  
        public static String month(Calendar c)  
        {  
            String[] yue={"一月","二月","三月","四月",  
                        "五月","六月","七月","八月",  
                        "九月","十月","十一月","十二月"};  
            return yue[c.get(Calendar.MONTH)];  
        }  
        //获取日期  
        public static int day(Calendar c)  
        {  
            return c.get(Calendar.DAY_OF_MONTH);  
        }  
        //获取星期  
        public static String week(Calendar c)  
        {  
            String[] day={"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};  
            return day[c.get(Calendar.DAY_OF_WEEK)];  
        }  
        //获取时间,格式为时:分:秒  
        public static String time(Calendar c)  
        {  
            String s=c.get(Calendar.HOUR_OF_DAY)+":"+c.get(Calendar.MINUTE)+":"+c.get(Calendar.SECOND);  
            return s;  
        }  
      
        //打印输出  
        public static void sop(Object obj)  
        {  
            System.out.println(obj);  
        }  
    } 

Math类

一、概述

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

 

二、方法

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

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

        3double pow(doublea,double b);//返回ab次方

        4long round(doubleb);//返回b四舍五入的值 

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

 

三、Random

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

注:random()   得到的是0-1之间的数

       random()*10+1  得到的是1-10之间的

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

小练习:

class  MathDemo
{
    public static void main(String[] args) 
    {
        System.out.println(get(12.120,3));
    }
    public static double get(double d,int n){   //定义要保留的小数的double数字和要保留的小数位
        int pow =(int) Math.pow(10,n);    //获取保留小数的数要变成整数所需要乘以的倍数
        int num =(int)Math.round(d*pow);    //将保留小数的数变成整数
        return (double)num/pow;        //返回
    } 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值