Java有8种基本数据类型,为什么又要出现对应的8种包装类:

1、Java的8种基本数据类型不支持面向对象编程机制

2、8种基本数据类型不具备“对象”的特性:没有成员变量、方法可供调用

3、例如:某个方法需要Object类型的参数,但实际需要的却是2、3这种值,只靠基本的数据类型无法转换成Object参数传递过去

4、为解决8种基本数据类型不能当成Object类型使用的问题,Java提供了包装类的概念:

8种基本数据类型与对应的包装类:

byte         ------------------------>      Byte

short       ------------------------->     Short

int           ------------------------->     Integer

long        ------------------------->     Long

char        ------------------------->     Character

float        ------------------------->     Float

double    ------------------------->     Double

boolean  ------------------------->    Boolean

5、基本类型与包装类之间的转换(JDK1.5之前):

  5.1、通过包装类对应的构造器实现

  5.2、通过传入一些字符串参数,来构建包装类对象,如:

    Integer a = new Integer("5.5");

  5.3、如果想获得包装类对象中包装的基本类型变量,可以用包装类提供的.xxxValue()方法

代码示例:

public class WrapperClass{
public static void main(String[] args){
//-构造器方法定义Integer包装类a,并赋值
Integer a=new Integer("5");
System.out.println(a); //-构造器方法定义Double包装类b,并赋值
Double b=new Double("5.5");
System.out.println(b); //-通过包装类.xxxValue()方法,从包装类对象中获取基本类变量
int c=a.intValue();
System.out.println(c); double d=b.doubleValue();
System.out.println(d);
}
}

运行结果:

6、基本类型与包装类之间的转换(JDK1.5之后):

  6.1、自动装箱(Autoboxing):把一个基本类型的变量,直接赋值给对应的包装类变量,或者赋值给Object变量(Object是所有类的父类,子类对象可以直接赋给父类变量----Java的向上自动转型特性)如:

    Integer i=3;或Object j=4;

  6.2、自动拆箱(AutoUnboxing):把一个包装类变量,直接赋值给一个基本类型的变量,如:

    int a=i;

    注意:int b=j;编译会报错,原因是:Java有向上自动转型特性,但不能自动向下转型,想要转要加强制转换,如:

    int b = (Integer)j;

代码示例:

public class AutoBoxingUnboxing{
public static void main(String[] args){
//-自动装箱
Integer a=3;
//-自动拆箱
int b=a; //-直接赋值给Object类型的变量,利用了Java的向上自动转型特性
Object o=true;
if(o instanceof Boolean){
//-Object类型不能直接赋值给Boolean类型,Java不能自动向下转型,如下代码会报错
//Boolean d=o;
//-想向下转型可以用强制转换方法,如下代码
Boolean c=(Boolean)o;
System.out.println(c);
}
}
}

Java的8种包装类:Wrapper Class的更多相关文章

  1. Java的八种基本数据类型及其包装类

    Java有八种基本数据类型,所谓基本类型就是说存储时仅存在栈中,那么与之相对就是引用类型,引用类型既存在栈里又存在堆里,栈内存放堆内地址. 八种基本类型分别为byte short int long f ...

  2. Java基础——基本类型和包装类、基本类型和字符串之间的转换

    基本类型和包装类之间的转换 基本类型和包装类之间经常需要互相转换,以 Integer 为例(其他几个包装类的操作雷同哦): 在 JDK1.5 引入自动装箱和拆箱的机制后,包装类和基本类型之间的转换就更 ...

  3. java的五种数据类型解析

    不知道大家对java的简单数据类型是否了解,下面针对Java的五种类型简单数据类型表示数字和字符,进行详细的讲解和分析. 一.简单数据类型初始化 在Java语言中,简单数据类型作为类的成员变量声明时自 ...

  4. java 8增强的包装类

    ---恢复内容开始--- 1java为8个类型提供了对应的包装类.因为这8个类型并不是类或者对象,他们原本是不应该存在在java里的(这里说的只是原本),这里要强调的是,java允许把基本类型的值直接 ...

  5. JAVA:23种设计模式详解(转)2

    我们接着讨论设计模式,上篇文章我讲完了5种创建型模式,这章开始,我将讲下7种结构型模式:适配器模式.装饰模式.代理模式.外观模式.桥接模式.组合模式.享元模式.其中对象的适配器模式是各种模式的起源,我 ...

  6. java中两种类型变量

    Java中有两种类型的变量,一种是对象类型,另一种是基础类型(primitive type). 对象类型普遍采用引用的方式,比如 List a = new ArrayList(); List b = ...

  7. Java实现23种设计模式

    一.设计模式的分类 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接 ...

  8. Java中几种常用数据类型之间转换的方法

    Java中几种常用的数据类型之间转换方法: 1. short-->int 转换 exp: short shortvar=0; int intvar=0; shortvar= (short) in ...

  9. java 中几种常用数据结构

    Java中有几种常用的数据结构,主要分为Collection和map两个主要接口(接口只提供方法,并不提供实现),而程序中最终使用的数据结构是继承自这些接口的数据结构类. 一.几个常用类的区别 1.A ...

随机推荐

  1. Android:手把手教你打造可缩放移动的ImageView(下)

    在上一篇Android:手把手教你打造可缩放移动的ImageView最后提出了一个注意点:当自定义的MatrixImageView如ViewPager.ListView等带有滑动效果的ViewGrou ...

  2. android studio 简介 (上)

    自从android官方宣布不再提供eclipse adt的更新之后,android studio的推进速度超乎想象得快,不管是github上的源码分享,还是stackoverflow上的问题提问,几乎 ...

  3. ie6 双边距问题

    div 设置float和margin margin在float方向上会变成设置值的两倍 解决方法,加上css _display:inline

  4. Selenium 错误处理之:stale element reference: element is not attached to the page document

    出现该错误的原因是页面在获取到DOM元素之后到引用元素之间页面进行了刷新,所以需要再次获取该DOM元素即可.

  5. sqlserver导入导出数据库结构及创建用户分配权限

    1.创建用户分配权限 https://www.cnblogs.com/jennyjiang-00/p/5803140.html 2.sqlserver2008导出表结构和表数据 导出表结构   htt ...

  6. jenkins坑—— shell 命令返回空导致构建失败

    今天用jenkins做CI遇到个坑,命令为:isSnapshot=`ls|grep isv-osp-service|grep -i snapshot` ls命令返回空的话,Jenkins构建就直接失败 ...

  7. 树莓派3用create_ap变身无线AP

    1.git clone https://github.com/oblique/create_ap.git2.cd create_ap3.sudo make install就这样安装好了4.接下来安装依 ...

  8. Haskell语言学习笔记(53)Data.Sequence

    Data.Sequence Prelude> import Data.Sequence as Seq Prelude Seq> :set -XOverloadedLists Prelude ...

  9. str和repr的区别(转)

    Python打印值的时候会保持该值在python代码中的状态,不是用户所希望看到的状态.而使用print打印值则不一样,print打印出来的值是用户所希望看到的状态. 例如: >>> ...

  10. python中'+'和'+='的区别(转)

    原文:python - If x is list, why does x += “ha” work, while x = x + “ha” throw an exception? 译文:在 pytho ...