Java 的API
Java 的API(API: Application(应用) Programming(程序) Interface(接口))
Java API就是JDK中提供给我们使用的类,这些类将底层的代码实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可。
在JDK安装目录下有个src.zip文件,这个文件解压缩后里面的内容是所有Java类的源文件。可以在其中查看相对应的类的源码。
基本类型包装类
8种基本类型对应的包装类
基本数据类型对象包装类特点:用于在基本数据和字符串之间进行转换。
基本类型 | 包装类 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
将字符串转成基本类型
parseXXX(String s);其中XXX表示基本类型,参数为可以转成基本类型的字符串,如果字符串无法转成基本类型,将会发生数字转换的问题 NumberFormatException
System.out.println(Integer.parseInt("123") + 2);
//打印结果为 125 其他类型同理
将基本数值转成字符串
- 基本类型直接与””相连接即可
34+"";
- 调用String的valueOf方法
String.valueOf(34);
- 调用包装类中的toString方法
Integer.toString(34);
基本类型和对象转换
使用int类型与Integer对象转换进行演示,其他基本类型转换方式相同。
- 基本数值---->包装对象
Integer i = new Integer(4);//使用构造函数函数
Integer ii = new Integer("4");//构造函数中可以传递一个数字字符
Integer iii = Integer.valueOf(4);//使用包装类中的valueOf方法
Integer iiii = Integer.valueOf("4");//使用包装类中的valueOf方法
- 包装对象---->基本数值
int num = i.intValue();
自动装箱拆箱
在需要的情况下,基本类型与包装类型可以通用。有些时候我们必须使用引用数据类型时,可以传入基本数据类型。
基本类型可以使用运算符直接进行计算,但是引用类型不可以。而基本类型包装类作为引用类型的一种却可以计算,原因在于,Java”偷偷地”自动地进行了对象向基本数据类型的转换。
相对应的,引用数据类型变量的值必须是new出来的内存空间地址值,而我们可以将一个基本类型的值赋值给一个基本类型包装类的引用。原因同样在于Java又”偷偷地”自动地进行了基本数据类型向对象的转换。
- 自动拆箱:对象转成基本数值
- 自动装箱:基本数值转成对象
Integer i = 4;//自动装箱。相当于Integer i = Integer.valueOf(4);
i = i + 5;//等号右边:将i对象转成基本数值(自动拆箱) i.intValue() + 5; 加法运算完成后,再次装箱,把基本数值转成对象。
- 自动装箱(byte常量池)细节的演示
当数值在byte范围之内时,进行自动装箱,不会新创建对象空间而是使用医来已有的空间。
Integer a = new Integer(3);
Integer b = new Integer(3);
System.out.println(a==b);//false
System.out.println(a.equals(b));//true
System.out.println("---------------------");
Integer x = 127;
Integer y = 127;
//在jdk1.5自动装箱时,如果数值在byte范围之内,不会新创建对象空间而是使用原来已有的空间。
System.out.println(x==y); //true
System.out.println(x.equals(y)); //true
System类
在API中System类介绍的比较简单,我们给出定义,System中代表程序所在系统,提供了对应的一些系统属性信息,和系统操作。
System类不能手动创建对象,因为构造方法被private修饰,阻止外界创建对象。System类中的都是static方法,类名访问即可。在JDK中,有许多这样的类。
Modifier and Type | Method and Description |
---|---|
static void |
arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
将指定源数组中的数组从指定位置复制到目标数组的指定位置。
|
static String |
clearProperty(String key)
删除指定键指定的系统属性。
|
static Console |
console()
返回与当前Java虚拟机关联的唯一的 Console 对象(如果有)。
|
static long |
currentTimeMillis()
返回当前时间(以毫秒为单位)。
|
static void |
exit(int status)
终止当前运行的Java虚拟机。
|
static void |
gc()
运行垃圾回收器。
|
static Map |
getenv()
返回当前系统环境的不可修改的字符串映射视图。
|
static String |
getenv(String name)
获取指定环境变量的值。
|
static Properties |
getProperties()
确定当前的系统属性。
|
static String |
getProperty(String key)
获取指定键指示的系统属性。
|
static String |
getProperty(String key, String def)
获取指定键指示的系统属性。
|
static SecurityManager |
getSecurityManager()
获取系统安全界面。
|
static int |
identityHashCode(Object x)
返回与默认方法hashCode()返回的给定对象相同的哈希码,无论给定对象的类是否覆盖了hashCode()。
|
static Channel |
inheritedChannel()
返回从创建此Java虚拟机的实体继承的通道。
|
static String |
lineSeparator()
返回与系统相关的行分隔符字符串。
|
static void |
load(String filename)
加载由filename参数指定的本机库。
|
static void |
loadLibrary(String libname)
加载
libname 参数指定的本机库。
|
static String |
mapLibraryName(String libname)
将库名称映射到表示本地库的平台特定字符串。
|
static long |
nanoTime()
以纳秒为单位返回正在运行的Java虚拟机的高分辨率时间源的当前值。
|
static void |
runFinalization()
运行任何对象等待定稿的最终化方法。
|
static void |
runFinalizersOnExit(boolean value)
已弃用
这种方法本质上是不安全的。
它可能导致在活动对象上调用finalizer,而其他线程同时操作这些对象,导致不稳定的行为或死锁。
|
static void |
setErr(PrintStream err)
重新分配“标准”错误输出流。
|
static void |
setIn(InputStream in)
重新分配“标准”输入流。
|
static void |
setOut(PrintStream out)
重新分配“标准”输出流。
|
static void |
setProperties(Properties props)
将系统属性设置为
Properties 参数。
|
static String |
setProperty(String key, String value)
设置由指定键指示的系统属性。
|
static void |
setSecurityManager(SecurityManager s)
设置系统安全性。
|
currentTimeMillis()方法
获取当前系统时间与1970年01月01日00:00点之间的毫秒差值
exit()方法
用来结束正在运行的Java程序。参数传入一个数字即可。通常传入0记为正常状态,其他为异常状态
gc()方法
用来运行JVM中的垃圾回收器,完成内存中垃圾的清除
getProperty()方法
用来获取指定键(字符串名称)中所记录的系统属性信息
arraycopy()方法
用来实现将源数组部分元素复制到目标数组的指定位置
Math类
Math 类是包含用于执行基本数学运算的方法的数学工具类,如初等指数、对数、平方根和三角函数。
类似这样的工具类,其所有方法均为静态方法,并且一般不会创建对象。如System类
什么是工具类 :能够完成一系列功能的类,在使用它们时,不用创建对象,该类中方法为静态方法
abs()方法
结果都为正数
double d1 = Math.abs(-5); // d1的值为5
double d2 = Math.abs(5); // d2的值为5
ceil()方法
结果为比参数值大的最小整数的double值
double d1 = Math.ceil(3.3); //d1的值为 4.0
double d2 = Math.ceil(-3.3); //d2的值为 -3.0
double d3 = Math.ceil(5.1); // d3的值为 6.0
floor()方法
结果为比参数值小的最大整数的double值
double d1 = Math.floor(3.3); //d1的值为3.0
double d2 = Math.floor(-3.3); //d2的值为-4.0
double d3 = Math.floor(5.1); //d3的值为 5.0
max()方法
返回两个参数值中较大的值
double d1 = Math.max(3.3, 5.5); //d1的值为5.5
double d2 = Math.max(-3.3, -5.5); //d2的值为-3.3
min()方法
返回两个参数值中较小的值
double d1 = Math.min(3.3, 5.5); //d1的值为3.3
double d2 = Math.max(-3.3, -5.5); //d2的值为-5.5
pow()方法
返回第一个参数的第二个参数次幂的值
double d1 = Math.pow(2.0, 3.0); //d1的值为 8.0
double d2 = Math.pow(3.0, 3.0); //d2的值为27.0
round()方法
返回参数值四舍五入的结果
double d1 = Math.round(5.5); //d1的值为6.0
double d2 = Math.round(5.4); //d2的值为5.0
random()方法
产生一个大于等于0.0且小于1.0的double小数
double d1 = Math.random();
0 条评论