黑马程序员—【Java基础篇】之其它对象

------- android培训java培训、期待与您交流! ---------

    伙伴们好,让我们继续沿着毕老师的步伐,这篇我们介绍和分享Java的其它对象,那么就开始了。

一、system类

1、概述

(1)介绍

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

(2)字段摘要

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

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

2、方法

/**
(1)获取系统的属性信息
    Properties getProperties();
说明:
a、此方法返回的双列集合,即键值对;因为Properties是Hahstable的子类,也就是Map集合的一个子类对象,那么通过Map方法取出该集合中的元素。
b、该集合存储的都是字符串,没有泛型定义
(2)获取指定属性信息
String System.getProperty(String key);
(3)在系统内定义特有信息
void System.setProperty(String key,String value);
(4)如何在jvm启动时,加载一些属性信息
通过命令:java -D<name>=<value> 可以设置特有的系统属性信息。
*/
    示例:
import java.util.*;  
class SystemDemo   
{  
    public static void main(String[] args)   
    {  
        Properties p=System.getProperties();//获取当前的系统属性  
        sop(p);  
  
        String value=System.getProperty("os.name");//获取指定键指示的系统属性  
        sop("os.name="+value);  
  
        System.setProperty("wode","My_PC");//设置指定键指示的系统属性信息  
        sop(p);  
          
        String s= System.getProperty("woshi");//当系统中没有该键值,返回null  
        sop(s);  
  
    }  
    public static void sop(Object obj)  
    {  
        System.out.println(obj);  
    }  
}  

二、Runtime类

1、概述

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

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

    (3)、使用了单例设计模式完成。

2、方法

(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();//杀掉指定进程  
    }  
}  

三、时间类

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.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);  
    }  
    public static void sop(Object ojb)  
    {  
        System.out.println(ojb);  
    }  
} 

3、Carendar

(1)概述
       a、Calendar是一个抽象类,它为特定瞬间与一组诸如YEAR、MONTH、DAY_OF_MONTH等日历字段之间的转换提供了一些方法。
       b、Calendar可以对年月日等时间进行获取。并提供了相应的子段值。可参阅API文档。
(2)方法
        a、基本获取时间
        b、获取年份:Calendar.YEAR
        c、获取月份:Calendar.MONTH
        d、获取日期:Calendar.DAY_OF_MONTH
        e、获取星期:Calendar.DAY_OF_WEEK
        f、获取小时:Calendar.HOUR_OF_DAY
        g、获取分钟:Calendar.MINUTE
        h、获取秒数:Calendar.SECOND
(3)设置时间
        a、根据日历的规则,为给定的日历字段添加或减去指定的时间量
                void add(int field,int amount);
        b、获取指定的日历字段对应的时间值
                int get(int field);
        c、将给定日历字段对应的时间值设置为给定值
                void set(int field,int value);
        d、设置日历字段 YEAR、MONTH和DAY_OF_MONTH的值
                void set(int year,int month,int date);

    方法示例:

<span style="font-size:14px;">import java.util.*;  
class  CalendarDemo  
{  
    public static void main(String[] args)   
    {  
        Calendar c=Calendar.getInstance();  
          
        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);  
    }  
}  </span>
    练习:
<span style="font-size:14px;">/** 
练习 
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  OtherClassTest  
{  
    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);  
    }  
}  </span>

四、Math类

1、概述

    Math类中全为静态方法,都是数学中的一些计算方法。

2、方法

/**
(1)doubleceil(double d);//返回大于指定数据的最小整数。
(2)doublefloor(double d);//返回小于指定数据的最大整数。
(3)double pow(doublea,double b);//返回a的b次方。
(4)long round(doubleb);//返回b四舍五入的值 。
(5)doublerandom();//返回正号的double值,是一个大于等于0.0且小于1.0的随机数。

3、Random类

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

/**
intnextInt(int n);//返回一个伪随机数,它是取自此随机数生成器序列的、在 0(包括)和指定值(不包括)之间均匀分布的 int值。
*/
    练习1:
/**
练习:给定一个小数,保留该小数的后n位。 
    1、先把给定小数乘以10的n次方,四舍五入保留整数部分 
    2、再把该整数除以10的n次方 
*/  
class MathTest   
{  
    public static void main(String[] args)   
    {  
          
        double d=retention(13.6572,2);  
  
        System.out.println("d="+d);  
    }  
      
    //保留小数位方法  
    public static double retention(double d,int n)  
    {  
        double d1=d*Math.pow(10,n);//先将要保留的小数位变为整数  
        long l=Math.round(d1);//将小数四舍五入  
        return l/Math.pow(10,n);//返回保留了指定小数位的小数  
    }  
}  
    练习2:
class MathDemo  
{  
    public static void main(String[] args)   
    {  
        double d = round(15.6745,1);  
        System.out.println("d = " + d);  
    }  
    //保留指定位数为n的小数  
    public static double round(double d,int n)  
    {  
        //将给定数扩大n倍后四舍五入,再缩小相应的倍数  
        return Math.round(d*(Math.pow(10,n)))/(Math.pow(10,n));   
    }  
}  
    伙伴们,哈哈,还好吗?脑袋撑得住吗,加油!下篇IO流见。



------- android培训java培训、期待与您交流! ---------


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值