Java基本数据类型与包装类型(转)

基本数据类型的包装类

为什么需要包装类?

Java并不是纯面向对象的语言。Java语言是一个面向对象的语言,但是Java的基本数据类型却不是面向对象的。但是我们在实际使用中经常需要将基本数据转化成对象,便于操作。比如:集合的操作中,这是,我们就需要将基本类型数据转化为对象。

包装类均位于java.lang包,使用时不需要导入,系统自动导入。Java中的8个包装类分别是:Byte,Short,Integer,Long,Float,Double,Character,Boolean它们的使用方式都是一样的,可以实现原生数据类型与包装类型的双向转换。

包装类和基本数据类型的对象关系:

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

如何使用包装类?

包装类的作用:

  • 提供:字符串、基本数据类型、对象之间互相转化的方式!
  • 包含每种基本数据类型的相关属性,如:最大值、最小值等

由于八个包装类的使用比较类似,下面以最常用的Integer类为例子介绍包装类的实际使用。Integer类继承Number父类。

1、实现int和Integer类之间的转换(该过程中使用了自动装箱和自动拆箱的原理)

在实际转换时,使用Integer类的构造方法和Integer类内部的intValue方法实现这些类型之间的相互转换,实现的代码如下:

int n = 10;
Integer in = new Integer(100);
//将int类型转换为Integer类型
Integer in1 = new Integer(n);
//将Integer类型的对象转换为int类型
int m = in.intValue();

2、Integer类内部的常用方法

在Integer类内部包含了一些和int操作有关的方法,下面介绍一些比较常用的方法:

a、parseInt方法

public static int parseInt(String s)

该方法的作用是将数字字符串转换为int数值。在以后的界面编程中,将字符串转换为对应的int数字是一种比较常见的操作。使用示例如下:

String s = “123”;
int n = Integer.parseInt(s);

则int变量n的值是123,该方法实际上实现了字符串和int之间的转换,如果字符串都包含的不是都是数字字符,则程序执行将出现异常。

另外一个parseInt方法:

public static int parseInt(String s, int radix)

则实现将字符串按照参数radix指定的进制转换为int,使用示例如下:

//将字符串”120”按照十进制转换为int,则结果为120
int n = Integer.parseInt(“120”,10);
//将字符串”12”按照十六进制转换为int,则结果为18
int n = Integer.parseInt(“12”,16);
//将字符串”ff”按照十六进制转换为int,则结果为255
int n = Integer.parseInt(“ff”,16);

这样可以实现更灵活的转换。

b、toString方法

public static String toString(int i)

该方法的作用是将int类型转换为对应的String类型。

使用示例代码如下:

int m = 1000;
String s = Integer.toString(m);
//则字符串s的值是”1000”。

在进行包装类与基本数据类型之间进行数值之间的转化时,我们经常使用的自动装箱和自动拆箱。这是JDK5.0的新增的特性。

自动装箱和自动拆箱(auto-boxing & auto-unboxing)

JDK5.0的一个新特性是自动装箱和自动拆箱。

自动装箱

  • 基本类型就自动地封装到与它相似类型的包装中,如:Integer i = 100;
  • 本质上是,编译器编译时自动添加:Integer i = new Integer(100);

自动拆箱

  • 包装类对象自动转换成基本数据类型。如:int a = new Integer(100);
  • 本质是上,编译器编译时自动添加:int a = new Integer(100).intValue();

在Integer类中自动装箱和自动拆箱问题中遇到的问题:

Integer  d = 1234;
Integer  d2 = 1234;

System.out.println(d==d2);
System.out.println(d.equals(d2));

System.out.println("###################");
Integer d3 = -100;    // [-128,127]之间的数,仍然当做基本数据类型来处理。
Integer d4 = -100;
System.out.println(d3==d4);
System.out.println(d3.equals(d4));

显示结果:

false
true
###################
true
true

当两个数都是100的时候==判断相等,当两个数都是200的时候判断不相等。

原因:查看内部实现代码可知,Integer类有一个缓存问题,它会缓存-128~127之间的整数。也就是说如果将-128~127之间的数值赋值给Integer类对象,在比较两个对象(d3==d4)时比较的是两个对象的数值。超过这个范围比较的是对象的内存地址。

参考:

http://www.mamicode.com/info-detail-1015549.html

http://www.jobui.com/mianshiti/it/java/7088/

http://cakin24.iteye.com/blog/2326545

http://lib.csdn.net/article/javase/2159(以上内容转自此篇文章)

http://www.cnblogs.com/mengdd/archive/2013/01/21/2869921.html

http://www.jianshu.com/p/5d7c9b077771

http://www.cnblogs.com/huajiezh/p/5225637.html

http://www.cnblogs.com/xianzheng/p/5205968.html

时间: 2024-10-13 10:42:22

Java基本数据类型与包装类型(转)的相关文章

javascript类型系统之基本数据类型与包装类型

javascript的数据类型可以分为两种:原始类型和引用类型 原始类型也称为基本类型或简单类型,因为其占据空间固定,是简单的数据段,为了便于提升变量查询速度,将其存储在栈(stack)中(按值访问).其中,javascript基本数据类型包括Undefined.Null.Boolean.Number和String五种 引用类型由于其值的大小会改变,所以不能将其存放在栈中,否则会降低变量查询速度,因此其存储在堆(heap)中,存储在变量处的值是一个指针,指向存储对象的内存处(按址访问) [注意]

java 基本数据类型及自动类型提升

1.Java的8种基本数据类型及其所占空间大小: boolean  8bit/1byte byte      8bit/1byte char      16bit/2byte short     16bit/2byte float      32bit/4byte int        32bit/4byte long      64bit/8byte double  64bit/8byte 2.Java自动类型转换 1)两种类型是彼此兼容的 2)转换的目的类型占得空间范围一定要大于转化的源类型

基本数据类型,包装类型,String类型数据之间的转换

java中所有的类都从java.lang.Object类派生而来,在java语言中,除基本数据类型以外,基本数据类型有java类库体统了包装类:Integer类保存整形变量,Boolean类保存布尔变量,Float类保存单精度变量, 基本数据类型与包装类.String类的互相转换 基本数据类型→包装类,调用包装类构造 int a = 10; Integer b = new Integer(a); 包装类→基本数据类型,调用包装类对象的**value(),Integer b = new Integ

java中有了基本类型为什么还要有包装类型?

Java中基本数据类型与包装类型有: 为什么存在这两种类型呢? 我们都知道在Java语言中,new一个对象存储在堆里,我们通过栈中的引用来使用这些对象:但是对于经常用到的一系列类型如int,如果我们用new将其存储在堆里就不是很有效——特别是简单的小的变量.所以就出现了基本类型,同C++一样,Java采用了相似的做法,对于这些类型不是用new关键字来创建,而是直接将变量的值存储在栈中,因此更加高效. 有了基本类型为什么还要有包装类型呢? 我们知道Java是一个面相对象的编程语言,基本类型并不具有

Java基础知识(JAVA基本数据类型包装类)

基本数据类型的包装类 为什么需要包装类? Java并不是纯面向对象的语言.Java语言是一个面向对象的语言,但是Java的基本数据类型却不是面向对象的.但是我们在实际使用中经常需要将基本数据转化成对象,便于操作.比如:集合的操作中,这是,我们就需要将基本类型数据转化为对象. 包装类均位于java.lang包,使用时不需要导入,系统自动导入.Java中的8个包装类分别是:Byte,Short,Integer,Long,Float,Double,Character,Boolean它们的使用方式都是一

JAVA的数据类型

JAVA的数据类型:基本类型: 四类:整型:byte(1字节) ,short(2字节), int(4字节), long(8字节) (整数类型) 浮点型: float(4字节)  ,double(8字节) (小数类型) 字符型: char(2字节) 布尔型: boolean(不确定) 引用类型: 类:class 接口:interface

Java基本数据类型知识总结

Java基本数据类型一览表 原生类型 占位数 是否有符号位 最小值 最大值 默认值 包装类 备注 boolean 1 无 -- -- false Boolean boolean类型是孤独的皇后,她无法和其他类型转换 byte 8 有 -2^7=-128=Byte.MIN_VALUE 2^7-1=127=Byte.MAX_VALUE 0 Byte IO流中经常使用 char 16 无 '\u0000'=0=Character.MIN_VALUE '\uFFFF'=2^15*2-1=65535=Ch

Java连载76-基础数据类型包装类型及其方法简介

一.java中八种基本数据类型对应的包装类型 基本数据类型      包装类型 byte                    java.lang.Byte short                   java.lang.Short int                      java.lang.Integer long                    java.lang.Long float                    java.lang.Float double  

Java笔记10-Object包装类型字符串

提纲: 1.java.lang.0bject中常用方法介绍 2.基本类型对应的包装类型的介绍 以及基本类型和包装类型之间的相互转换 3.java.lang.String 字符串处理类 java.lang.StringBuilder ->包装类型中的方法的使用 ->字符串当中的方法的使用 ->基本类型 包装类型以及字符串还有StringBuilder 之间的相互转换---------------------------------------------------------------