理解API的概念
(Application Programming Interface)
JDK文档:http://download.oracle.com/javase/6/docs/
**********************************************************************************************
String类和StringBuffer类
位于java.lang包中
String类对象中的内容一旦被初始化就不能再改变。
StringBuffer类用于封装内容可以改变的字符串。
String x="a"+4+"c"编译时等效于:String x=new StringBuffer().append("a").append(4).append("c").toString();
StringBuffer做+运行效率高
String s1="hello";String s2="hello"; s1与s2指向同一个地址 ==true .equals()true
String s1=new String("hello");String s2=new String("hello"); s1与s2指向不同的地址 ==false .equals()true
.equalsIgnoreCase()判断相等时忽略大小写
构造方法:String(byte[] byte,int offset开始,int length长度)
.toString方法转换成String类型
.indexOf(int ch,int offset开始)用于返回字符位置
.substring(int beginIndex)
.substring(int beginIndex开始,int endIndex结束<不含>)用于返回子字符串
**********************************************************************************************
基本数据类型和对象包装类
基本数据类型boolean/byte/char/short/int/long/float/double
对象包装类Boolean/Byte/Character/Short/Integer/Long/Float/Double
.toString方法转换成String类型
.intValue() 返回this Integer as a int
Integer.parseInt(String s,int radix) 返回s的int
Integer.valueOf(String s,int radix) 返回s的Integer
**********************************************************************************************
集合类
Vector类 (动态数组)(线程同步)v.addElement(); Enumeration e=v.elements();
Enumeration接口 e.hasMoreElement()判断该地址是否有值 e.nextElement()返回值并指向下一个地址
Collection接口 (各元素对象之间没有指定顺序,允许有重复元素和多个null元素对象)
Set接口 (Collection接口子类)(各元素对象之间没有指定顺序,不允许有重复元素,最多允许有一个null元素对象)
List接口 (Collection接口子类)(各元素对象之间有指定顺序,允许有重复元素和多个null元素对象)
ArrayList类 (List接口实现)a.add();
Iterator接口 Iterator i=a.iterator(); i.hasNext()判断该地址是否有值 i.next()返回值并指向下一个地址
Collections静态类 (操作集合对象) Collections.sort(a);
**********************************************************************************************
Hashtable与Properties类 (import java.util.*;)
Hashtable类 (动态存储"关键字与值"相关联对象)
.put(Object gjz,Object zh)
.get(Object gjz)返回zh (用作关键字的类必须覆盖Object.hashCode方法和Object.equals方法)
/**
* 关键字的类
*/
public class MyKey{
private String name = null;
private int age = 0;
public boolean equals(Object obj){
if(obj instanceof MyKey)
{
MyKey objTemp = (MyKey)obj;
if(name.equals(objTemp.name) && age==objTemp.age)
{
return true;
}
else
{
return false;
}
}
else
{
return false;
}
public int hashCode(){
return name.hashCode() + age;
}
.keys()返回Enumeration对象,通过Enumeration对象获得所有的"关键字与值"。
Properties类 (Hashtable类子类,增加了保取到文件的方法)
.setProperty(String gjz,String zh)
.getProperty(String gjz)
.load(InputStream in)
.store(OutputStream out,String comments)
/**
* 用文件记录程序运行次数
*/
import java.util.Properties;
import java.io.*;
public class PropertiesFile {
public static void main(String[] args) {
Properties setting = new Properties();
try {
setting.load(new FileInputStream("count.txt"));
} catch (Exception e) {
// TODO: handle exception
setting.setProperty("count", String.valueOf(0));
}
int c = Integer.parseInt(setting.getProperty("count"))+1;
System.out.println("这是第"+c+"次运行。");
setting.setProperty("count", new Integer(c).toString());
try {
setting.store(new FileOutputStream("count.txt"), "Program is used:");
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
**********************************************************************************************
System类与Runtime类
System类 (静态类 类似全局变量和函数)
.exit()终止虚拟机运行,如异常(非零)、操作正常(0)
.currentTimeMillis()返回自1970年1月1日00:00:00起之当前的毫秒,long型
/**
* 计算程序运行时间
*/
long startTime = System.currentTimeMillis();
//程序内容
long endTime = System.currentTimeMillis();
System.out.println("total running time:"+(endTime-startTime));
Java虚拟机的系统属性(set a system property)(cmd中 java -DAAA=b -DBB=a MyClass)
.getProperties()
.setProperties()
/**
* 获取和设置Java虚拟机的系统属性
*/
import java.util.Enumeration;
import java.util.Properties;
public class TestProperties {
public static void main(String[] args) {
// TODO Auto-generated method stub
Properties sp =System.getProperties();
//System.setProperties(sp);
Enumeration e = sp.propertyNames();
while(e.hasMoreElements())
{
String key = (String)e.nextElement();
System.out.println(key+"="+sp.getProperty(key));
}
}
}
Runtime类 (Java命令本身所启动的实例进程,也就是封装了Java虚拟机进程,一个Java虚拟机对应一个Runtime实例对象)
Runtime.getRuntime静态方法得到Runtime实例对象
/**
* 在Java程序中启动一个Windows记事本,并打开本程序源文件,启动5秒后关闭
*/
Process p = null;
try {
p = Runtime.getRuntime().exec("notepad.exe ./src/com/lyonte/java/TestProperties.java");
Thread.sleep(5000);
p.destroy();
} catch (Exception ex) {
// TODO: handle exception
}
**********************************************************************************************
Date、Calendar与DateFormat类
Calendar类
.add(c.XXX,int)
.get(Calendar.XXX)
.set()
Calendar.getInstance()返回GregorianCalendar类(Calendar子类)对象
/**
* 计算距当前日期时间315天后的日期时间,Calendar.MONTH加1,WEEK减1,DAY不用
*/
import java.util.Calendar;
public class TestCalendar {
public static void main(String[] args) {
// TODO Auto-generated method stub
Calendar c1 = Calendar.getInstance();
System.out.println(c1.get(Calendar.YEAR)+"年"+(c1.get(Calendar.MONTH)+1)+"月"+c1.get
(Calendar.DAY_OF_MONTH)+"日"+c1.get(Calendar.HOUR)+":"+c1.get(Calendar.MINUTE)+":"+c1.get(Calendar.SECOND));
c1.add(c1.DAY_OF_YEAR, 315);
System.out.println(c1.get(c1.YEAR)+"年"+(c1.get(c1.MONTH)+1)+"月"+c1.get(c1.DAY_OF_MONTH)+"日"+c1.get
(c1.HOUR)+":"+c1.get(c1.MINUTE)+":"+c1.get(c1.SECOND));
}
}
Date类
java.text.DateFormat类(抽象类)
java.text.SimpleDateFormat类(DateFormat子类)
/**
* 将“2002-03-15”格式的日期字符串转换成“2002年03月15日”的格式
*/
import java.util.*;
import java.text.SimpleDateFormat;
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日");//模式字符
try {
Date d =sdf1.parse("2003-03-15");
System.out.println(sdf2.format(d));
} catch (Exception e) {
// TODO: handle exception
}
**********************************************************************************************
Timer与TimerTask类
schedule方法指定过多长时间后启动一个任务线程来执行一段代码,或者定期的执行一段代码
-schedule(TimerTask task,long delay) 过delay时间后,开始执行task
-schedule(TimerTask task,Date time) 在time时间,开始执行task
-schedule(TimerTask task,long delay,long period) 过delay时间后,开始period定期执行task
-schedule(TimerTask task,Date firstTime,long period) 在firstTime时间,开始period定期执行task
TimerTask类实现了Runnable接口,要执行的任务由它里面实现的run方法来完成。
/**
* 程序启动运行后10秒启动Windows自带的计算器程序
*/
new Timer().schedule(new TimerTask()
{
public void run()
{
try {
Runtime.getRuntime().exec("calc.exe");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}, 10000);
/**
* 程序启动运行后10秒启动Windows自带的计算器程序,加入结束任务线程的代码
*/
Timer tm = new Timer();
tm.schedule(new MyTimerTask(tm), 10000);
/相当于指定时间调用new Tread(new MyTimerTask(tm)).start();
class MyTimerTask extends TimerTask
{
private Timer tm = null;
public MyTimerTask(Timer tm)
{
this.tm=tm;
}
public void run()
{
try {
Runtime.getRuntime().exec("calc.exe");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//结束任务线程的代码
tm.cancel();
}
}
**********************************************************************************************
Math与Random类
Math类 包含了所有用于几何和三角运算的方法
Random类 是一个伪随机数产生器
-Random()用当前时间做seed
-Random(long seed)根据seed种子生成随机数对象,seed相同生成对象产生的随机就相同