java 常用类

java 常用类库
Object 类:clone(), equals(), toString()
Runtime 类:代表 java 程序的运行环境
定时器: Timer 和 TimerTask 类
System 类:
日期操作类:
Math 类:可以进行一些常用的数学运算
正则式:
Random 类:随机数的获取
常用方法:

//创建并返回与该对象相同的新对象,即克隆该对象
protected native Object clone() throws CloneNotSupportedException

//比较两个对象是否相等
public boolean equals(Object obj)

//当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法
protected void finalize() throws Throwable

//返回一个对象的运行时类
public final Class<? extends Object> getClass()

//返回该对象的哈希码值
public int hashCode()

//唤醒等待池中的线程
public final void notify()

//唤醒等待池中的所有线程
public final void notifyAll()

//返回该对象的字符串表示
public String toString()

//使当前的线程等待
public final void wait(long timeout) throws InterruptedException

// 重写 toString() 方法
class Person
{
	private String name;
	private int age;
	public Person(){}
	public Person(String name, int age)
	{
		this.name = name;
		this.age = age;
	}
	public String toString()
	{
		return ("姓名:"+this.name+",年龄:"+this.age);
	}
}
public class Hi
{
	public static void main(String[] args)
	{
		Person p = new Person("小二", 27);
		System.out.println(p.toString());
		System.out.println(p);
	}
}
/**
姓名:小二,年龄:27
姓名:小二,年龄:27
*/
看到结果一样,所以都是调用 重写的 toString() 的方法
// ============
//重写 equals() 方法
class Person
{
	private String name;
	private int age;
	public Person(){}
	public Person(String name, int age)
	{
		this.name = name;
		this.age = age;
	}
	// 重写equals() 方法
	public boolean equals(Object o)
	{
		// 判断当前对象与指定对象是否相等
		if(o == this)
		{
			return true;
		}
		// 判断指定的对象是否为空
		if(o == null)
		{
			return false;
		}
		// 判断指定对象是否为 Person 的实例
		if(!(o instanceof Person))
		{
			return false;
		}
		// 将指定对象转为 Person 实例
		Person per = (Person)o;
		// 比较对象的属性是否相等
		if(this.name.equals(per.name) && this.age == per.age)
		{
			return true;
		}else
		{
			return false;
		}
	}
}
public class Hi
{
	public static void main(String[] args)
	{
		//创建对象实例
		Person p1 = new Person("小二", 27);
		Person p2 = new Person("小二", 27);
		Person p3 = new Person("小小", 30);
		if(p1.equals(p2))
		{
			System.out.println("p1与p2相等");
		}else
		{
			System.out.println("p1与p2不相等");
		}
		if(p1.equals(p3))
		{
			System.out.println("p1与p3相等");
		}else
		{
			System.out.println("p1与p3不相等");
		}
	}
}
/**
p1与p2相等
p1与p3不相等
*/
// ------------
class Person
{
	private String name;
	private int age;
	public Person(){}
	public Person(String name, int age)
	{
		this.name = name;
		this.age = age;
	}
	public boolean equals(Object o)
	{
		if(this == o)
		{
			return true;
		}
		if(o == null)
		{
			return false;
		}
		if(!(o instanceof Person))
		{
			return false;
		}
		Person per = (Person)o;
		if(this.name.equals(per.name) && this.age == per.age)
		{
			return true;
		}else
		{
			return false;
		}
	}
	public int hashCode()
	{
		final int prime = 13;
		int result = 13;
		result = prime * result + ((name == null) ? 0 : name.hashCode());
		result = prime * result + age;
		return result;
	}
}
public class Hi
{
	public static void main(String[] args)
	{
		Person p1 = new Person("小二", 27);
		Person p2 = new Person("小二", 27);
		Person p3 = new Person("小小", 30);
		System.out.println("p1的哈希值:"+p1.hashCode());
		System.out.println("p2的哈希值:"+p2.hashCode());
		System.out.println("p3的哈希值:"+p3.hashCode());
		if(p1.equals(p2))
		{
			System.out.println("p1,p2相等");
		}else
		{
			System.out.println("p1,p2不相等");
		}
		if(p1.equals(p3))
		{
			System.out.println("p1,p3相等");
		}else
		{
			System.out.println("p1,p3不相等");
		}
		
	}
}
/*
p1的哈希值:97
p2的哈希值:97
p3的哈希值:980
p1,p2相等
p1,p3不相等
*/
 // =============
// 克隆对象
class Person implements Cloneable
{
	private String name;
	private int age;
	public Person(){}
	public Person(String name, int age)
	{
		this.name = name;
		this.age = age;
	}
	public boolean equals(Object o)
	{
		if(this == o)
		{
			return true;
		}
		if(o == null)
		{
			return false;
		}
		if(!(o instanceof Person))
		{
			return false;
		}
		Person per = (Person)o;
		if(this.name.equals(per.name) && this.age == per.age)
		{
			return true;
		}else
		{
			return false;
		}
	}
	public int hashCode()
	{
		final int prime = 13;
		int result = 13;
		result = prime * result+((name == null) ? 0 : name.hashCode());
		result = prime *result + age;
		return result;
	}
	// 重写 clone() 方法
	public Object clone() throws CloneNotSupportedException
	{
		return super.clone();
	}
	public String toString()
	{
		return ("姓名:"+this.name+",年龄:"+this.age);
	}
}
public class Hi
{
	public static void main(String[] args) throws CloneNotSupportedException
	{
		Person p1 = new Person("小二", 27);
		Person p2 = (Person)p1.clone();
		System.out.println(p1+",p1的哈希码:"+p1.hashCode());
		System.out.println(p2+",p2的哈希值:"+p2.hashCode());
		if(p1.equals(p2))
		{
			System.out.println("p1和p2相等");
		}else
		{
			System.out.println("p1和p2不相等");
		}
	}
}
/*
姓名:小二,年龄:27,p1的哈希码:9761129
姓名:小二,年龄:27,p2的哈希值:9761129
p1和p2相等
*/
// ==========
java.lang.Runtime 类封装了运行时的环境
常用方法:

//向java虚拟机返回可用处理器的数目
public int availableProcessors()

//在单独的进程中执行指定的字符串命令
public Process exec(String command) throws IOException

//
public void exit(int status)

//返回 java 虚拟机中的空闲内存量
public long freeMemory()

//运行垃圾回收
public void gc()

//返回与当前 java 应用程序相关的运行时对象
public static Runtime getRuntime()

//强行终止目前正在运行的 java虚拟机
public void halt(int status)

//加载具有指定库名的动态库
public void load(String libname)

//返回 java虚拟机试图使用的最大内存量
public long maxMemory()

//返回 java虚拟机中的内存总量
public long totalMemory()

// ===========
public class Hi
{
	public static void main(String[] args)
	{
		// 获取当前运行的对象
		Runtime rt = Runtime.getRuntime();
		System.out.println("JVM处理器的数目:"+rt.availableProcessors());
		System.out.println("JVM空闲内存量:"+rt.freeMemory());
		System.out.println("JVM内存总量:"+rt.totalMemory());
		System.out.println("JVM最大内存量:"+rt.maxMemory());
		String str = null;
		for(int i=0; i<10000; i++)
		{
			str =""+i;
		}
		System.out.println("操作 str后,jvm空闲内存量:"+rt.freeMemory());
		// 回收
		rt.gc();
		System.out.println("回收垃圾后,JVM空闲内存量:"+rt.freeMemory());
	}
}
/*
JVM处理器的数目:2
JVM空闲内存量:62455464
JVM内存总量:64487424
JVM最大内存量:947388416
操作 str后,jvm空闲内存量:61448808
回收垃圾后,JVM空闲内存量:63341168
*/
// ==========

Process 类
可用来控制进程并获取相关信息
常用方法:
//关闭子进程
public abstract void destory()

//返回子进程的出口值
public abstract int exitValue()

//获得子进程的错误流
public abstract InputStream getErrorStream()

//获得子进程的输入流
public abstract InputStream getInputStream()

//获得子进程的输出流
public abstract OutputStream getOutputStream()

//导致当前进程等待
public abstract int waitFor() throws InterruptedExeption

// ========
// 以下是调用了 process
public class Hi
{
	public static void main(String[] args)
	{
		// 获取 Runtime 运行时的对象
		Runtime rt = Runtime.getRuntime();
		Process process = null;
		try
		{
			// 调用本机的计算器
			process = rt.exec("calc.exe");
		}catch(Exception e)
		{
			e.printStackTrace();
		}
	}
}
// --------------
//以下 5秒后不会关闭计算器
public class Hi
{
	public static void main(String[] args)
	{
		Runtime rt = Runtime.getRuntime();
		try
		{
			rt.exec("calc.exe");
		}catch(Exception e)
		{
			e.printStackTrace();
		}
		try
		{
			Thread.sleep(5000);
		}catch(Exception e)
		{
			e.printStackTrace();
		}
	}
}

//以下5秒后会关闭计算器
public class Hi
{
	public static void main(String[] args)
	{
		Runtime rt = Runtime.getRuntime();
		Process process = null;
		try
		{
			process = rt.exec("calc.exe");
		}catch(Exception e)
		{
			e.printStackTrace();
		}
		try
		{
			Thread.sleep(5000);
		}catch(Exception e)
		{
			e.printStackTrace();
		}
		process.destroy();
	}
}
// ==========
定时器, Timer 与 TimerTask 类
java.util.Timeer
java.util.TimerTask
Timer 类的常用方法

//创建一个新计时器
public Timer()

//创建一个新计时器,并指定相关线程作为守护线程
public Timer(boolean isDaemon)

//创建一个新计时器,并为指定的相关线程设置名称
public Timer(String name)

//创建一个新计时器,指定相关线程作为守护线程,并为指定的相关线程设置名称
public Timer(String name, boolean isDaemon)

//终止此计时器
public void cancel()

//移除所有已取消的任务,用于释放内存空间
public int purge()

//安排在指定的时间执行指定的任务,若已超过该时间,则立即执行
public void schedule(TimerTask task, Date time)

//安排在指定的时间执行指定的任务,然后以固定的频率(单位 ms)重复执行
public void schedule(TimerTask task, Date firstTIME, long period)

//安排指定的任务在一段时间后(ms)执行
public void schedule(TimerTask task, long delay)

//安排指定的任务在一段时间后执行,然后以固定的频率重复执行
public void schedule(TimerTask task,long delay, long period)

// 安排在指定的时间执行指定的任务,以后以近似的频率重复执行
public void scheduleAtFixedRate(TimerTask task, Date firstTime, long period)

//安排指定的任务在指定的时间后执行,并重复执行
public void scheduleAtFirstRate(TimerTask task, long delay, long period)

// TimerTask 类
常用方法
// 取消此计时器任务
public boolean cancel()

//此计时器任务要执行的操作编写在该方法中,子类必须重写该方法
public abstract void run()

//返回此任务最近要执行的任务时间
public long scheduledExceptionTime()

// ==========
// 定时操作
import java.util.Date;
import java.util.Random;
import java.util.Timer;
import java.util.TimerTask;
// 任务调度类继承 TimerTask
class RemindTask extends TimerTask
{
	public void run()
	{
		System.out.println("执行时间:"+(new Date()));
	}
}
public class Hi
{
	Timer timer;
	public Hi(int seconds, int lenTimer)
	{
		// 建立 Timer类对象
		timer = new Timer();
		// 执行任务
		timer.schedule(new RemindTask(),seconds, lenTimer);
	}
	public static void main(String[] args)
	{
		System.out.println("任务调度开始....");
		// 设置任务, 500 ms 后开始,每 1s 重复一次
		new Hi(500,1000);
	}
}
// ------------
System 类常用属性和方法
// 常量,“标准”错误输出流
public static PrintStream err

//常量,“标准”输入流
public static PrintStream in

//常量,“标准”输出流
public static PrintStream out

//从指定的源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束,
//其中,src为源数组,srcPos表示源数组的起始索引
// dest 表示目的数组, destPos表示目的数组的起始索引,
// length 表示提制数组 的长度
public static void arraycopy(Object src, int srcPos, Object dest,
		int destPos, int length)
		
//返回以 ms 为单位的当前时间
public static long currentTimeMillis()

//
public static void exit(int status)

//运行垃圾回收器
public static void gc()

//获得指定的环境变量值
public static String getenv(String name)

//确定当前的系统属性
public static Properties getProperties()

//
public static void load(String filename)
// =========
// 获取系统属性
import java.util.Properties;
public class Hi
{
	public static void main(String[] args)
	{
		// 取得系统属性
		Properties pr = System.getProperties();
		//列出属性
		pr.list(System.out);
	}
}
// ----------
//复制数组
public class Hi
{
	public static void main(String[] args)
	{
		char src[] = {'A', 'B', 'C', 'D', 'E', 'F'};
		char dest[] = {'1','2','3', '4', '5'};
		System.arraycopy(src, 1, dest, 1, 2);
		for (char c:dest)
		{
			System.out.print(c+" ");
		}
	}
}

//1 B C 4 5
// ==============
//程序运行计时
public class Hi
{
	public static void main(String[] args)
	{
		long startTime = System.currentTimeMillis();
		long result = 0;
		for (long i=0; i<888888888L; i++)
		{
			result += i;
		}
		System.out.println("程序运行时间:"+(System.currentTimeMillis()-startTime));
	}
}
//程序运行时间:732
// --------------
/*
 * 垃圾对象的回收
 * System.gc() 可用于垃圾回收器,实际是调用了 Runtime 类的 gc() 方法
 * 可用 Object类的 finalize() 方法来释放一个对象占用的内存空间
 */
class Person
{
	private String name;
	private int age;
	public Person(){}
	public Person(String name, int age)
	{
		this.name = name;
		this.age = age;
	}
	public String toString()
	{
		return ("姓名:"+this.name+",年龄:"+this.age);
	}
	public void finalize() throws Throwable
	{
		System.out.println("释放对象:"+this);
		super.finalize();
	}
}
public class Hi
{
	public static void main(String[] args)
	{
		Person p = new Person("小二", 27);
		System.out.println(p);
		p = null;
		System.gc();
	}
}
/*
姓名:小二,年龄:27
释放对象:姓名:小二,年龄:27
*/
// ===========
Date类常用方法:

//生成一个 Date对象,以表示分配它的时间,精确到毫秒
//该构造方法调用 System.currentTimeMillis()方法获取当前时间
//即 new Date() 等价于 new Date(System.currentTimeMillis())
public Date()

//根据指定的 long 类型值来生成一个 Date对象,表示时间戳,以 ms 为单位
public Date(long date)

//测试此日期是否指定日期之后
public boolean after(Date when)

//测试此日期是否在指定日期之前
public boolean before(Date when)

//比较两个日期的顺序,早为 -1,相等为0.晚为 1
public int compareTo(Date anotherDate)

//比较两日期相等性
public boolean equals(Object obj)

//返回自 1970-01-01到 Date 对象的时间差,单位为 ms
public long getTime()

//设置此 Date对象,惟 1970-01-01以后 time毫秒的时间点
public setTime(long time)

//把 Date对象转换为以下形式 down mon dd hh:mm:ss zzz yyy
public String toString()
// ---------
// 验证 Date类
import java.util.Date;
public class Hi
{
	public static void main(String[] args)
	{
		//攻取当前时间
		Date date1 = new Date();
		//当前时间+123ms
		Date date2 = new Date(System.currentTimeMillis()+123);
		System.out.println("时间:"+date1);
		//输出date2,以时间差表示
		System.out.println("时间差:"+date2.getTime()+"ms");
	
		System.out.println("date1是date2是否相同:"+date1.compareTo(date2));
		System.out.println("date1是否比 date2早:"+date1.before(date2));
	}
}
/*
时间:Sun Mar 01 13:43:52 CST
时间差:1425188632171ms
date1是date2是否相同:-1
date1是否比 date2早:true
*/
// ===========
// 不推荐使用 Date表示日期和时间,应用用 Calendar 类,这个是抽象类,所以不能直接实例化,
//可用两种:子类 GregorianCalendar 为其实例化,通过 Calendar 类中的 getInstance() 方法
// =======
//验证 Calendar 类
import java.util.Calendar;
import java.util.GregorianCalendar;
public class Hi
{
	public static void main(String[] args)
	{
		Calendar call = Calendar.getInstance();
		Calendar cal2 = new GregorianCalendar();
		System.out.println("年份:"+call.get(Calendar.YEAR));
		System.out.println("月分:"+(call.get(Calendar.MONTH)+1));
		System.out.println("号数:"+(call.get(Calendar.DATE)));
		System.out.println("今年的第"+(call.get(Calendar.DAY_OF_YEAR))+"天");
		System.out.println("本月的第"+(call.get(Calendar.DAY_OF_MONTH))+"天");
		System.out.println("本月的第"+(call.get(Calendar.DAY_OF_WEEK_IN_MONTH))+"周");
		System.out.println("星期:"+(call.get(Calendar.DAY_OF_WEEK)-1));
		System.out.println("24小时制:"+call.get(Calendar.HOUR_OF_DAY));
		System.out.println("12小时制:"+call.get(Calendar.HOUR));
		System.out.println("分钟:"+call.get(Calendar.MINUTE));
		System.out.println("秒:"+call.get(Calendar.SECOND));
		System.out.println("毫秒:"+call.get(Calendar.MILLISECOND));
		System.out.println("日期:"+call.getTime());
		cal2.set(2015,10,3);
		long time = cal2.getTimeInMillis() - call.getTimeInMillis();
		long day = time/(24*60*60*1000);
		System.out.println("天数:"+day);
		
	}
}
/*
年份:2015
月分:3
号数:1
今年的第60天
本月的第1天
本月的第1周
星期:0
24小时制:15
12小时制:3
分钟:24
秒:13
毫秒:672
日期:Sun Ma
天数:247
*/
// ----------

日期格式类: DateFormat 类,为抽象类
可使用 DateFormat类中的静态方法 getDateFormat()实例化

import java.util.Date;
import java.text.DateFormat;
public class Hi
{
	public static void main(String[] args)
	{
		DateFormat df1 = DateFormat.getInstance();
		DateFormat df2 = DateFormat.getDateInstance();
		DateFormat df3 = DateFormat.getTimeInstance();
		DateFormat df4 = DateFormat.getDateTimeInstance();
		
		System.out.println("默认:"+df1.format(new Date()));
		System.out.println("Date 默认:"+df2.format(new Date()));
		System.out.println("Time默认:"+df3.format(new Date()));
		System.out.println("DateTime默认:"+df4.format(new Date()));
	}
}
/*
默认:15-3-1 下午3:41
Date 默认:2015-3-1
Time默认:15:41:13
DateTime默认:2015-3-1 15:41:13
*/
// --------------
//中文时间格式
import java.util.Date;
import java.util.Locale;
import java.text.DateFormat;
public class Hi
{
	public static void main(String[] args)
	{
		DateFormat dfShort = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT,Locale.CHINA);
		DateFormat dfMedium = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM, Locale.CHINA);
		DateFormat dfFull = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL, Locale.CHINA);
		DateFormat dfLong = DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG,Locale.CHINA);

		DateFormat dfDefault = DateFormat.getDateTimeInstance(DateFormat.DEFAULT, DateFormat.DEFAULT, Locale.CHINA);
		System.out.println("short型:"+dfShort.format(new Date()));
		System.out.println("medium型:"+dfMedium.format(new Date()));
		System.out.println("Full 型:"+dfFull.format(new Date()));
		System.out.println("Long型:"+dfLong.format(new Date()));
		System.out.println("DEFAULT型"+dfDefault.format(new Date()));	
	}
}
/*
short型:15-3-1 下午4:23
medium型:2015-3-1 16:23:42
Full 型:2015年3月1日 星期日 下
Long型:2015年3月1日 下午04时2
DEFAULT型2015-3-1 16:23:42
*/
// ============
//自定义日期格式类
//SimpleDateFormat 类
import java.util.Date;
import java.text.SimpleDateFormat;
public class Hi
{
	public static void main(String[] args)
	{
		String format1 = "yyyy年MM月dd日 HH:mm:ss E";
		String format2 = "yyyy-MM-dd HH:mm:ss";
		SimpleDateFormat sdf1 = new SimpleDateFormat(format1);
		SimpleDateFormat sdf2 = new SimpleDateFormat(format2);
		String date1 = sdf1.format(new Date());
		String date2 = sdf2.format(new Date());
		System.out.println(date1);
		System.out.println(date2);
	}
}
/*
2015年03月01日 16:48:04 星期日
2015-03-01 16:48:04
*/
// ------------
//追念日期的字符串转换为日期 Date类型
import java.util.Date;
import java.text.SimpleDateFormat;
import java.text.ParseException;
public class Hi
{
	public static void main(String[] args)
	{
		String strDate = "2015-03-01 16:06:06";
		String format = "yyyy-MM-dd HH:mm:ss";
		SimpleDateFormat sdf = new SimpleDateFormat(format);
		Date date = null;
		try
		{
			date = sdf.parse(strDate);
		}catch(ParseException e)
		{
			e.printStackTrace();
		}
		System.out.println(date);
	}
}
//Sun Mar 01 16:06:06 CST 2015
// ============
Math 数学运算
public class Hi
{
	public static void main(String[] args)
	{
		System.out.println("绝对值函数:10.02 = "+Math.abs(10.02D)+", -10.02="+Math.abs(-10.02D));
		System.out.println("最大值最小值(23,12):最大值:"+Math.max(23, 12)+",最小值:"+Math.min(23, 12));
		System.out.println("四舍五入:13.6 ="+Math.round(13.6)+",13.4="+Math.round(13.4));
		System.out.println("三角函数: sin(30)="+Math.sin(30)+",cos(30)="+Math.cos(30));
		System.out.println("开方函数:16的开方="+Math.sqrt(16)+",8的立方根="+Math.cbrt(8));
		System.out.println("对数函数:ln(10)="+Math.log(10));
		System.out.println("随机数:0-10 = "+Math.random()*10);
	}
}
// ========
//随机数类,Random 类,其实可以通过 Math.random()生成
常用方法:
public Random(),
public Random(long seed),
protected int next(int bits),
public boolean nextBoolean(),
public void nextBytes(byte[] bytes)
public double nextDouble()
public float nextFloat()
public double nextGaussian()
public int nextInt()
public int nextInt(int n)
public long nextLong()
public void setSeed(long seed)
// ---------
// 生成指定区域的随机数
import java.util.Random;
public class Hi
{
	public static void main(String[] args)
	{
		Random random = new Random();
		System.out.println("生成0-1的随机小数:"+random.nextDouble());
		System.out.println("生成0-10.0的随机小数:"+random.nextDouble()*10);
		System.out.println("生成5-15的随机整数:"+random.nextInt(10)+5);
		System.out.println("生成0-100的随机数:");
		for(int i=0;i<10; i++)
		{
			System.out.print(random.nextInt(100)+" ");
		}
	}
}

// =========
// 具有相同种子数
import java.util.Random;
public class Hi
{
	public static void main(String[] args)
	{
		Random random1 = new Random(100);
		Random random2 = new Random(100);
		System.out.println("种子数为100的random对象:");
		for(int i=0; i<10; i++)
		{
			System.out.print(random1.nextInt(100)+" ");
		}
		System.out.println("
种子为100的random对象:");
		for(int i=0; i<10; i++)
		{
			System.out.print(random2.nextInt(100)+" ");
		}
	}
}
/*
种子数为100的random对象:
15 50 74 88 91 66 36 88 23 13
种子为100的random对象:
15 50 74 88 91 66 36 88 23 13
*/
//以上初始化种子数一样,所以结果一样,为了不一样,只能实例化一次 Random
// ----------
NumberFormat
java.text.NumberFormat类用于数字格式化,用于各种格式化

//返回所有语言环境的数组
public static Locale[] getAvailableLocales()

//获取格式化货币值时此数字格式使用的货币符号
public Currency getCurrency()

//规范格式
public String format(double number)

//返回当前默认语言环境的货币格式符号
public static NumberFormat getCurrencyInstance()

//返回指定语言环境的货币格式符号
public static NumberFormat getCurrencyInstance(Locale inLocale)

//返回当前默认语言环境的数字格式
public static NumberFormat getInstance()

//返回指定语言环境的数字格式
public static NumberFormat getInstance(Locale inLocale)

//返回当前默认语言环境的整数格式
public static NumberFormat getIntegerInstance()

//返回指定语言环境的整数格式
public static NumberFormat getIntegerInstance(Locale inLocale)

//返回当前默认语言环境的通用数字格式
public static NumberFormat getNumberInstance()

//返回指定语言环境的通用数字格式
public static NumberFormat getNumberInstance(Locale inLocale)

//返回当前默认语言环境的百分比格式
public static NumberFormat getPercentInstance()

//返回指定语言环境的百分比格式
public static NumberFormat getPercentInstance(Locale inLocale)

//将给定追念数字的字符串,解析为一个数字
public Number parse(String source)

//获取格式化货币值时此数字格式使用的货币
public void setCurrency(Currency currency)

// ============
import java.text.NumberFormat;
import java.util.Locale;
public class Hi
{
	public static void main(String[] args)
	{
		System.out.println("----------默认格式(中文)------");
		NumberFormat nfm1 = NumberFormat.getInstance();
		System.out.println(nfm1.format(99999));
		System.out.println(nfm1.format(9999.3601));
		System.out.println("----------指定格式(美国)-------");
		NumberFormat nfm2 = NumberFormat.getCurrencyInstance(Locale.US);
		System.out.println(nfm2.format(9998774));
		System.out.println(nfm2.format(9999.3366));
		System.out.println("-----------默认格式(中文)--------");
		NumberFormat nfm3 = NumberFormat.getPercentInstance();
		System.out.println(nfm3.format(0.123));
	}
}
/*
----------默认格式(中文)------
99,999
9,999.36
----------指定格式(美国)-------
$9,998,774.00
$9,999.34
-----------默认格式(中文)--------
*/
// --------------

decimalFormat 是 NumberFormat的一个子类,用于格式化,但得有格式化模板标记
import java.text.DecimalFormat;
import java.util.Locale;
public class Hi
{
	public static void main(String[] args)
	{
		// 实例化
		DecimalFormat dfm1 = new DecimalFormat("000,000.000");
		System.out.println("000,000.000格式:"+dfm1.format(123456.789));
		DecimalFormat dfm2 = new DecimalFormat("###,###.###");
		System.out.println("###,###.###格式:"+dfm2.format(123456.789));
		DecimalFormat dfm3 = new DecimalFormat("¥000,000.000");
		System.out.println("¥000,000.000格式:"+dfm3.format(123456.789));
		DecimalFormat dfm4 = new DecimalFormat("$000,000.000");
		System.out.println("$000,000.000格式:"+dfm4.format(123456.789));
		DecimalFormat dfm5 = new DecimalFormat("###,###.###%");
		System.out.println("###,###.###%格式:"+dfm5.format(123456.789));
		DecimalFormat dfm6 = new DecimalFormat("000.###u2030");
		System.out.println("000.###u2030格式:"+dfm6.format(123456.789));
		DecimalFormat dfm7 = new DecimalFormat("###.###");
		System.out.println("###.###格式:"+dfm7.format(123456.789));
	}
}
/*
  值为 123456.789
结果如下:
000,000.000格式:123,456.789
###,###.###格式:123,456.789
¥000,000.000格式:¥123,456.789
$000,000.000格式:$123,456.789
###,###.###%格式:12,345,678.9%
000.###‰格式:123456789‰
###.###格式:123456.789
*/

//-------------
大数类
BigInteger:无限大的整数
BigDecimal:无限大的浮点数
//BigInteger 类
import java.math.BigInteger;
public class Hi
{
	public static void main(String[] args)
	{
		String strNumber1 = "123456789987654321";
		String strNumber2 = "987654321123456789";
		BigInteger big1 = new BigInteger(strNumber1);
		BigInteger big2 = new BigInteger(strNumber2);
		System.out.println("加法操作:"+big1.add(big2));
		System.out.println("减法操作:"+big2.subtract(big1));
		System.out.println("乘法操作:"+big1.multiply(big2));
		System.out.println("除法操作:"+big2.divide(big1));
		System.out.println("取模操作:"+big2.mod(big1));
		System.out.println("最大公约数:"+big1.gcd(big2));
		System.out.println("最大值:"+big1.max(big2)+",最小值:"+big1.min(big2));
		byte b[] = big1.toByteArray();
		System.out.println("二进制补码:");
		for(int i=0; i<b.length;i++)
		{
			System.out.print(b[i]+" ");
		}
	}
}
/*
加法操作:1111111111111111110
减法操作:864197531135802468
乘法操作:121932632103337905662094193112635269
除法操作:8
取模操作:1222222221
最大公约数:1222222221
最大值:987654321123456789,最小值:123456789987654321
二进制补码:
1 -74 -101 75 -32 82 -6 -79
*/
// ==============
//精确的大数类: BigDecimal类
因为 float double 不适合精确运算
import java.math.BigDecimal;
public class Hi
{
	public static double add(double d1, double d2)
	{
		BigDecimal dbl1 = new BigDecimal(d1);
		BigDecimal dbl2 = new BigDecimal(d2);
		return dbl1.add(dbl2).doubleValue();
	}
	public static double sub(double d1, double d2)
	{
		BigDecimal dbl1 = new BigDecimal(d1);
		BigDecimal dbl2 = new BigDecimal(d2);
		return dbl1.subtract(dbl2).doubleValue();
	}
	public static double mul(double d1, double d2)
	{
		BigDecimal dbl1 = new BigDecimal(d1);
		BigDecimal dbl2 = new BigDecimal(d2);
		return dbl1.multiply(dbl2).doubleValue();
	}
	public static double div(double d1, double d2, int len)
	{
		BigDecimal dbl1 = new BigDecimal(d1);
		BigDecimal dbl2 = new BigDecimal(d2);
		return dbl1.divide(dbl2,len, BigDecimal.ROUND_HALF_UP).doubleValue();
	}
	public static double round(double d1, int len)
	{
		BigDecimal dbl1 = new BigDecimal(d1);
		BigDecimal dbl2 = new BigDecimal(1);
		return dbl1.divide(dbl2,len,BigDecimal.ROUND_HALF_UP).doubleValue();
	}
	public static void main(String[] args)
	{
		System.out.println("加法操作:"+round(add(9.87645321, 1.2369875), 1));
		System.out.println("减法操作:"+round(sub(9.87654321,1.23456789), 1));
		System.out.println("乘法操作(保留5位小数:"+round(mul(9.87654321,1.23456789), 5));
		System.out.println("除法操作(保留10位小数):"+div(9.87654321,1.23456789,10));
	}
}
/*
加法操作:11.1
减法操作:8.6
乘法操作(保留5位小数:12.19326
除法操作(保留10位小数):8.0000000729
*/
// ===========
正则表达式,由 java.util.regex 包
该包中只有两个类 Pattern类和Match类
Pattern类的对象是正则表达式编译在内存的表示形式,而 Matcher对象是状态机,它依据 Pattern对象作为匹配模式,
对字符串展开匹配操作
执行流程如下:
首先创建 Pattern对象,再由已定义的正则表达式对它进行编译。最后再利用
Pattern对象创建对应的 Matcher对象,执行匹配所涉及的状态保存在 Matcher对象中
// =============
Pattern类常用方法
//编译并创建一个Pattern类的对象
public static Pattern compile(String regex)

//同上,但增加一个 flags参数标志模式
public static Pattern compile(String regex, int flags)

//返回当前Pattern对象的 flags参数
public int flags()

//创建一个给定名称的 Matcher对象
public Matcher matcher(CharSequence input)

//编译给定正则表达式,并输入的字符串以正则表达式为模展开匹配
public static boolean matcher(String regex, CharSequence input)

//返回 该 Pattern对象所编译的正则表达式
public String pattern()

//将字符串按指定的正则分割
public String[] split(CharSequence input)

//将字符串进行分割,并增加分割段数
public String[] split(CharSequence input, int limit)

// =================
//拆分字符串
import java.util.regex.Pattern;
public class Hi
{
	public static void main(String[] args)
	{
		String str = "好的/雷劈/去你的/恩";
		//创建 Pattern实例
		Pattern pat = Pattern.compile("[/]");
		//分割字符串
		String rse[] = pat.split(str);
		System.out.println("分割前:
"+str);
		System.out.println("分割后:");
		for(int i=0; i<rse.length; i++)
		{
			System.out.println(rse[i]);
		}
	}
}
/*
分割前:
好的/雷劈/去你的/恩
分割后:
好的
雷劈
去你的
恩
*/
// ==============

Mathcher类需要配合 pattern类使用
以下是部分方法:
//将当前的子字符串替换为指定的字符串
public Matcher appendReplacement(StringBuffer sb, String replacement)

//在最后一镒匹配后,将剩余的字符串添加到指定的 StringBuffer对象中
public StringBuffer appendTail(StringBuffer sb)

//返回最后匹配的索引位置
public int end()

//返回最后与指定组匹配的位置
public int end(int group)

//在目标字符串查找下一个匹配的字符串,找到则 true
public boolean find()

//重新查找下一个匹配的字符串
public boolean find(int start)
// =============
import java.util.Scanner;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Hi
{
	public static void main(String[] args)
	{
		//定义规则
		String regex = "^(\d{2})$";
		Scanner scan = new Scanner(System.in);
		String str = scan.next();
		// 实例化 Pattern
		Pattern pat = Pattern.compile(regex);
		// 实例化 Matcher
		Matcher mat = pat.matcher(str);
		if(mat.matches())
		{
			System.out.println("Yes");
		}else
		{
			System.out.println("No");
		}
	}
}
// ============

  

原文地址:https://www.cnblogs.com/lin3615/p/4306060.html