System类
System类代表当前Java程序的运行平台。java.lang.System类对我们来说并不陌生,在前面的章节中我们经常使用System.out语句来完成输出工作。System类是一个final类,该类的所有属性和方法都是静态的。System类的属性in、out和err分别对应标准输入、标准输出和错误输出流。System类常用于纪录程序执行的时间、复制数组、确定当前的系统属性和获取系统环境变量等工作。
Runtime类
Runtime类代表Java程序的运行时环境,每个Java程序都有一个与之对应的Runtime实例,应用程序通过该对象与其运行时环境相连。应用程序不能创建自己的Runtime实例,但是可以通过Runtime类的静态方法getRuntime()获取与之关联的Runtime对象。
获取Runtime对象后,我们就可以使用Runtime类相关的方法,访问JVM相关信息,包括处理器数量、内存信息等等。
字符串相关类
String类包含了一个不可变的字符串。一旦一个String对象被创建,包含在这个对象中的内容就是不可改变的,直至这个对象被销毁。
StringBuffer类
StringBuffer对象则代表一个内容可变的字符串。当一个StringBuffer被创建以后,通过StringBuffer提供的方法可以改变该字符串对象的字符序列。一旦通过StringBuffer生成了最终想要的字符串,就可以调用它的toString()方法将其转换为一个String对象。
StringBuffer和String虽然都可以用于代表字符串,但是二者的内部实现方式有所不同。StringBuffer在进行字符串处理时,不生成新的对象,在内存使用上要优于String。所以,在实际使用中,如果经常需要对字符串进行修改,使用StringBuffer性能要更好一些。
使用StringBuffer创建字符串对象,不能通过直接用字符串常量给StringBuffer类型的引用赋值的方式创建,只能通过使用StringBuffer的构造器创建。
StringBuilder类
JDK5中新增了一个StringBuilder对象,它也代表字符串对象。StringBuilder和StringBuffer在很多方面是相同的,不同的地方是StringBuffer方法是线程安全的,而StringBuilder则不是。所以,StringBuilder比StringBuffer性能略高。
String、StringBuffer和StringBuilder对字符串操作提供了众多的方法,因篇幅所限,我们这里不一一列出。但是,字符串操作在实际项目开发中是很常见的,因此请在实际开发中参考JDK API,逐步熟悉用这几个类的方法来操作字符串。
日期相关类
Java 语言中提供了Date、Calendar、GregorianCalendar、DateFormat、SimpleDateFormat类共同组成了标准日期时间处理类。Date、Calendar和GregorianCalendar位于java.util包中,而DateFormat和SimpleDateFormat位于java.text包中。
DateFormat抽象类与SimpleDateFormat类
java.text.DateFormat是一个抽象类,我们可以使用它用预定义的本地化方式格式化和解析时间日期。因为DateFormat是一个抽象类,所以不能直接实例化,但是它提供了大量的静态方法返回一个具体的子类,让我们可以用不同的方法格式化日期时间。
DateFormat类的getDateInstance()方法返回一个将日期按照默认地区或者特定地区的方式格式化的DateFormat对象,此外,还可以使用DateFormat的常量FULL、LONG、SHORT或DEFAULT来指定格式化的风格。与此类似,DateFormat类的getTimeInstance()方法返回一个DateFormat对象格式化时间,getDateTimeInstance()方法返回一个DateFormat对象格式化日期和时间。这些方法都带有可选的格式化风格的常量以及代表地区的Locale对象的常量。最后,getInstance()方法返回一个默认的DateFormat对象,将时间和日期都按照SHORT样式格式化。
得到了DateFormat类的具体子类后,我们就可以调用具体子类的Format()方法,按照预定义的方式格式化日期时间。
Calendar抽象类与GregorianCalendar类
在JDK第一次发布时,Date类是唯一的代表日期时间的类。但是由于Date类在编写的时候并没有考虑到各个国家的实际情况,在国际化方面考虑不够周到,所以从JDK1.1版本开始,Java中推荐使用Calendar类来处理日期时间,并将很多Date类的方法设置为已经过时。
Calendar类是一个抽象类,它的功能比Date类要强大很多,实现方式也比Date类要复杂。Calendar类提供了很多方法,来完成日期时间之间的相互操作功能。
Calendar类是一个抽象类,所以不能使用构造器来实例化一个Calendar对象.但是Calendar类提供了静态方法getInstance()来获取Calendar类的具体子类的对象,而它唯一一个具体子类是GregorianCalendar类,所以它的getInstance()方法返回的就是一个GregorianCalendar对象。GregorianCalendar类用来代表世界上大多数国家和地区所采用的公历日历。
GregorianCalendar类的无参数构造方法用来描述今天,用年、月、日、小时、分、秒来作为构造方法的参数时用来描述特定的一天。
数学运算相关类
Java中提供了+、-、*、/、%等执行基本算术运算的运算符,但是对于复杂的数学运算则无能为力。为此,Java提供了Math类和Random类来完成复杂的数学运算。
Math类
Math类是一个数学工具类,在Java语言中,常用的数学常数和数学方法都在该类内部,而且无论是常数还是方法都是static类型的,可以直接通过"Math.方法名()"进行调用,方便程序员进行实际的使用。
随机数
通过System.currentTimeMillis()来获取一个当前时间毫秒数的long型数字,我们可以把这个数字当作随机数。
通过Math类的静态方法random()返回一个0到1之间的double值。我们可以将这个值乘以一定的数,比如100,那么它就是一个100以内的随机数。
通过Random类来产生一个随机数。
在这三种方法中,Random类更为专业,功能更为强大。所以,我们一般采用位于java.util包中的Random类做为随机数生成器。
在计算机中,所谓随机数生成器都是通过一定的算法,对事先选定的一个种子做复杂的运算,用产生的结果来近似地模拟完全随机数。这种随机数称为伪随机数,都是以相同的概率,从一组有限的数字中选取的无重复的数字。因此,要生成随机数,我们必须提供一个种子做为基点。
般在计算机中,在创建随机数生成器时,如果不带种子,系统会用系统时钟来作为种子。这样,每次运行产生的随机数都是不同的,没有规律可言。如果带了种子,每次运行产生的随机数都是相同的,便于重现,也便于其他人检验分析结果。
在Java的Random类中,针对不设种子和设种子,提供了两种形式的构造器,分别是Random()和Random(long seed)。Random()使用当前时间即System.currentTimeMillis()作为生成器的种子,而Random(long seed)使用指定的seed作为生成器的种子。
随机数生成器Random对象创建后,我们就可以通过调用该对象的不同的方法,随机生成int类型、long类型、double类型、float类型、boolean类型等不同类型的随机数。
常用类
最新推荐文章于 2024-04-25 09:00:00 发布