java复习:其他常用类

1、System类

  • public final class Systemextends Object
    System 类包含一些有用的类字段和方法。它不能被实例化。
  • public static final java.io.InputStream in
    “标准”输入流。此流已打开并准备提供输入数据。
  • public static final java.io.PrintStream out
    “标准”输出流。此流已打开并准备接受输出数据。
  • public class Properties extends Hashtable
    Properties 类表示了一个持久的属性集。
  • public static Properties getProperties()
    确定当前的系统属性。 将 getProperty(String) 方法使用的当前系统属性集合作为 Properties 对象返回。

举例说明:

import java.util.*;
class SystemDemo1
{
    public static void main(String[] args)
    {
        Properties prop=System.getProperties();
        for (Object obj:prop.keySet())
        {
            String value=(String)prop.get(obj);
            System.out.println(obj+">>"+value);

        }
    }
}
  • public String getProperty(String key)
    用指定的键在此属性列表中搜索属性。
  • public Object setProperty(String key, String value)
    调用 Hashtable 的方法 put。使用 getProperty 方法提供并行性。
import java.util.*;
class SystemDemo2
{
    public static void main(String[] args)
    {
        String value=System.getProperty("os.name");
        System.out.println(value);

        System.setProperty("myKey","myValue");
        String value1=System.getProperty("myKey");
        System.out.println(value1);
    }
}

这里写图片描述

2、Runtime、Process类

  • class Runtime extends Object
    每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接。可以通过 getRuntime 方法获取当前运行时。 应用程序不能创建自己的 Runtime 类实例。
  • public static Runtime getRuntime()
    返回与当前 Java 应用程序相关的运行时对象。Runtime 类的大多数方法是实例方法,并且必须根据当前的运行时对象对其进行调用。
  • public Process exec(String command) throws java.io.IOException
    在单独的进程中执行指定的字符串命令
  • class Process extends Object
    ProcessBuilder.start() 和 Runtime.exec 方法创建一个本机进程,并返回 Process 子类的一个实例,该实例可用来控制进程并获取相关信息。Process 类提供了执行从进程输入、执行输出到进程、等待进程完成、检查进程的退出状态以及销毁(杀掉)进程的方法。
  • public abstract void destroy()
    杀掉子进程。强制终止此 Process 对象表示的子进程

举例说明:打开计算机上的一个小程序

import java.util.*;
class  RuntimeDemo3
{
    public static void main(String[] args) throws Exception
    {
        Runtime r=Runtime.getRuntime();
        r.exec("calc.exe");
        Thread.sleep(400);
        p.destroy();
    }
}

3、Date、SimpleDateFormat类

  • class Dateextends Object
    类 Date 表示特定的瞬间,精确到毫秒。
  • class SimpleDateFormat extends DateFormat
    SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类。
    构造函数有:public SimpleDateFormat(String pattern)
    用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。注:此构造方法可能不支持所有语言环境。要覆盖所有语言环境,请使用 DateFormat 类中的工厂方法。
  • public StringBuffer format(Date date,StringBuffer toAppendTo,FieldPosition pos)
    将给定的 Date 格式化为日期/时间字符串,并将结果添加到给定的 StringBuffer。
    date - 要被格式化为日期-时间字符串的日期-时间值。
    toAppendTo - 新的日期-时间文本被添加的位置。
    pos - 格式化的位置。输入时:如果需要,是一个对齐字段。输出时:为对齐字段的偏移量。
import java.util.*;
import java.text.*;
class DateDemo4
{
    public static void main(String[] args) 
    {
        Date d=new Date();
        System.out.println(d);
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 E hh:mm:ss");
        String time=sdf.format(d);
        System.out.println(time);
    }
}

这里写图片描述

public abstract class DateFormat extends Format
DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。
public static final DateFormat getDateInstance()
获取日期格式器,该格式器具有默认语言环境的默认格式化风格。
public Date parse(String source) throws ParseException
从给定字符串的开始解析文本,以生成一个日期。该方法不使用给定字符串的整个文本。
Date类中方法:
public long getTime()
返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
例子练习:

/************************************************************************
需求:2012-3-17到2012-4-6的天数
思路:两个日期相减就可以了
      必须有两个可以进行减法运算的数
      能减可以是毫秒数,如果获取毫秒数?通过date对象。
      如何获取date对象?可以将字符串转为date对象

      1、将日期格式的字符串转为Date对象
      2、将Date对象转为毫秒数
      3、相减,编程天数
****************************************************************************/
import java.util.*;
import java.text.*;
class DateDemo4
{
    public static void main(String[] args)throws Exception
    {
        String str_date1="2012-3-17";
        String str_date2="2012-4-6";
        test(str_date1,str_date2);
    }
    public static void test(String str_date1,String str_date2)throws Exception
    {
        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(time2-time1);
        System.out.println(time);

        int day=getDay(time);
        System.out.println(day);
    }
    public static int getDay(long time)
    {
        int day=(int)(time/1000/60/60/24);
        return day; 
    }
}

这里写图片描述

4、Calendar类

  • (1)时间显示
  • class Calendar extends Object
    Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。
  • public static final int YEAR
    指示年的 get 和 set 的字段数字。
  • public static final int MONTH
    指示月份的 get 和 set 的字段数字。
  • public static final int WEEK_OF_YEAR
    get 和 set 的字段数字,指示当前年中的星期数。
  • public static final int DAY_OF_MONTH
    get 和 set 的字段数字,指示一个月中的某天。
import java.util.*;
import java.text.*;
class CalendarDemo5  
{
    public static void main(String[] args) 
    {
        Calendar c=Calendar.getInstance();
        Sop(c);
        Sop(c.get(Calendar.YEAR));
        Sop(c.get(Calendar.MONTH)+1+"月");
        Sop(c.get(Calendar.DAY_OF_MONTH)+"日");
    }
    public static void Sop(Object obj)
    {
        System.out.println(obj);
    }
}

这里写图片描述

  • (2)时间设定
  • public final void set(int year, int month,int date)
    设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值。保留其他日历字段以前的值。
  • public abstract void add(int field,int amount)
    根据日历的规则,为给定的日历字段添加或减去指定的时间量。
    field - 日历字段。
    amount - 为字段添加的日期或时间量。
//**举例说明:自定义时间显示格式(查表法)**
import java.util.*;
import java.text.*;
class CalendarDemo6  
{
    public static void main(String[] args) 
    {
        Calendar c1=Calendar.getInstance();
        c1.set(2015,12,7);
        c1.add(Calendar.MONTH,-1);
        printpoll(c1);
    }
    public static void printpoll(Calendar c)
    {
        Sop(c.get(Calendar.YEAR));

        String [] mons={"一月","二月","三月","四月","五月","六月","七月",
                        "八月","九月","十月","十一月","十二月",};
        int index1=c.get(Calendar.MONTH);
        Sop(mons[index1]);

        Sop(c.get(Calendar.DAY_OF_MONTH)+"日");

        String []weeks={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
        int index2=c.get(Calendar.DAY_OF_WEEK)-1;
        Sop(weeks[index2]);
    }
    public static void Sop(Object obj)
    {
        System.out.print(obj+"   ");
    }
}

这里写图片描述

  • (3)练习
    需求:查看2015年2月份中的天数
    public static void main(String[] args)
    {
        Calendar c=Calendar.getInstance();
        c.set(2015,3,1);
        c.add(Calendar.MONTH,-1);
        c.add(Calendar.DAY_OF_MONTH,-1);
        printpoll(c);
    }

这里写图片描述

4、Math、Random类

  • public static final double E
    比任何其他值都更接近 e(即自然对数的底数)的 double 值。
  • public static final double PI
    比任何其他值都更接近 pi(即圆的周长与直径之比)的 double 值。
  • public static int abs(int a)
    返回 int 值的绝对值。如果参数为非负数,则返回该参数。如果参数为负数,则返回该参数的相反数。
  • public static double ceil(double a)
    返回最小的(最接近负无穷大)double 值,该值大于等于参数,并等于某个整数。
  • public static long round(double a)
    返回最接近参数的 long。结果将舍入为整数:加上 1/2,对结果调用 floor 并将所得结果强制转换为 long 类型。
  • public static double random()
    返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。返回值是一个伪随机选择的数,在该范围内(近似)均匀分布。
  • public static long round(double a)
    返回最接近参数的 long。结果将舍入为整数:加上 1/2,对结果调用 floor 并将所得结果强制转换为 long 类型。
  • public static double pow(double a,double b)
    返回第一个参数的第二个参数次幂的值。
import java.util.*;
class  MathDemo8
{
    public static void main(String[] args) 
    {
        double d1=Math.ceil(12.56);
        double d2=Math.floor(12.56);
        double d3=Math.round(12.56);
        double d4=Math.pow(10,2);
        Sop("d1="+d1);
        Sop("d2="+d2);
        Sop("d3="+d3);
        Sop("d4="+d4);

        Random r=new Random();
        for (int i=0;i<5 ;i++ )
        {
            double d5=Math.ceil(Math.random()*10);
            Sop("d5="+d5);
        }
        for (int i=0;i<5 ;i++ )
        {
            double d6=(int)(r.nextDouble()*6+1);
            Sop("d6="+d6);
        }
    }
    public static void Sop(Object obj)
    {
        System.out.println(obj);
    }
}

这里写图片描述

5、Arrays类

(1)
public class Arrays extends Object
此类包含用来操作数组(比如排序和搜索)的各种方法。

  • public static List asList(T… a)
    返回一个受指定数组支持的固定大小的列表。
    List stooges = Arrays.asList(“Larry”, “Moe”, “Curly”);
  • public static int hashCode(long[] a)
    基于指定数组的内容返回哈希码。

  • public static void sort(long[] a)
    对指定的 long 型数组按数字升序进行排序。

  • public static boolean equals(boolean[] a, boolean[] a2)
    如果两个指定的 boolean 型数组彼此相等,则返回 true。

  • public static void fill(long[] a, long val)
    将指定的 long 值分配给指定 long 型数组的每个元素。

  • public static T[] copyOf(T[] original, int newLength)
    复制指定的数组,截取或用 null 填充(如有必要),以使副本具有指定的长度。

  • public static T[] copyOfRange(T[] original,int from, int to)
    将指定数组的指定范围复制到一个新数组。
    original - 将要从其复制一个范围的数组
    from - 要复制的范围的初始索引(包括)
    to - 要复制的范围的最后索引(不包括)。

  • public static String toString(long[] a)
    返回指定数组内容的字符串表示形式。

(2)数组到集合的转换

  • 判断方法

数组的判断方法:

void main()
{
    String[] arr={"张","王","李","赵"};
    List<String>list=Arrays.asList(arr);
    System.out.println(list.contains("张"));
}

集合的判断方法:

public static boolean myContains(String[] arr,String key)
{
    for(int x=0;x<arr.length;x++)
    {
        if(arr[x].equals(key))
        return true;
    }
    return false;
}

注意:将数组变成集合,不可以使用集合的增删办法,因为数组的长度是固定的。

(3)集合到数组的转换
集合到数组的转换使用Collection 接口中的toArray()方法,
集合变成数组,可以对集合中的元素操作进行限定,不允许对其进行增删。

toArray()方法需要 传入一个指定类型的数组。如果长度小于集合的size,那么该方法创建一个同类型和集合相同的size的数组。如果长度大于集合的size,那么该方法就会使用指定的数组,存储集合中的元素,其他位置默认为null。所以一般最后的长度最好指定为集合的size。

//集合变数组
import java.util.*;
class ArraysDemo11
{
    public static void main(String[] args)
    {
        List<String>list=new ArrayList<String>();
        list.add("abc1");
        list.add("abc2");
        list.add("abc3");
        String [] arr=list.toArray(new String[list.size()]);
        System.out.println(Arrays.toString(arr));
    }
}

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值