包装类基本常识
包装类均位于java.lang包,八种包装类和基本数据类型的对应关系如表:
在这八个类名中,除了Integer和Character类以外,其它六个类的类名和基本数据类型一致,只是类名的第一个字母大写而已。
Number类的子类
Number类的抽象方法
示例:
public class WrapperClassTest {
public static void main(String[] args) {
Integer i = new Integer(10);
Integer j = new Integer(50);
}
}
分析:
用途:
-
作为和基本数据类型对应的类型存在,方便涉及到对象的操作,如Object[]、集合等的操作。
-
包含每种基本数据类型的相关属性如最大值、最小值等,以及相关的操作方法(这些操作方法的作用是在基本数据类型、包装类对象、字符串之间提供相互之间的转化!)。
自动装箱和拆箱就是将基本数据类型和包装类之间进行自动的互相转换。
包装类的缓存
整型、char类型所对应的包装类,在自动装箱时,对于-128~127之间的值会进行缓存处理,其目的是提高效率。
缓存处理的原理为:如果数据在-128~127这个区间,那么在类加载时就已经为该区间的每个数值创建了对象,并将这256个对象存放到一个名为cache的数组中。每当自动装箱过程发生时(或者手动调用valueOf()时),就会先判断数据是否在该区间,如果在则直接获取数组中对应的包装类对象的引用,如果不在该区间,则会通过new调用包装类的构造方法来创建对象。
String类
String 类对象代表不可变的Unicode字符序列,因此我们可以将String对象称为“不可变对象”。 那什么叫做“不可变对象”呢?指的是对象内部的成员变量的值无法再改变。我们打开String类的源码,如图:
不可变和可变字符序列
1 .String:不可变字符序列。
2. StringBuffer:可变字符序列,并且线程安全,但是效率低。
3. StringBuilder:可变字符序列,线程不安全,但是效率高(一般用它)。
Math类
-
abs 绝对值
-
acos,asin,atan,cos,sin,tan 三角函数
-
sqrt 平方根
-
pow(double a, double b) a的b次幂
-
max(double a, double b) 取大值
-
min(double a, double b) 取小值
-
ceil(double a) 大于a的最小整数
-
floor(double a) 小于a的最大整数
-
random() 返回 0.0 到 1.0 的随机数
-
long round(double a) double型的数据a转换为long型(四舍五入)
-
toDegrees(double angrad) 弧度->角度
-
toRadians(double angdeg) 角度->弧度
File类
以pathname为路径创建File对象,如果pathname是相对路径,则默认的当前路径在系统属性user.dir中存储。