然则java中有8个基础类 型:byte,short,int,long,float,double,char,boolean。它们是以值的情势存在于内存中,而不是对象。
它们不 是Object的子类,不能介入面向对象的开辟。在java1.5版本之前以下的代码是不能经由过程的.
package com.souvc.api;public class Test { public static void main(String[] args) { String str = "hello"; doSome(str);// 能够,由于String是Object的子类 int i = 1; // 递次编译不经由过程,缘由在于int不是Object的子类,不能运用多态性。 doSome(i); } public static void doSome(Object o) { // .... } }
题目涌现的缘由就是基础范例int没有继续关联,它不是Object的子类。所以,若想让基础范例以对象的情势存在,我们就需要定义一个类 Integer,然后用其实例来形貌一个基础范例int。
如许的优点在于,我们运用对象来形貌基础范例数据,而类又是继续自Object的。从而能够让基 本范例介入面向对象的开辟。幸亏,像Integer如许的类不需要我们定义,由于java已供应了8中基础范例对应的包装类。
注:java1.5版本后涌现了自动拆装箱特征,上述代码能够一般编译经由过程。自动拆装箱我们后面会详细形貌。
关于8个基础范例,java供应了他们响应的包装类:
基础范例 包装类
byte java.lang.Byte
short java.lang.Short
int java.lang.Integer
long java.lang.Long
float java.lang.Float
double java.lang.Double
char java.lang.Character
boolean java.lang.Boolean
个中除了Character与Boolean的父类是Object以外,其他的都是继续自:java.lang.Number
Number是一个笼统类。自身不能实例化。Number 的子类必需供应将示意的数值转换为 byte、double、float、int、long 和 short 的要领
比方:
abstract double doubleValue() 以double情势返回指定的数值
abstract int intValue() 以int情势返回指定的数值
abstract float floatValue() 以float情势返回指定的数值
剩下的笼统要领请参阅API文档:java.lang.Number 。
如今我们来进修一下如安在基础范例与包装类之间互相转换。
当我们需要将基础范例转换为包装类时,我们能够挪用包装类的一个静态要领valueOf():
Integer i = Integer.valueOf(1);
Double d = Double.valueOf(1.1);
当我们需要将包装类转换为基础范例时,我们能够运用包装类的要领xxxValue()要领(这里差别的包装类要领名不完全一致,但都是以Value末端):
Integer i = new Integer(1);int n = i.intValue();
Double d = new Double(1.1);double dn = d.doubleValue();
虽然我们能够经由过程上述的要领在基础范例与包装类之间互相转换。然则在现实编写代码时相对照样比较贫苦的。java在1.5版本后推出了一个新的特征:自动拆装箱。
以下代码在java1.4时编译不经由过程,然则在java1.5以后能够:
int i = new Integer(1);//能够自动将包装类转换为基础范例 自动拆箱
Integer in = 1;//能够自动将基础范例转换为包装类 自动装箱
那末java是怎样完成的自动拆装箱呢?
事实上JVM不支持该特征,自动拆装箱只是编译器在编译过程当中的"预处理"操纵。编译器在看到需要在包装类与基础范例之间转换时,会在编译为字节码时举行转变:
源代码中 编译后的字节码中
Integer a = 100 => Integer a = Integer.valueOf(100);
Integer b = 200 => Integer b = Integer.valueOf(200);
Integer c = a+b => Integer c = Integer.valueOf (a.intValue( ) + b.intValue( ));
double d = c => double d = c . doubleValue( );
2.1 Integer类——整数类 34
2.1.1 组织要领——Integer类的组织要领 34
2.1.2 常量——Integer类的常量 34
2.1.3 bitCount要领——猎取二进制补码中1的数目 34
2.1.4 byteValue要领——猎取byte范例的值 35
2.1.5 compareTo要领——比较整数 35
2.1.6 decode要领——字符串解码为int范例 35
2.1.7 doubleValue要领——返回double数值 36
2.1.8 equals要领——推断整数对象相称 36
2.1.9 floatValue要领——猎取float数值 37
2.1.10 getInteger要领——猎取整数的体系属性值 37
2.1.11 hashCode要领——生成整数的哈希码 39
2.1.12 highestOneBit要领——猎取整数二进制最高位1的索引 39
2.1.13 intValue()要领——猎取int值 40
2.1.14 longValue要领——猎取long值 40
2.1.15 lowestOneBit要领——猎取整数二进制最低位1的索引 41
2.1.16 parseInt要领——将字符串剖析为int值 41
2.1.17 reverse要领——反转整数二进制补码的位递次 43
2.1.18 reverseBytes要领——反转整数字节的递次 44
2.1.19 shortValue要领——猎取short值 44
2.1.20 signum要领——猎取整数标记 44
2.1.21 toBinaryString要领——生成整数的二进制字符串 45
2.1.22 toHexString要领——生成整数的十六进制字符串 45
2.1.23 toOctalString要领——生成整数的八进制字符串 46
2.1.24 toString要领——生成整数的十进制字符串 47
2.1.25 valueOf要领——建立Integer对象 49
2.2 Long类——长整型类 50
2.2.1 组织要领——Long类的组织要领 51
2.2.2 常量——Long类的常量 51
2.2.3 bitCount要领——猎取二进制补码中1的数目 51
2.2.4 byteValue要领——猎取byte值 51
2.2.5 compareTo要领——比较长整数 52
2.2.6 decode要领——字符串解码为long范例 52
2.2.7 doubleValue要领——返回double数值 53
2.2.8 equals要领——推断长整数对象相称 53
2.2.9 floatValue要领——猎取float数值 54
2.2.10 getLong要领——猎取长整数的体系属性值 54
2.2.11 hashCode要领——生生长整数的哈希码 56
2.2.12 highestOneBit要领——猎取长整数二进制最高位1的索引 56
2.2.13 intValue()要领——猎取int值 57
2.2.14 longValue要领——猎取long值 57
2.2.15 lowestOneBit要领——猎取长整数二进制最低位1的索引 57
2.2.16 parseLong要领——将字符串剖析为long值 58
2.2.17 reverse要领——反转长整数二进制补码的位递次 60
2.2.18 reverseBytes要领——反转长整数字节的递次 60
2.2.19 shortValue要领——猎取short值 61
2.2.20 signum要领——猎取长整数标记 61
2.2.21 toBinaryString要领——生生长整数的二进制字符串 61
2.2.22 toHexString要领——生生长整数的十六进制字符串 62
2.2.23 toOctalString要领——生生长整数的八进制字符串 62
2.2.24 toString要领——生生长整数的十进制字符串 63
2.2.25 valueOf要领——建立Long对象 65
2.3 Short类——短整型类 67
2.3.1 组织要领——Short类的组织要领 67
2.3.2 常量——Short类的常量 67
2.3.3 compareTo要领——比较短整数 67
2.3.4 decode要领——字符串解码为short范例 68
2.3.5 doubleValue要领——返回double数值 68
2.3.6 equals要领——推断短整数对象相称 68
2.3.7 floatValue要领——猎取float数值 69
2.3.8 hashCode要领——生成短整数的哈希码 69
2.3.9 intValue()要领——猎取int值 70
2.3.10 longValue要领——猎取long值 70
2.3.11 parseShort要领——将字符串剖析为short值 70
2.3.12 reverseBytes要领——反转短整数字节的递次 72
2.3.13 shortValue要领——猎取short值 72
2.3.14 toString要领——生成短整数的十进制字符串 73
2.3.15 valueOf要领——建立Short对象 73
2.4 Boolean类——布尔类 75
2.4.1 组织要领——Boolean类的组织要领 75
2.4.2 常量——Boolean类的常量 75
2.4.3 booleanValue要领——猎取boolean值 76
2.4.4 compareTo要领——比较布尔值 76
2.4.5 equals要领——推断相称 77
2.4.6 getBoolean要领——猎取布尔范例的体系属性值 77
2.4.7 hashCode要领——生成布尔对象的哈希码 78
2.4.8 parseBoolean要领——将字符串剖析成boolean值 78
2.4.9 toString要领——生成布尔值的字符串 78
2.4.10 valueOf要领——建立布尔对象 79
2.5 Byte类——字节对象 80
2.5.1 组织要领——Byte类的组织要领 80
2.5.2 常量——Byte类的常量 80
2.5.3 compareTo要领——比较字节对象 80
2.5.4 decode要领——将字符串解码为Byte值 81
2.5.5 doubleValue要领——猎取double值 82
2.5.6 equals要领——推断字节相称 82
2.5.7 floatValue要领——猎取float值 83
2.5.8 hashCode要领——生成字节对象的哈希码 83
2.5.9 intValue要领——猎取int值 83
2.5.10 longValue要领——猎取long值 83
2.5.11 parseByte要领——将字符串剖析为byte值 84
2.5.12 shortValue要领——猎取short值 85
2.5.13 toString要领——生成字节值的十进制字符串 85
2.5.14 valueOf要领——建立Byte对象 86
2.6 Character类——字符类 88
2.6.1 组织要领——Character类的组织要领 88
2.6.2 常量——Character类的常量 88
2.6.3 charCount要领——盘算指定字符代码点的数目 89
2.6.4 charValue要领——猎取char值 89
2.6.5 codePointAt要领——猎取字符数组元素的代码点 90
2.6.6 codePointBefore要领——猎取字符数组索引前一个元素的代码点 91
2.6.7 codePointCount要领——返回字符数组的子数组中代码点的数目 93
2.6.8 compareTo要领——比较字符对象 94
2.6.9 equals要领——推断字符对象相称 95
2.6.10 getNumericValue要领——返回字符示意的int值 95
2.6.11 getType要领——返回一个指导字符的通例种别的值 97
2.6.12 hashCode要领——生成字符对象的哈希码 97
2.6.13 isDefined要领——推断是不是为Unicode字符 98
2.6.14 isDigit要领——推断是不是为数字字符 98
2.6.15 isLetter要领——推断是不是为字母字符 99
2.6.16 isLowerCase要领——推断是不是为小写字符 100
2.6.17 isUpperCase要领——推断是不是为大写字符 100
2.6.18 toLowerCase要领——转换为小写字符 101
2.6.19 toUpperCase要领——转换为大写字符 101
2.7 Double——双精度数字类 102
2.7.1 组织要领——Double类的组织要领 102
2.7.2 常量——Double类的常量 102
2.7.3 byteValue要领——猎取byte值 102
2.7.4 compare要领——比较双精度数字对象 103
2.7.5 compareTo要领——比较两个Double对象 103
2.7.6 intValue要领——将此Double值以int情势返回 104
2.7.7 doubleToLongBits要领——返回指定浮点值的示意情势 104
2.7.8 doubleToRawLongBits要领——保存NaN值返回指定浮点值的示意情势 105
2.7.9 doubleValue要领——猎取double值 105
2.7.10 equals要领——推断Double对象是不是相称 106
2.7.11 floatValue要领——猎取float值 107
2.7.12 hashCode要领——生成Double 对象的哈希码 107
2.7.13 isInfinite要领——推断Double值的大小是不是是无穷大 107
2.7.14 isNaN要领——推断Double值是不是是一个非数字值 108
2.7.15 longBitsToDouble要领——返回给定位示意情势的double值 109
2.7.16 longValue要领——猎取long值 110
2.7.17 parseDouble要领——将字符串剖析为double值 110
2.7.18 shortValue要领——猎取short值 110
2.7.19 toHexString要领——生成双精度数字的十六进制字符串 111
2.7.20 toString要领——生成双精度数字的十进制字符串 112
2.7.21 valueOf要领——建立Double对象 112
2.8 Float——浮点类 113
2.8.1 组织要领——Float类的组织要领 113
2.8.2 常量——Float类的常量 114
2.8.3 byteValue要领——猎取byte值 114
2.8.4 compare要领——比较Float对象 114
2.8.5 compareTo要领——比较两个Float对象所示意的数值 115
2.8.6 doubleValue要领——猎取double值 115
2.8.7 equals要领——推断Double对象相称 115
2.8.8 floatToIntBits要领——返回浮点值的示意情势 116
2.8.9 floatToRawIntBits要领——保存非数字值返回指定浮点值的示意情势 117
2.8.10 floatValue要领——猎取float值 118
2.8.11 hashCode要领——返回Float对象的哈希码 118
2.8.12 intBitsToFloat要领——返回指定位示意情势的float值 118
2.8.13 intValue要领——猎取int值 119
2.8.14 isInfinite要领——推断float值的大小是不是是无穷大 120
2.8.15 isNaN要领——推断Float值是不是是一个非数字值 120
2.8.16 longValue要领——猎取long值 121
2.8.17 parseFloat要领——将字符串剖析成float值 121
2.8.18 shortValue要领——猎取short值 122
2.8.19 toHexString要领——生成浮点数的十六进制字符串 122
2.8.20 toString要领——生成浮点数的十进制字符串 123
2.8.21 valueOf要领——建立浮点数对象 124
以上就是包装类的内容,更多相关内容请关注ki4网(www.ki4.cn)!