JAVA:包装类

包装类:

 Java中的包装类包括:Integer、Long、Short、Byte、Character、Double、Float、Boolean、BigInteger、BigDecimal.其中BigInteger、BigDecimal没有相对应的基本类型,主要用于高精度的运算,BigInteger支持任意精度的整数,BigDecimal支持任意精度带小数点的运算.

装箱和拆箱

  • 装箱:把基本数据类型转换成包装类
    -自动装箱
    -手动装箱
  • 拆箱:把包装类转换成基本数据类型
    -自动拆箱
    -手动拆箱

基本数据类型与包装类型的异同:

1、在Java中,一切皆对象,但八大基本类型却不是对象.
2、声明方式的不同,基本类型无需通过new关键子来创建,而包装类型需要new关键字.
3、存储方式及位置的不同,基本类型是直接存储变量的值保持在栈中能高效的存取,包装类型需要通过引用指向实例,具体的实例保存在堆中.
4、初始值的不同,包装类型的初始值为null,基本类型的初始值视具体的类型而定,比如int类型的初始值为0,boolean类型为false.
5、使用方式的不同,比如与集合合作使用时只能使用包装类型.
6、对应关系

基本类型 对应的包装类
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean

常见的方法

一、Integer

 java.lang包中的Integer、Long类和Short类、分别将基本类型int、long和short封装成一个类.由于这些类都是Number的子类,区别就是封装不同的数据类型,其包含的方法基本相同,下面以Integer类为例介绍:
  Integer类在对象中包装了一个基本类型int的值.该类的对象包含一个int类型的字段.此外,该类提供了多个方法,能在int类和String类型之间相互转换,同时还提供了处理int类型时非常有用的其他一些常量和方法.
1、构造方法有两种:
a)以int型变量作为参数创建Integer对象,实例代码如下:

      Integer number = new Integer(7);

b)以String型变量作为参数创建Integer对象,实例代码如下:

      Integer number = new Integer("7");

2、Integer常用方法:

方法 返回值 功能描述
byteValue() byte 以byte类型返回该Integer的值
compareTo(Integer anotherInteger) int 在数字上比较两个Integer对象.如果这两个值相等,则放回0;如果调用对象的数值小于anotherInter的数值,则返回负值;如果调用对象的数值大于anotherInteger的数值,则返回正值
equals(Object IntegerObj) boolean 比较此对象与指定对象是否相等
intValue() int 以int型返回此Integer对象
shortValue() short 以short型返回此Integer对象
toString() String 返回一个表示该Integer值得String对象
valueOf(String str) Integer 返回保存指定的String值得Integer对象
parseInt(String str) int 返回包含在由str指定的字符串中的数字的等价整数值

3、常用的常量:
a) MAX_VALUE:表示int型可取的最大值
b)MIN_VALUE:表示int型可取的最小值
c)SIZE:表示以二进制补码形式表示int值得位数
d)TYPE:表示基本类型Class实例

    // 实例如:
    int maxint = Integer.MAX_VALUE;
    int minint = Integer.MIN_VALUE;
    int intsize = Integer.SIZE;
    System.out.println("int类型可取的最大值:" + maxint);
    System.out.println("int类型可取的最小值:" + minint);
    System.out.println("int类型的二进制位数:" + intsize);

输出结果:
int 类型可取的最大值2147483647
int类型可取的最小值-2147483648
int类型的二进制位数32

二、Boolean

 Boolean类将基本类型为boolean的值包装在一个对象中.一个Boolean类型的对象只包含一个类型为boolean的字段.此外、此类还为boolean和String的相互转换提供了许多方法,并提供了处理boolean时非常有用的其他一些常量的方法.
1、构造方法:

   // 创建一个表示value参数的Boolean对象,
  Boolean b = new Boolean(true);
  // 以String变量作为参数,创建Boolean对象.此时,如果传入的字符串部位null,且忽略大小写后的内容等于"true",则生成 
  Boolean对象值为true,反之为false.
  Boolean b1 = new Boolean("ok");
  System.out.println(b1);
  Boolean b2 = new Boolean("TRUE");
  System.out.println(b2);

输出结果为:
false
true
2、Boolean常用方法

方法 返回值 功能描述
booleanValue() boolean 将Boolean对象的值以对应的boolean值返回
equals(Object obj) boolean 判断调用该方法的对象与obj是否相同等,当且仅当参数不是null,而且与调用该方法的对象一样都表示同一个boolean值得Boolean对象时,才返回true
parseBoolean(String s) boolean 将字符串参数解析为boolean值
toString() String 返回该boolean值得String对象
valueOf(String s) boolean 返回一个用指定的字符串表示值得boolean值

 其中booleanValue()的功能是:将booleanValue对象的值以对应的boolean值返回.

  // 示例如:
  Boolean b1 = new Boolean("OK");
  Boolean b2 = new Boolean(false);
  System.out.println("b1:" + b1.booleanValue());
  System.out.println("b2:" + b2.booleanValue());

结果如图:
b1:false
b2:false
3、常用的常量:
a)TRUE:对应基值true的Boolean对象;
b)FALSR:对应基值false的Boolean对象;
c)TYPE:表示基本类型Class实例

三、Byte

 Byte类将基本类型为byte的值包装在一个对象中,一个byte类型的对象只包含一个类型为byte的对象.此外,该类还为byte和String之间相互转换提供方法,并提供了一些处理byte时非常有用的常量.
1、构造方法
Byte类提供了两种构造方法的重载形式来创建BYTE类对象:

      // a.Byte(byte value)通过这种方法创建的byte对象,克表示指定的byte值.
         byte mybyte = 45;
         Byte b = new Byte(mybyte);
    
      // b.Byte(String str)通过这种方法创建的byte对象,可表示String参数指定的byte值
         Byte mybyte = new Byte("12");

2、Byte常用方法

方法 返回值 功能描述
byteValue() byte 以一个byte值返回Byte对象
compareTo(Byte anotherByte) int 在数字上比较两个Byte对象
doubleValue() double 以一个double值返回此Byte的值
intValue() int 以一个int值返回此Byte的值
parseByte(String str) byte 将String型参数解析成等价的字节(byte)形式
toString() String 返回此Byte的值得String对象
valueOf(String str) Byte 返回一个保持指定String所输出的值得Byte对象
equals(Object obj) boolean 将此对象与指定对象比较,如果调用该方法的对象与obj相等,则放回true,否则返回false

3、常用的常量
a) MIN_VALUE:最小值
b)MAX_VALUE:最大值
c)SIZE:二进制
d)TYPE:表示基本类型byte的class实例

四、Character

 Character类在对象中包装一个基本类型为char的值.一个Character对象包含类型为char的单个字段.
1、构造方法 : Character(char value)
2、Character常用方法

方法 返回值 功能描述
charvalue() char 返回此Character对象的值
compareTo(CharacteranotherCharacter) int 根据数字比较两个Character对象,若这两个对象相等则放回0
equals(Object obj) Boolean 将调用该方法的对象与指定的对象相比较
toUpperCase(char ch) char 将字符参数转换为大写
toLowerCase(char ch) char 将字符参数转换为小写
toString () String 返回一个表示指定char值得String对象
charValue() char 返回此Character对象的值
isUpperCase(char ch) boolean 判断指定字符是否是大写字符
isLowerCase(char ch) boolean 判断指定字符是否是小写字符
    // 示例如下
    Character mychar1 = new Character('A');
    Character mychar2 = new Character('a');
    System.out.println(mychar1 + "是大写字母吗?" + Character.isUpperCase(mychar1));
    System.out.println(mychar2 + "是小写字母吗?" + Character.isLowerCase(mychar2));

结果如下:
A是大写字母吗true
a是小写字母吗true

五、Double

 Double和Float包装类是对double、float基本类型的封装,他们都是Number类的子类,又都是对小数进行操作,所以常用基本方法相同,Double类在对象中包装一个基本类型为double的值,每个double类都包含一个double类型的字段.
1、构造方法,Double提供了两种构造方法来获得Double类对象
a)Double(double value):基于double参数创建Double类对象;
b)Double(String str):构造一个新分配的Double对象,表示用字符串表示的Double类型的浮点值.
2、Double常用方法

方法 返回值 功能描述
byteValue() byte 以byte形式返回Double对象值(通过强制转换)
compareTo(Double d) int 对两个Double对象进行数值比较.如果两个值相等,则返回0;如果调用对象的数值小于d的数值,则返回负值;如果调用对象的数值大于d的数值,则返回正值
equals(Obj) boolean 将此对象与指定的对象相比较
intValue() int 以int形式返回Double值
isNaN() boolean 如果此double值是非数字(NaN)值,则返回true;否则返回false
toString() string 返回此Double对象的字符串表示形式
valueOf(String str) double 返回保存参数字符串str表示的double值得Double对象
doubleValue() double 以double形式返回此Double对象
longValue() long 以long形式返回double的值(通过强化转换为long类型)

六、Number

 抽象类Number是父类,Number的子类必须提供将表示的数值转换成byte、double/float/long/int/short的方法.Number类的方法被Number的各子类所实现,常用方法如下:

方法 返回值 功能描述
byteValue() byte 以byte形式返回指定的数值
intValue() int 以int形式返回指定的数值
floatValue() float 以float形式返回指定的数值
shortValue() short 以short形式返回指定的数值
longValue() long 以long形式返回指定的数值
doubleValue() double 以double形式返回指定的数值
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,039评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,223评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,916评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,009评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,030评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,011评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,934评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,754评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,202评论 1 309
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,433评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,590评论 1 346
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,321评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,917评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,568评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,738评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,583评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,482评论 2 352