其他对象API

System类

包含一些有用的类字段和方法。它不能被实例化。

System类提供的System包括标准输入,标准输出和错误输出流; 访问外部定义的属性和环境变量; 一种加载文件和库的方法; 以及用于快速复制阵列的一部分的实用方法。

static PrintStream err    //“标准”错误输出流。  
static InputStream in    //“标准”输入流。  
static PrintStream out    //“标准”输出流。  
static long currentTimeMillis()    //返回当前时间(以毫秒为单位)。 
static void exit(int status)    //终止当前运行的Java虚拟机。  
static void gc()    //运行垃圾回收器。  
static Properties getProperties()    //确定当前的系统属性。  
static String getProperty(String key)    //获取指定键指示的系统属性。  
static String getProperty(String key, String def)    //获取指定键指示的系统属性。  
static void setProperties(Properties props)    //将系统属性设置为 Properties参数。  
static String setProperty(String key, String value)    //设置由指定键指示的系统属性。  
import java.util.Properties;
import java.util.Set;

public class SystemDemo {
    private static final String LINE_SEPARATOR=System.getProperty("line.separator");
    public static void main(String[] args){
        /*
        * System类中的方法和属性都是静态的
        * 常见方法:
        * long currentTimeMillis();
        * */
        long l1=System.currentTimeMillis();
        System.out.println(l1);//1580449367055
        DemoS();
        System.out.println("Hello"+LINE_SEPARATOR+"World");/*Hellow  换行,所有操作系统通用
                                                                                   World*/
        //给系统设置一些属性信息,这些信息是全局,其他程序都可以使用
        System.setProperty("name","value");
    }
    public static void DemoS(){
        //获取系统的属性信息,并存储到了Properties集合中。
        /*properties集合中存储都是String类型的键和值
        最好使用它自己的存储和取出方法来完成元素的操作。
        * */
        Properties prop=System.getProperties();
        Set<String> nameSet=prop.stringPropertyNames();
        for (String name : nameSet){
            String value=prop.getProperty(name);
            System.out.println(name+"::"+value);//系统信息
        }
    }
}

Runtime类

每个Java应用程序都有一个Runtime类的Runtime ,允许应用程序与运行应用程序的环境进行接口。 当前运行时可以从getRuntime方法获得。

应用程序无法创建自己的此类的实例。

Process exec(String command)    //在单独的进程中执行指定的字符串命令。  
Process exec(String[] cmdarray)    //在单独的进程中执行指定的命令和参数。  
abstract void destroy()    //杀死子进程。  
import java.io.IOException;

public class RuntimeDemo {

    public static void main(String[] args)throws IOException,InterruptedException {
        /*
         * Runtime:没有构造方法摘要,说明该类不可以创建对象
         * 又发现还有非静态的方法,说明该类应该提供静态的返回该类型对象的方法
         * 而且只有一个,说明Ruantime类使用了单例设计模式*/
        Runtime r=Runtime.getRuntime();
        //execute:执行  xxx.exe
        Process p=r.exec("notepad.exe D:\\RuntimeDemo.java");//开启可执行程序,解析可执行文件
        Thread.sleep(5000);//停留5秒
        p.destroy();//销毁进程
        r.exec("D:\\游戏\\PlagueInc\\PlagueIncEvolved.exe");//此处纪念武汉病毒传播时玩瘟疫公司的游戏
    }
}

Math类

Math类包含执行基本数字运算的方法,如基本指数,对数,平方根和三角函数。

static int abs(int a)    //返回值为 int绝对值。  
static int addExact(int x, int y)     //返回其参数的总和,如果结果溢出int,则抛出 int 。
static int max(int a, int b)    //返回两个 int值中的较大值。  
static double random()    //返回值为 double值为正号,大于等于 0.0 ,小于 1.0 。  
import java.util.Random;

public class MathDemo {
    public static void main(String[] args){
        double d1=Math.ceil(12.56);
        double d2=Math.floor(12.56);
        double d3=Math.round(12.56);
        sop("d1="+d1);//d1=13.0
        sop("d2="+d2);//d2=12.0
        sop("d3="+d3);//d3=13.0

        double dp=Math.pow(10,2);
        sop("dp="+dp);
        Random r=new Random();
        for (int i=0;i<10;i++){
            double d=Math.ceil(r.nextDouble()*10);
            System.out.println(d);
        }
    }
    public static void sop(String string){
        System.out.println(string);
    }
}

Date类

在类的所有方法Date接受或返回年,月,日,小时,分钟和秒值,以下表述中使用:

  • y年代表整数y - 1900
  • 一个月由0到11的整数表示; 0是1月,1是2月,等等; 11月12日。
  • 日期(月的一天)以通常的方式从1到31的整数表示。
  • 一小时由0到23之间的整数表示。因此,从午夜到凌晨1点的时间是小时0,从中午到下午1点的小时是12小时。
  • 一般以0〜59的整数表示。
  • 第二个由0到61的整数表示; 值60和61仅发生在闰秒上,甚至仅在实际上正确跟踪闰秒的Java实现中发生。 由于目前引入闰秒的方式,在同一分钟内不会在所有情况下,为这些目的而提供的方法的论证不必在指定范围内; 例如,可以将日期指定为1月32日发生两个闰秒,但是本规范遵循ISO C的日期和时间约定。

在所有情况下,为这些目的而提供的方法的论证不必在指定范围内; 例如,可以将日期指定为1月32日,并将其解释为2月1日。

Date()    //分配一个 Date对象,并初始化它,以便它代表它被分配的时间,测量到最近的毫秒。 
Date(long date)    //分配一个 Date对象,并将其初始化为表示自称为“时代”的标准基准时间以后的指定毫秒数,即1970年1月1日00:00:00 GMT。 
import java.util.Date;

public class DateDemo {
    public static void main(String[] args){
        long time=System.currentTimeMillis();
        System.out.println(time);
        Date date=new Date();
        System.out.println(date);//当前时间
        Date date1=new Date(1580529898142l);
        System.out.println(date1);//Sat Feb 01 12:04:58 GMT+08:00 2020
    }
}

子类

DateFormat类

DateFormat是日期/时间格式化子类的抽象类,它以语言无关的方式格式化和分析日期或时间。 日期/时间格式化子类(如SimpleDateFormat )允许格式化(即日期文本),解析(文本日期)和归一化。 该日期表示为一个Date对象,或自1970年1月1日00:00:00 GMT以来的毫秒。

DateFormat提供了许多类方法,用于根据默认或给定的区域设置和多个格式化样式获取默认的日期/时间格式化程序。 格式化风格包括FULLLONGMEDIUMSHORT 。 方法说明中提供了更多细节和使用这些样式的示例。

DateFormat可帮助您格式化和解析任何区域设置的日期。 您的代码可以完全独立于几个月,几个星期甚至日历格式的区域设置约定:月球与太阳能。

要格式化当前区域设置的日期,请使用静态工厂方法之一:

myString = DateFormat.getDateInstance().format(myDate);
String format(Date date)    //将日期格式化成日期/时间字符串。  
static DateFormat getDateInstance()    //获取默认格式化样式为默认的 FORMAT语言环境的日期格式化 程序 。  
static DateFormat getDateInstance(int style)    //获取默认的 FORMAT区域设置的给定格式化样式的日期格式化 程序 。
static DateFormat getDateInstance(int style, Locale aLocale)    //获取给定区域设置的给定格式化样式的日期格式化程序。  
static DateFormat getDateTimeInstance()    //获取默认格式化样式的日期/时间格式化程序默认的 FORMAT区域设置。  
static DateFormat getDateTimeInstance(int dateStyle, int timeStyle)    //获取默认的 FORMAT区域设置的给定日期和时间格式化样式的日期/时间格式化 程序 。  
static DateFormat getDateTimeInstance(int dateStyle, int timeStyle, Locale aLocale)     //获取给定区域设置的给定格式样式的日期/时间格式化程序。 
  

获取日期格式对象,具备着默认的风格。

  Date date=new Date();
        //获取日期格式对象,具备着默认的风格。
        //DateFormat dateFormat=DateFormat.getDateInstance(DateFormat.FULL);//2020年2月1日 星期六
        DateFormat dateFormat=DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG);//2020年2月1日 下午12时53分18秒
        //DateFormat dateFormat=DateFormat.getDateInstance(DateFormat.SHORT);//20-2-1
        //DateFormat dateFormat=DateFormat.getDateInstance(DateFormat.MEDIUM);//2020-2-1
        //dateFormat=DateFormat.getDateTimeInstance();//2020-2-1 12:43:27
        String str_date=dateFormat.format(date);
        System.out.println(str_date);

获取自定义风格:子类

SimpleDateFormat类

  • 日期和时间格式由日期和时间模式字符串指定。 在日期和时间模式字符串中,从'A''Z'和从'a''z'的非引号的字母被解释为表示日期或时间字符串的组件的模式字母。 可以使用单引号( ' )引用文本,以避免解释。 "''"代表单引号。 所有其他字符不被解释; 在格式化过程中,它们只是复制到输出字符串中,或者在解析过程中与输入字符串匹配。

    定义了以下图案字母(所有其他字符从'A''Z'和从'a''z'被保留):

    LetterDate or Time ComponentPresentationExamples
    GEra designatorTextAD
    yYearYear1996; 96
    YWeek yearYear2009; 09
    MMonth in year (context sensitive)MonthJuly; Jul; 07
    LMonth in year (standalone form)MonthJuly; Jul; 07
    wWeek in yearNumber27
    WWeek in monthNumber2
    DDay in yearNumber189
    dDay in monthNumber10
    FDay of week in monthNumber2
    EDay name in weekTextTuesday; Tue
    uDay number of week (1 = Monday, ..., 7 = Sunday)Number1
    aAm/pm markerTextPM
    HHour in day (0-23)Number0
    kHour in day (1-24)Number24
    KHour in am/pm (0-11)Number0
    hHour in am/pm (1-12)Number12
    mMinute in hourNumber30
    sSecond in minuteNumber55
    SMillisecondNumber978
    zTime zoneGeneral time zonePacific Standard Time; PST; GMT-08:00
    ZTime zoneRFC 822 time zone-0800
    XTime zoneISO 8601 time zone-08; -0800; -08:00
Date date=new Date();
DateFormat dateFormat=new SimpleDateFormat("yyyy--MM--dd");//2020--02--01
        String str_date=dateFormat.format(date);
        System.out.println(str_date);
  • 以下示例显示如何在美国地区中解释日期和时间模式。 给定的日期和时间是2001-07-04 12:08:56当地时间在美国太平洋时间时区。
    Date and Time PatternResult
    "yyyy.MM.dd G 'at' HH:mm:ss z"2001.07.04 AD at 12:08:56 PDT
    "EEE, MMM d, ''yy"Wed, Jul 4, '01
    "h:mm a"12:08 PM
    "hh 'o''clock' a, zzzz"12 o'clock PM, Pacific Daylight Time
    "K:mm a, z"0:08 PM, PDT
    "yyyyy.MMMMM.dd GGG hh:mm aaa"02001.July.04 AD 12:08 PM
    "EEE, d MMM yyyy HH:mm:ss Z"Wed, 4 Jul 2001 12:08:56 -0700
    "yyMMddHHmmssZ"010704120856-0700
    "yyyy-MM-dd'T'HH:mm:ss.SSSZ"2001-07-04T12:08:56.235-0700
    "yyyy-MM-dd'T'HH:mm:ss.SSSXXX"2001-07-04T12:08:56.235-07:00
    "YYYY-'W'ww-u"2001-W27-3

 

    • Dateparse(String source)

      从给定字符串的开始解析文本以生成日期。

 

 public static void methodDemo_2()throws ParseException {
        String str_date="2020年2月1日";
        DateFormat dateFormat=DateFormat.getDateInstance(DateFormat.LONG);
        Date date=dateFormat.parse(str_date);//Sat Feb 01 00:00:00 GMT+08:00 2020
        System.out.println(date);
    }

练习:

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/*
 * "2012-3-17"到"2020-2-1"
 * 中间有多少天*/
/*思路:
* 两个日期相减,必须要有两个可以进行减法运算的数
* 如何获取毫秒值?通过date对象,可以将字符串转成date对象
* 1.将日期格式的字符串转成Date对象
* 2.将Date对象转成毫秒值
* 3.相减,变成天数*/
public class DateTest {
    public static void main(String[] args)throws ParseException{
        String str_date1="2012-3-17";
        String str_date2="2020-2-1";
        test(str_date1,str_date2);
    }
    public static void test(String str_date1,String str_date2 )throws ParseException {
        //1.将日期字符串转成日期对象
        //定义日期格式对象
        DateFormat dateFormat=DateFormat.getDateInstance();
        //dateFormat=new SimpleDateFormat("yyyy-MM-dd");
        Date date1=dateFormat.parse(str_date1);
        Date date2=dateFormat.parse(str_date2);
        long time1=date1.getTime();
        long time2=date2.getTime();
        long time=Math.abs(time1-time2);

        int day=getDay(time);
        System.out.println(day);

    }
    private static int getDay(long time){
        int day=(int)(time/1000/60/60/24);
        return day;
    }
}

Calendar类

所述Calendar类是一个抽象类,可以为在某一特定时刻和一组之间的转换的方法calendar fieldsYEARMONTHDAY_OF_MONTHHOUR ,等等,以及用于操纵该日历字段,如获取的日期下个星期。 时间上的瞬间可以用毫秒值表示,该值是从1970年1月1日00:00 00:00.000 GMT(Gregorian)的Epoch的偏移量。

该类还提供了用于在包外部实现具体日历系统的其他字段和方法。 这些字段和方法定义为protected

与其他区域设置敏感的类一样, Calendar提供了一种类方法getInstance ,用于获取此类型的一般有用的对象。 CalendargetInstance方法返回一个Calendar对象,其日历字段已使用当前日期和时间进行初始化:

Calendar rightNow = Calendar.getInstance();
import java.util.Calendar;

public class CalendarDemo {
    public static void main(String[] args){
        Calendar c=Calendar.getInstance();
        showDate(c);
    }
    public static void showDate(Calendar c){
        int year=c.get(Calendar.YEAR);
        int month=c.get(Calendar.MONTH)+1;
        int day=c.get(Calendar.DAY_OF_MONTH);
        int week=c.get(Calendar.DAY_OF_WEEK);
        System.out.println(year+"年"+month+"月"+day+"日"+getWeek(week));
    }
    private static String getWeek(int i){
        String[] weeks={"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
        return  weeks[i];
    }
}

判断某一年是否是闰年

package com.monfolld;

import java.util.Calendar;
/*判断某一年是否是闰年*/
public class CalendarDemo {
    public static void main(String[] args){
        Calendar c=Calendar.getInstance();//获取当前日期
        int year=2014;       
        showDays(year);
    }
    public static void showDays(int year){
        Calendar c=Calendar.getInstance();//获取当前日期
        c.set(year,2,1);//指定一个日期  2011年4月20日星期三
        c.add(Calendar.DAY_OF_MONTH,-1);//偏移两年   2013年4月20日星期六
        showDate(c);
    }
    public static void showDate(Calendar c){
        int year=c.get(Calendar.YEAR);
        int month=c.get(Calendar.MONTH)+1;
        int day=c.get(Calendar.DAY_OF_MONTH);
        int week=c.get(Calendar.DAY_OF_WEEK);
        System.out.println(year+"年"+month+"月"+day+"日"+getWeek(week));
    }
    private static String getWeek(int i){
        String[] weeks={"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
        return  weeks[i];
    }
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值