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));
}
}