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("\n种子为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

{

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("分割前:\n"+str);

System.out.println("分割后:");

for(int i=0; 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");

}

}

}

// ============

java常用类需要记吗_java 常用类相关推荐

  1. java类的运行顺序_Java语言类的基本运行顺序

    本文主要向大家介绍了Java语言类的基本运行顺序,通过具体的代码向大家展示,希望对大家学习Java语言有所帮助.我们以下面的类来说明一个基本的 Java 类的运行顺序:1. public class  ...

  2. 在java中班级的表示方法_java班级类起名怎么起-javaclass怎起名

    java中class后面类的名字需要和创建类的时候输入的名字一样吗? 是的,否则将是错误的 给学习java的班里去取个好听的名字 房东,您应该在班级中选择您的姓名,或在JAVA班级中选择名称 java ...

  3. java所用到的英语单词_JAVA常用英语单词

    第一章: public['pʌblik] 公共的,公用的 static['stætik] 静的;静态的;静止的 void:[vɔid] 空的 main:[mein] 主要的 重要的 class:[kl ...

  4. java所使用的字符集是_Java常用字符集编码详解

    Java常用字符集编码详解 Web开发的时候经常会遇到一些字符编码的错误,如页面乱码等问题,所以有必要需对字符编码有所了解,以下是Ricki收集的一些资料(可能不是很全,但希望对你有所帮助) Java ...

  5. java 类的高级特性_java程序-类的高级特性

    创建Employee类,在类中定义三个属性:编号,姓名,年龄,然后在构造方法里初始化这三个属性,最后在实现接口中的定义的CompareTo方法,将对象按编号升序排列. 代码如下:(程序可能有些错误,方 ...

  6. java对类数组进行排序_Java比较器类对数组进行排序

    小编典典 [-]应该如何声明Java Comparator类以按其降序将数组的第一个元素排序 [-] 这是使用Java 8的完整示例: import java.util.*; public class ...

  7. java成员修饰词 友好的_Java的类成员访问权限修饰词(以及类访问权限)

    在一个类的内部,其成员(包括成员变量和成员函数)能否被其他类所访问,取决于该成员的修饰词.Java的类成员访问权限修饰词有四类:private,无(默认情况下),protected和public.其权 ...

  8. java 做猜数字小游戏_Java Properties类:利用Properties类制作猜数字小游戏

    在学习Random类时我们制作过猜数字小游戏,学习了Properties类后,可以为此游戏添加保存得分记录功能 游戏规则: 玩家可以选择玩游戏还是查看得分 玩游戏: 首先玩家需要选择难度: 难度级别 ...

  9. java哪些类重写equals方法_Java自定义类中重写equals方法

    equals方法的要求: a.自反性:对于任何非空的x,x.equals(x)都应该返回true b.对称性:对于任何引用x和y,当且仅当x.equals(y)返回true时,y.equals(x)也 ...

最新文章

  1. Cookie和Session的区别与联系
  2. 表变量是什么_为什么要使用二级指针?
  3. 移动硬盘拒绝访问找到数据的法子
  4. 排序算法之 Inplace Merge Sort
  5. spark中的广播变量与累加器
  6. Java笔记1(2015-8-30)
  7. matlab数组输出字符,Matlab字符型数组的输入输出
  8. 学的计算机专业不会编程,学计算机专业的不会编程啊怎么办?
  9. mySQL mainxml汉化包下载
  10. 2020-12-28
  11. Latex表格/公式在线编译转换器
  12. Hacked?软件监控邮箱账号是否存在数据泄露情况
  13. 记一次Y7000P内存升级(骇客神条套条),让电脑飞起来~
  14. GNU Radio: 射频子板
  15. php统计邮件打开率,监控 Amazon SES 电子邮件的打开率、点击率和退回率
  16. 批量导出数据库中的表
  17. DOM windows对象 navigator对象 详细介绍
  18. 函数式编程之every函数
  19. BBC私房药药方收集
  20. 无线专题 openwrt feeds、web框架luci(lua语言)、UCI (统一配置接口)

热门文章

  1. 极简 响应式 html5,HTML5----响应式(自适应)网页设计
  2. python装饰器_Python基础-装饰器
  3. 监督学习 | 线性回归 之多元线性回归原理及Sklearn实现
  4. 《细胞》突破性成果!北京林业大学钮世辉等解开“中国松”基因密码
  5. 翻译|给数据科学家的10个提示和技巧Vol.1
  6. 转录组测序多少生物重复合适?2个?3个?48个?
  7. 强烈推荐:给去美国的新生说几句(转载),超实用
  8. rsync配置和使用
  9. MacOS 12.0.X系统提示“未能装载磁盘映像,错误代码为109”的临时解决方法
  10. ps眼睛糖果滤镜插件 - Alien Skin Eye Candy 7 for Mac