java包装类及自动拆装箱和自动拆箱
2016-07-24 13:19
405 查看
Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的,为了让基本数据类型也具备对象的特性, Java 为每个基本数据类型都提供了一个包装类
,这样我们就可以像操作对象那样来操作基本数据类型。包装类均位于java.lang包,对应如下表:
![](http://img.blog.csdn.net/20160724132042750?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
图中可以看出 除了integer和charcter类,其他类和基本数据类型差不多。
包装类主要用途
a、作为和基本数据类型对应的类类型存在,方便涉及到对象的操作。
b、包含每种基本数据类型的相关属性如最大值(MAX_VALUE)、最小值(MIN_VALUE)、二进制补码表示位数(SIZE)等,以及相关的操作方法。
包装类提供了2大类方法
1. 将本类型和其他基本类型进行转换的方法
2. 将字符串和本类型及包装类互相转换的方法
下面是integer包装类的实例:
integer包装类的构造方法
![](http://img.blog.csdn.net/20160724132313909?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
integer的常用方法
![](http://img.blog.csdn.net/20160724132354766?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
<span style="font-size:12px;">public class HelloWorld {
public static void main(String[] args) {
// 定义int类型变量,值为86
int score1 = 86;
// 创建Integer包装类对象,表示变量score1的值
Integer score2=new Integer(score1);
// 将Integer包装类转换为double类型
double score3=score2.doubleValue();
// 将Integer包装类转换为float类型
float score4=score2.floatValue();
// 将Integer包装类转换为int类型
int score5 =score2.intValue();
System.out.println("Integer包装类:" + score2);
System.out.println("double类型:" + score3);
System.out.println("float类型:" + score4);
System.out.println("int类型:" + score5);
//parseInt方法一
String s="123"; //字符串都是数字,否则出NumberFormatException
异常
int n = Integer.parseInt(s);
//parseInt方法二
//将字符串”120”按照十进制转换为int,则结果为120
int n = Integer.parseInt(“120”,10);
//将字符串”12”按照十六进制转换为int,则结果为18
int n = Integer.parseInt(“12”,16);
//toString方法 与parseInt方法类似
}
}</span>表着急 下面还有一点知识
在JDK1.5版本之后,引入了自动装箱和自动拆箱,极其方便了程序猿书写代码
自动装箱:基本类型自动转为包装类
自动拆箱:包装类转为基本类型
//int类型会自动转换为Integer类型
int m = 12;
Integer in = m;
//Integer类型会自动转换为int类型
int n = in;
还有一个有趣的例子
public static void main(String[] args)
{
Integer a1 = 200;
Integer a2 = 200;
if (a1 == a2)
{
System.out.println("a1 == a2");
}
else
{
System.out.println("a1 != a2");
}
}当两个数都是100的时候==判断相等,当两个数都是200的时候判断不相等。
原因:Integer类有一个缓存,它会缓存-128~127之间的整数。
当调用valueOf的时候,不会生成新的对象,而是从缓存中取出对象。这样可以提高性能。
使用构造方法的时候就会生成新的对象。
自动装箱、自动拆箱参考:
http://www.cnblogs.com/danne823/archive/2011/04/22/2025332.html http://www.importnew.com/15712.html http://blog.csdn.net/jackiehff/article/details/8509056
,这样我们就可以像操作对象那样来操作基本数据类型。包装类均位于java.lang包,对应如下表:
图中可以看出 除了integer和charcter类,其他类和基本数据类型差不多。
包装类主要用途
a、作为和基本数据类型对应的类类型存在,方便涉及到对象的操作。
b、包含每种基本数据类型的相关属性如最大值(MAX_VALUE)、最小值(MIN_VALUE)、二进制补码表示位数(SIZE)等,以及相关的操作方法。
包装类提供了2大类方法
1. 将本类型和其他基本类型进行转换的方法
2. 将字符串和本类型及包装类互相转换的方法
下面是integer包装类的实例:
integer包装类的构造方法
integer的常用方法
<span style="font-size:12px;">public class HelloWorld {
public static void main(String[] args) {
// 定义int类型变量,值为86
int score1 = 86;
// 创建Integer包装类对象,表示变量score1的值
Integer score2=new Integer(score1);
// 将Integer包装类转换为double类型
double score3=score2.doubleValue();
// 将Integer包装类转换为float类型
float score4=score2.floatValue();
// 将Integer包装类转换为int类型
int score5 =score2.intValue();
System.out.println("Integer包装类:" + score2);
System.out.println("double类型:" + score3);
System.out.println("float类型:" + score4);
System.out.println("int类型:" + score5);
//parseInt方法一
String s="123"; //字符串都是数字,否则出NumberFormatException
异常
int n = Integer.parseInt(s);
//parseInt方法二
//将字符串”120”按照十进制转换为int,则结果为120
int n = Integer.parseInt(“120”,10);
//将字符串”12”按照十六进制转换为int,则结果为18
int n = Integer.parseInt(“12”,16);
//toString方法 与parseInt方法类似
}
}</span>表着急 下面还有一点知识
在JDK1.5版本之后,引入了自动装箱和自动拆箱,极其方便了程序猿书写代码
自动装箱:基本类型自动转为包装类
自动拆箱:包装类转为基本类型
//int类型会自动转换为Integer类型
int m = 12;
Integer in = m;
//Integer类型会自动转换为int类型
int n = in;
还有一个有趣的例子
public static void main(String[] args)
{
Integer a1 = 200;
Integer a2 = 200;
if (a1 == a2)
{
System.out.println("a1 == a2");
}
else
{
System.out.println("a1 != a2");
}
}当两个数都是100的时候==判断相等,当两个数都是200的时候判断不相等。
原因:Integer类有一个缓存,它会缓存-128~127之间的整数。
当调用valueOf的时候,不会生成新的对象,而是从缓存中取出对象。这样可以提高性能。
使用构造方法的时候就会生成新的对象。
自动装箱、自动拆箱参考:
http://www.cnblogs.com/danne823/archive/2011/04/22/2025332.html http://www.importnew.com/15712.html http://blog.csdn.net/jackiehff/article/details/8509056
相关文章推荐
- Java的反射机制---动态调用对象的简单方法
- SpringBoot学习笔记(2) Spring Boot的一些配置
- java关键字static
- javaweb
- JAVA实践并查集
- javaweb
- File类的使用1
- java中数组的定义及使用方法(推荐)
- 转:java获取系统常量
- SpringBoot学习笔记(1) Spirng boot 初探
- SpringMvc ajax json 传值方式
- 从父类构造器调用子类覆盖方法看Java初始化过程
- Spring-12:通过注解的方式配置Bean
- Java单例模式与多线程
- 深入理解Java Servlet与Web容器之间的关系
- java DES加密解密源码
- Java集合框架(下)
- JDK 的 配置
- eclipse下maven项目的创建以及问题的解决
- java提高篇之关键字final