包装类

刚才接触过了Object类,可以发现Object类能够接收所有的引用数据类型(对象、数组、接口),于是这里面又出现了一个新的问题,就是数据类型分为基本类型和引用类型两类,那么基本数据类型该如何处理呢?

一. 包装类简介

所谓的包装类型指的就是将基本数据类型封装在一个类中,就好比如下的代码:

class MyInt {

private int num ;

public MyInt (num) {

this.num = num ;

}

public int intValue () {

return this.num ;

}

}

这个时候的MyInt实际上就是int数据类型的包装类,利用MyInt可以实现基本数据类型变为对象的需求。

范例:包装类的使用

class TestDemo {

public static void main(String args[]) {

Object obj = new MyInt(10) ;

MyInt temp = (MyInt) obj ;

System.out.println(temp.intValue() * 2) ;

}

}

结论:将基本数据类型包装为一个类对象的本质就在于方便的使用Object进行接收处理。Java中有8种基本数据类型,如果每种数据类型都按照以上的方式编写,那么会存在有如下问题:

①发现所有的开发中代码会重复;

②在进行数学计算的时候必须利用明确的方法将包装类中包装的基本类型数据取出后才可以进行操作。

所以Java为了方便用户的开发,专门提供了包装类的使用,而对于包装类提供有两种类型:

①对象型(Object直接子类):Boolean、Charactor(char);

②数值型(Number直接子类):Byte、Double、Short、Long、Integer(int)、Float;

说明:关于Number类

①Number类的定义:

public abstract class Number

extends Object

implements Serializable

②在Number类里面实际上定义有6个重要的方法:byteValue()、doubleValue()、floatValue()、intValue()、longValue()、shortValue()

二. 装箱与拆箱

在包装类与基本数据类型的处理之中存在有两类概念:

❤装箱:将基本数据类型变为包装类对象;

|-利用每一个包装类提供的构造方法实现装箱处理。

❤拆箱:将包装类中包装的基本数据类型取出;

|-利用Number类中提供的xxValue()方法;

范例:

class TestDemo {

public static void main(String args[]) {

Double num = new Double(10.1) ;

double x = num.doubleValue() ;

System.out.println(x * 2) ;

}

以上的操作采用的是手工的装箱与拆箱处理操作形式,而这种做法是在JDK1.5之前的做法,而从JDK1.5之后开始提供有自动装箱与自动拆箱的机制,最为重要的是,由于此类机制的存在,可以直接利用包装类的对象进行各种数学计算。

范例:自动装箱与自动拆箱处理

class TestDemo {

public static void main(String args[]) {

Integer x1 = 10 ;                // 自动装箱

System.out.println(++ x1 * 2) ;  // 自动拆箱

}

但是这个时候依然会存在有“==”和equals()问题

class TestDemo {

public static void main(String args[]) {

Integer num1 = 10 ;

Integer num2 = 10 ;

System.out.println(num1 == num2) ;

System.out.println(num1 == new Integer (10)) ;

System.out.println(num1.equals(new Integer (10))) ;

System.out.println() ;

}

选择:使用int还是Integer?

❤在接收数据的时候,使用的一定都是int,而保存数据的时候会使用Integer;

❤以后编写的简单Java类统一不要再去使用基本数据类型,全部更换为包装类。

三. 字符串与基本数据类型转换

以后如果要进行各种数据的输入一定都是字符串类型的接收。所以在开发之中就存在有一种需求,如何将字符串变为各个基本数据类型,这个时候就需要包装类支持了:

1. String变为int类型(Integer类):public static int parseInt(Strings)

2. String变为double类型(Double类):public static double parseDouble(Strings)

3. String变为boolean类型(Boolean类):public static boolean parseBoolean(Strings)

范例:

String str = "123" ;

int num = Integer.parseInt(str) ;  // 通过包装类中的方法将字符串变为基本数据类型

System.out.println(num * 2) ;

但是特别需要引起注意的是,如果在将字符串变为数字的时候,字符串的组成有非数字,那么转化就将出现错误(NumberFormatException),以后就因为这个异常,我们要写一堆的程序来回避它。

反过来,如果现在要想将基本数据类型变为字符串则有两种形式:

1. 任何的数据类型使用了“+”连接空白字符串就变为了字符串类型:

范例:String str = 100 + "" ;

该方法占用了堆内存,产生垃圾。

2. 使用String类中提供的一个valueOf()方法,这个方法可以进行转换,而且被重载了很多次:

范例:String str = String.valueOf(100) ;

总结:以后的开发一定会牵扯到字符串转其他基本数据类型的处理。

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

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,560评论 18 399
  • 导语 学完包装类就懂的情书。 主要内容 基本数据类型包装类的定义 数据的装箱与拆箱操作 数据类型的转换(核心) 具...
    一个有故事的程序员阅读 896评论 3 3
  • 基本数据类型的包装类 包装类基本知识 Java是面向对象的语言,但不是“纯面向对象”,基本数据类型就不是对象。但是...
    全栈JAVA笔记阅读 546评论 0 1
  • 大结局了,最后的画面是,这两个斗了一辈子,恨了一辈子,也彼此牵挂了一辈子的女人心平气和的坐在一个风景奇好的露天咖啡...
    coffee漫阅读 1,237评论 1 4
  • 刚注册简书,一进来便要求取个昵称,我就把QQ呀,微信呀的各种昵称轮番输一遍,结果都是已经被注册过了。那就在昵称上...
    哈哈可乐派阅读 969评论 0 0