系统相关类
System类
System类代表当前Java程序的运行平台。System类是一个final类,该类的所有属性和方法都是静态的。System类的属性in、out和err分别对应标准输入、标准输出和错误输出流。System类常用于纪录程序执行的时间、复制数组、确定当前的系统属性和获取系统环境变量等工作。
常用方法:
currentTimeMillis();返回以毫秒为单位的当前时间
exit(int status);终止当前正在运行的 Java 虚拟机
getProperties(); 确定当前的系统属性
getProperty(String key);获得指定键指示的系统属性
nanoTime();返回最准确的可用系统计时器的当前值,以毫微秒为单位
gc();运行垃圾回收器
检测一段代码运行时所花费的时间,可以调用System类的currentTimeMillis()方法或nanoTime()方法,调用System类的getProperties()方法和getProperty(String key)方法,可以获取系统相关属性。
Runtime类
Runtime类代表Java程序的运行时环境,每个Java程序都有一个与之对应的Runtime实例,应用程序通过该对象与其运行时环境相连。应用程序不能创建自己的Runtime实例,但是可以通过Runtime类的静态方法getRuntime()获取与之关联的Runtime对象。获取Runtime对象后,我们就可以使用Runtime类相关的方法,访问JVM相关信息,包括处理器数量、内存信息等等。Runtime类的exec()方法,我们还可以运行操作系统命令。
常用方法:
availableProcessors();当前处理器数量
freeMemory();空闲内存数
totalMemory();总内存数
maxMemory();可用最大内存数
字符串相关类
String类
String类包含了一个不可变的字符串。一旦一个String对象被创建,包含在这个对象中的内容就是不可改变的,直至这个对象被销毁。
创建String对象的常用方式:
1、使用String对象的构造器显式创建,例如:String str = new String("Hello");
2、通过用字符串常量直接给String类型变量赋值隐式创建。例如:String str = "Hello";
常用方法:
char charAt(int index);返回指定索引的字符
int compareTo(Object o);将该字符串对象与另一个对象进行比较
String concat(String str);将指定字符串连接到该字符串的末尾
boolean endsWith(String suffix);测试该字符串是否以指定后缀结尾
boolean equals(Object anObject;将该字符串与指定对象进行比较
byte[] getBytes();根据平台默认的字符编码,将该字符串转换为字节类型,将结果存入新的字节数组中
int indexOf(int ch);返回指定字符在该字符串内首次出现的索引
int length();返回该字符串的长度
String substring(int beginIndex);返回新字符串,作为该字符串的子字符串
String toUpperCase();将该字符串中的所有字符转换为大写
String trim();删除该字符串两端的空格
static String valueOf(int i);返回整型参数的字符串表示法
static String valueOf(Object obj);返回对象参数的字符串表示法
StringBuffer类
StringBuffer对象则代表一个内容可变的字符串。当一个StringBuffer被创建以后,通过StringBuffer提供的方法可以改变该字符串对象的字符序列。一旦通过StringBuffer生成了最终想要的字符串,就可以调用它的toString()方法将其转换为一个String对象。
StringBuffer和String虽然都可以用于代表字符串,但是二者的内部实现方式有所不同。StringBuffer在进行字符串处理时,不生成新的对象,在内存使用上要优于String。所以,在实际使用中,如果经常需要对字符串进行修改,使用StringBuffer性能要更好一些。
使用StringBuffer创建字符串对象,不能通过直接用字符串常量给StringBuffer类型的引用赋值的方式创建,只能通过使用StringBuffer的构造器创建。
StringBuffer类操作字符串的很多方法与String类相同,但是StringBuffer主要偏重于对字符串的变化,例如追加、插入和删除等。
常用方法:
StringBuffer append(数据);将数据追加到StringBuffer所代表的字符串的末尾
int capacity();返回StringBuffer的当前容量
StringBuffer delete(int start, int end);删除字符串中从索引位置start到end(不包括)位置的字符。
StringBuffer deleteChartAt(int index);删除指定位置的字符
StringBuffer insert(int offset, 数据);将指定的数据插入到该StringBuffer指定位置
StringBuffer replace(int start, int end, String str);用指定字符串中的字符替换该StringBuffer中的字符
StringBuffer reverse();倒序替换该StringBuffer中包含的字符序列
void setCharAt(int index, char ch);将该StringBuffer指定索引处的字符赋给ch
void setLength(int newLength);设置该StringBuffer的长度
String substring(int start);返回一个新字符串,该字符串包含了该StringBuffer中当前所包含的字符序列,此子字符串从指定索引处开始,并延伸到StringBuffer的结尾
String substring(int start, int end);返回一个新字符串,该字符串包含了该StringBuffer中当前所包含的字符序列
String toString();转换成表示该StringBuffer中数据的字符串
StringBuilder类
JDK5中新增了一个StringBuilder对象,它也代表字符串对象。StringBuilder和StringBuffer在很多方面是相同的,不同的地方是StringBuffer方法是线程安全的,而StringBuilder则不是。所以,StringBuilder比StringBuffer性能略高。在不考虑线程安全的情况下,如果需要创建一个内容可变的字符串对象,应该优先考虑使用StringBuilder
日期相关类
Date类
Date类表示特定的瞬间,精确到毫秒。该类提供了很多方法,但是很多已经过时,不推荐使用。
常用方法:
boolean after(Date when); 测试此日期是否在指定日期之后
boolean before(Date when); 测试此日期是否在指定日期之前
long getTime(); 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数
void setTime(long time); 设置此 Date 对象,以表示 1970 年 1 月 1 日 00:00:00 GMT 以后 time 毫秒的时间点
DateFormat抽象类与SimpleDateFormat类
DateFormat是一个抽象类,我们可以使用它用预定义的本地化方式格式化和解析时间日期。因为DateFormat是一个抽象类,所以不能直接实例化,但是它提供了大量的静态方法返回一个具体的子类,让我们可以用不同的方法格式化日期时间。
DateFormat类的getDateInstance()方法返回一个将日期按照默认地区或者特定地区的方式格式化的DateFormat对象,此外,还可以使用DateFormat的常量FULL、LONG、SHORT或DEFAULT来指定格式化的风格。
Calendar抽象类与GregorianCalendar类
在JDK第一次发布时,Date类是唯一的代表日期时间的类。但是由于Date类在编写的时候并没有考虑到各个国家的实际情况,在国际化方面考虑不够周到,所以从JDK1.1版本开始,Java中推荐使用Calendar类来处理日期时间,并将很多Date类的方法设置为已经过时。
Calendar类是一个抽象类,它的功能比Date类要强大很多,实现方式也比Date类要复杂。Calendar类提供了很多方法,来完成日期时间之间的相互操作功能。表12-7列出了Calendar类的主要方法。
常用方法:
add();实现在某个日期上的增加若干天、年、月、小时等后的新日期
get() 得到日期对象中的年、月、日、小时、分、秒等
set() 修改日期对象中的年、月、日、小时、分、秒等
getInstance() 返回一个Calendar类型的对象实例
常用的Calendar类中的常量:
Calendar.DAY_OF_YEAR 当年的多少天
Calendar.DAY_OF_MONTH 当月的多少天
Calendar.DAY_OF_WEEK 当周的多少天
Calendar.WEEK_OF_YEAR 当年的第几周
Calendar.WEEK_OF_MONTH 当月的第几周
Calendar.AM_PM 上午/下午
数学相关类
Math类
Math类是一个数学工具类,在Java语言中,常用的数学常数和数学方法都在该类内部,而且无论是常数还是方法都是static类型的,可以直接通过"Math.方法名()"进行调用,方便程序员进行实际的使用。
求一个数的绝对值
System.out.println(Math.abs(-1));
求一个数的平方根
System.out.println(Math.sqrt(64));
求一个数的立方根
System.out.println(Math.cbrt(27));
求一个数的5次方根
System.out.println(Math.pow(64, (1.0/5)));
随机函数
System.out.println(Math.random());//随机数 获得范围是:[0.0----1.0),一个伪随机 double大于或等于 0.0并小于 1.0 。
向上取整
System.out.println(Math.ceil(10.0456781));//返回大于或等于参数的最小(最接近负无穷大) double值,等于一个数学整数
向下取整
System.out.println(Math.floor(10.0456781));//返回小于或等于参数的最大(最接近正无穷大) double值,等于一个数学整数。
求一个数的多次幂
System.out.println(Math.pow(2, 5));
勾股定律(求直角三角形的斜边的长度)
System.out.println(Math.hypot(3, 4));
System.out.println(Math.E);//2.718281828459045
System.out.println(Math.log(100));//e的几次幂等于某一个数 2.718281828459045的4.605170185988092次方等于100
System.out.println(Math.log10(10000));//得到的结果是4 10的4次幂刚好是10000
返回与参数最接近值的double值,等于数学整数
如果这个数跟它最近的两个数距离一样,那么就近返回偶数
System.out.println(Math.rint(6.5));
四舍五入
返回与参数最接近值的long值,等于数学整数
如果这个数跟它最近的两个数距离一样,那么就就近返回最大的数
System.out.println(Math.round(6.5));
随机数
在Java中,产生随机数的方法有三种:
1、通过System.currentTimeMillis()来获取一个当前时间毫秒数的long型数字,我们可以把这个数字当作随机数。
2、通过Math类的静态方法random()返回一个0到1之间的double值。我们可以将这个值乘以一定的数,比如100,那么它就是一个100以内的随机数。
3、通过Random类来产生一个随机数。
在这三种方法中,Random类更为专业,功能更为强大。所以,我们一般采用位于java.util包中的Random类做为随机数生成器。
Random类的主要方法:
boolean nextBoolean(); 返回下一个boolean类型随机数,生成true和false的值机率相等
double nextDouble();返回下一个double类型随机数,数值介于[0,1.0)之间。
int nextInt(); 返回下一个int类型随机数,该值介于int的区间,也就是-231到231-1之间。
int nextLong() ; 返回下一个long类型随机数,该值介于long的区间
int nextInt(int n); 返回下一个int类型随机数,该值介于[0,n)的区间。
void setSeed(long seed); 设置Random对象中的种子数