java常用类库

本文介绍的类都可以在JDK文档中查看细节部分。

一、API概念

API(Application Programming Interface)应用程序接口
比如在一个厂家购买一个机器人,该机器人可以跑,跳、握手等的动作,但这些操纵机器实现的动作不会逐一编写的,厂家会提供控制机器人执行这些动作的java类,我们在编写某一个机器人的程序时,只需要把这些java类实例化出一个对象就可以了,然后实例化对象就可以使用这些java类里面的各种方法了。
上面所说的厂家提供的java类就是应用程序接口。关于java中的类,我们在JDK文档中都可以查到。
(下图是JDK文档截图)

java 常用 类库 非 java常见类库_java


二、String类、StringBuffer类和StringBuilder类

关于String类的基本特点及常用方法,之前文章介绍过,链接 , 现在介绍一下String类、StringBuffer类和StringBuilder类的特点及其区别。

  1. String类

先看一个代码例子和图示解释:

String str="Hello";
str+="world";
str+="!!!";
System.out.println(str);//此时str=Hello world !!!

上述代码的分析

java 常用 类库 非 java常见类库_System_02


可以看到,因为String是不可改变的,每次对String操作时都会产生新的对象。上述的代码就是想输出“Hello world”,但是利用了三块内存,并且两块变成了垃圾,浪费了有限的内存空间,这时就出现了StringBuffer类和StringBuilder类。

  1. StringBuffer类和StringBuilder类

这两个类有利有弊,但是与String类相比,StringBuffer和StringBuilder类的对象可以被多次修改,不会产生未使用的对象,所以不会产生垃圾。

但是,StringBuffer类与StringBuilder类相比,StringBuffer类最大的优点就是线程安全,StringBuilder类最大的有点就是速度快。多数情况下会使用StringBuilder类,因为它速度快,但是如果对线程安全有要求时,就要用Stringbuffer类。

注:java为字符串提供了连接操作符“+”,可以把任何类型的数据转换成字符串。实际上连接字符串的实质是通过StringBuffer类和它其中的append方法实现的。例如:

String n="a"+2+"c";
//等效于
String n=new StringBuffer().append("a").append(2).append("c").toString();

总结

  • String类:不可变字符串;若对字符串只有少量操作就用String类。
  • StringBuffer类:可变字符串,线程安全,速度慢;如果多线程操作字符串处理大量数据时使用StringBuffer类。
  • StringBuilder类:可变字符串,线程不安全,速度快;如果单线程操作字符串处理大量数据时使用StringBuilder类。

三、System类简介

java不支持全局方法和变量,java将一些系统相关的重要方法和变量收集到System类中。System类中的所有成员都是静态的,如果引用这些变量和方法,直接在前面加上System类名的前缀。例如:System.out.println();

四、Runtime类简介

Runtime类封装了java命令本身的运行进程,其中的许多方法和System类中的重复。不能直接创建Runtime类的实例,但是可以通过静态方法Runtime.getRuntime获得正在运行的Runtime对象的引用。

五、Date类、Calendar类和DataFormat类简介

Date类用于表示日期和时间,最简单的构造方法是Date(),它以当前的日期和时间初始化一个Date对象。
Calendar类是一个抽象基类,主要完成日期字段之间相互操作的功能。
有时,要将用Date对象表示的日期以指定的格式输出,或是将用特定格式显示的日期字符串转换成一个Date对象,而Java.text.DateFormat就是实现这种功能的基类。

六、Math类和Random类简介

Math类可以看JDK文档,不多说。
但是Random类需要注意,它是一个随机数产生器,是通过某种算法产生的随机数,但是如果给相同的初值,创建出来的一系列随机数是一样的,所以一般用当前时间去做初始值,因为没有哪两个时间是一模一样的。

<还有数不胜数的类,需要经常查JDK文档学习,这里只列出部分重要的类,大体有一个印象,要养成经常查看JDK文档的习惯。>