转载出处:http://blog.csdn.net/qaz13177_58_/article/details/6734876
基本数据类型:byte,int, short, long, boolean,char, float,double等
基本数据类型 | 包装类 |
byte | Byte |
boolean | Boolean |
short | Short |
char | Character |
int | Integer |
long | Long |
float | Float |
double | Double |
基本类型(primitive type)
不用new来创建变量,而是创建一个并非是“引用”的“自动”变量。这个变量拥有它的“值”,并置于堆
栈中,因此更加高效。要确定每种基本类型所占存储空间的大小。
基本类型 大小 最小值 最大值 包装器类型
boolean - - - Boolean
char 6bit Unicode 0 Unic ode 2(16)-1 Character
byte 8bit -128 +127 Byte
short 16bit -2(15) 2(15)-1 Short
int 32bit -2(31) 2(31)-1 Integer
long 64bit -2(63) 2(63)-1 Long
float 32bit IEEE754 IEEE754 Float
double 64bit IEEE754 IEEE754 Double
void - - - Void
Java整型
int | 4字节(32位) | -2147483648 ~ 2147483647 (正好超过20亿) |
short | 2字节(16位) | -32768 ~ 32767 |
long | 8字节(64位) | -9223372036854775808 ~ 9223372036854774807 |
byte | 1字节(8位) | -128 ~ 127 |
浮点类型
float | 4字节(32位) | 大约±3.40282347E+38F (有效位数为6-7位) |
double | 8字节(64位) | 大约±1.79769313486231570E+308 (有效位数为15位) |
一些需要注意:
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
浮点数值不适合用于禁止出现舍入误差的金融计算中。例如System.out.println( 2.0 - 1.1);将打印0.899999999999999,而不是0.9。因为浮点数值采用二进制系统表示,而二进制无法精确表示分数1/10,就像十进制无法精确表示1/3一样。如果需要在数值计算中不含有舍入误差,就应该使用BigDecimal类。
一、 包装类(Wrapper Class)共同的方法
值得说明的是,java是可以直接处理基本类型的,但是在有些情况下我们需要将其作为对象来处理,这时就需要将其转化为包装类了.所有的包装类(Wrapper Class)都有共同的方法,他们是:
(1)带有基本值参数并创建包装类对象的构造函数.如可以利用Integer包装类创建对象,Integer obj=new Integer(145);
(2)带有字符串参数并创建包装类对象的构造函数.如new Integer("-45.36");
(3)可生成对象基本值的typeValue方法,如obj.intValue();
(4)将字符串转换为基本值的 parseType方法,如Integer.parseInt(args[0]);
(5)生成哈稀表代码的hashCode方法,如obj.hasCode();
(6)对同一个类的两个对象进行比较的equals()方法,如obj1.eauqls(obj2);
(7)生成字符串表示法的toString()方法,如obj.toString().
转换关系:
基本类型------>包装器类
Integer obj=new Integer(145);
包装器类------>基本类型
int num=obj.intValue();
字符串------>包装器类
Integer obj=new Integer("-45.36");
包装器类------>字符串包装器类
String str=obj.toString();
字符串------>基本类型
int num=Integer.parseInt("-45.36");
基本类型------>字符串包装器类
String str=String.valueOf(5);
在一定的场合,运用java包装类来解决问题,能大大提高编程效率.
二、JDK1.5的新特性:自动装包/拆包(Autoboxing/unboxing)
自动装包/拆包大大方便了基本类型数据和它们包装类地使用。
自动装包:基本类型自动转为包装类.(int >> Integer)
自动拆包:包装类自动转为基本类型.(Integer >> int)
在JDK1.5之前,我们总是对集合不能存放基本类型而耿耿于怀,现在自动转换机制
解决了我们的问题。
int a = 3;
Collection c = new ArrayList();
c.add(a);//自动转换成Integer.
Integer b = new Integer(2);
c.add(b + 2);
这里Integer先自动转换为int进行加法运算,然后int再次转换为Integer.
三、举例
由于八个包装类的使用比较类似,下面以最常用的Integer类为例子介绍包装类的实际使用。
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”。
另外一个toString方法则实现将int值转换为特定进制的字符串:
public static int parseInt(String s, int radix)
使用示例代码如下:
int m = 20;
String s = Integer.toString(m);
则字符串s的值是”14”。
其实,JDK自从1.5(5.0)版本以后,就引入了自动拆装箱的语法,也就是在进行基本数据类型和对应的包装类转换时,系统将自动进行,这将大大方便程序员的代码书写。使用示例代码如下:
//int类型会自动转换为Integer类型
int m = 12;
Integer in = m;
//Integer类型会自动转换为int类型
int n = in;
所以在实际使用时的类型转换将变得很简单,系统将自动实现对应的转换。