文章目录

  • 为什么需要包装类?
  • Java提供的八种包装类
  • 装箱和拆箱
  • 整数型常量池
  • Integer中的常用方法
  • int 、Integer、String之间的相互转换

为什么需要包装类?

读以下程序:

public class IntegerTest01 {public static void dosome(Object obj){System.out.println(obj);}public static void main(String[] args) {}
}

如果我们想将一个基本数据类型传入dosome方法中,直接传是不行的,应为基本数据类型它不是类的对象,所以我们可以对这个基本数据类型进行包装,如下:

//自己模拟实现的一个包装类
public  MyInt {int value;public MyInt(int value) {this.value = value;}public MyInt(){}
}
public class IntegerTest01 {public static void dosome(Object obj){System.out.println(obj);}public static void main(String[] args) {//这里的MyInt是自己模拟实现的一个包装类MyInt a = new MyInt(100);dosome(a);}
}

通过以上程序我们可以知道,如果基本数据想要参与面向对象开发,那么就需要包装类。其实,八种基本数据结构的包装类Java已经帮我们实现了。

Java提供的八种包装类

         基本数据类型                   包装类型                  父类型-----------------------------------------------------------------------byte                            java.lang.Byte             Numbershort                           java.lang.Short            Numberint                             java.lang.Integer          Numberlong                            java.lang.Long             Numberfloat                           java.lang.Float            Numberdouble                          java.lang.Double           Numberboolean                         java.lang.Boolean          Objectchar                            java.lang.Character        Object

装箱和拆箱

装箱:基本数据类型向包装类型数据的转换。
拆箱:包装类型数据类型向基本数据类型的转换。
手动装箱和拆箱

//装箱   基本数据类型 -->  包装数据类型
//方法一(这个装箱方法已经过时):Integer b = new Integer(100);//方法二Integer c = Integer.valueOf(100);//拆箱      包装数据类型 --> 基本数据类型int i = b.intValue();

自动装箱和拆箱

//装箱
Integer x = 100;//将基本数据100转化包装类型数据//拆箱
int y = x;//将包装类型x转化为基本数据类型

整数型常量池

读以下程序,并判断程序的编译结果。

public class IntegerTest02 {public static void main(String[] args) {Integer a = 1000;Integer b = 1000;System.out.println(a == b);Integer c = 100;Integer d = 100;System.out.println(c == d);//编译结果为true}
}

编译结果:

为什么会是这样的结果呢?

Java中为了提高程序的执行效率,将整形数据 -128 到 127 之间的所有的包装对象提前创建好, 放到了 方法区的"整数型常量池"当中,在使用这个区间的数据时,不需要再new对象了, 可以直接从池子中取出来。
所以程序中的c和d都存的是整数型常量池中100的包装类对象的地址,所以他们两个是相等的。

整数1000并没有提前在整数型常量池中创建对象,所以在装箱时,需要在堆内存中创建对象,他们的地址也各不相同。

注意:
当程序中使用到了Integer,程序在类加载时会在整数型常量池中自动创建 -128 到 127之间的包装类对象(注意与字符串常量池的区别,字符串常量池只会在使用字符串时创建对象,并且没有范围限制)。

Integer中的常用方法

public class IntegerTest03 {public static void main(String[] args) {// 静态方法 static int parseInt(String s)//将s转换为int型数字int i = Integer.parseInt("123");System.out.println(i);//编译结果为123//如果传入该方法的参数不是数字字符串,编译器就会报错//int j = Integer.parseInt("中文");报错:java.lang.NumberFormatException//同理,在其他包装类中也存在类似方法 :Double.parseDouble , Float.parseFloat ......//静态方法  static String toBinaryString(int i)//将i转换为二进制字符串System.out.println(Integer.toBinaryString(5));//编译结果:101//同理还存在以下方法://static String toHexString(int i)//将i转换为16进制字符串//static String toOctalString(int i)//将i转换为8进制字符串//实例方法  String toString()//该方法已经被重写,字符串的形式返回包装类数据Integer x = 1000;System.out.println(x.toString() + 1);//编译结果为10001//实例方法  boolean equals(Object obj)//判断两个包装类对象是否一样,并非对象地址Integer y = 1000;System.out.println(x.equals(y));//编译结果为:true}}

int 、Integer、String之间的相互转换

//int    String    Integer   之间的类型转换
public class IntergerTest04 {public static void main(String[] args) {// int --> String//数字后面加一个空字符串int i = 100;String j = 100 + "";System.out.println(j + 1);//编译结果:1001//String --> int//使用静态方法 Integer.parseInt()String x = "1234";int y = Integer.parseInt(x);System.out.println(y + 1);//编译结果:1235//int --> Integer//自动装箱Integer m = 100;//手动装箱Integer m2 = Integer.valueOf(100);//手动装箱(已过时)Integer m3 = new Integer(100);//Integer --> int//自动拆箱int n = m;//手动拆箱int n2 = m.intValue();//String --> IntegerInteger p = Integer.valueOf("1234");//Integer --> String//方法一String q = String.valueOf(m);//方法二Integer p2 = 1000;String q2 = p2.toString();}
}

Java中的八种包装类相关推荐

  1. JAVA中的八种基本类型

    一.JAVA中的八种基本类型 1.数字类型(6种)   ①byte:     占的位数:byte数据类型占八位: 最小值为:-128(-2^7): 最大值为:127(2^7-1): 默认值为:0: 作 ...

  2. Java中的八种基本数据类型

    Java中主要有八种基本数据类型:byte.short.int.long.float.double.boolean.char. 各种数据类型作用: 1.byte: 8位.有符号的以二进制补码表示的整数 ...

  3. java中的八种原始数据类型

    java中的的原始数据类型可分为4大类:整数型(byte,short,int,long),浮点型(float,double)布尔型(boolean)字符型(char). 首先我们先要知道它们的各自取值 ...

  4. Java基本八种包装类

    1.java中为8种基本数据类型又对应准备了8种包装类.8种包装类属于引用数据类型,父类是Object. 2.思考:为什么要再提供8种包装类呢? 8种基本数据类型对应的包装类型名是什么? 基本数据类型 ...

  5. Java常用的八种排序算法与代码实现

    在Java的时候,对于排序的应用需要熟练的掌握,这样才能够确保Java学习时候能够有扎实的基础能力.那Java有哪些排序算法呢?本文小千就来详细说说Java经典的8种排序算法. 经典的排序算法有八种, ...

  6. java四类八种基本数据类型

    java基本数据类型就8种,除了这些都是引用型的了.  一.java四类八种基本数据类型 第一类:整型 byte short int long 第二类:浮点型 float double 第三类:逻辑型 ...

  7. java四类八种_java四类八种基本数据类型

    Java基本数据类型就8种,记住就好了.除了这些都是引用型的了. java四类八种基本数据类型 第一类:整型 byte short int long 第二类:浮点型 float double 第三类: ...

  8. Java中为什么要引入包装类?

    Java中为什么要引入包装类? java中为8种基本数据类型又对应的准备了8种包装类 包装类是引用数据类型,父类是Object. 思考:为什么要再提供8中包装类呢? 假设有这样一个方法:它的形式参数是 ...

  9. java中的复合数据类型是什么_【填空题】类是Java中的一种重要的复合数据类型,是组成Java程序的基本要素。一个类的实现包括两部分:____和_____....

    [填空题]类是Java中的一种重要的复合数据类型,是组成Java程序的基本要素.一个类的实现包括两部分:____和_____. 更多相关问题 [名词解释] 观叶树木 [单选] 开花时有浓郁香气的树种是 ...

最新文章

  1. Java学习笔记(必看经典)
  2. Centos7 上安装Docker
  3. 广告等第三方应用嵌入到web页面方案 之 使用js片段
  4. php函数scandir_使用PHP函数scandir排除特定目录
  5. 简单的社交网络分析(基于R)
  6. Android 通过onTouchEvent判断是否为双击事件
  7. 学生用的笔记本电脑什么样的好_大学生用的学生党笔记本什么牌子好,听听学姐的...
  8. 【项目介绍】协程——C语言实现的用户态非抢占式轻量级线程
  9. 信息学奥赛一本通C++语言——1083:计算星期几
  10. 一个牛逼的Coder是这样诞生的
  11. 谈谈社群收割用户的六板斧
  12. SlidingMenu 源码分析
  13. Webkit推出新的着色语言whlsl
  14. 【图像分割】基于matlab GAC水平集方法图像分割【含Matlab源码 389期】
  15. 红米6 Pro最简单卡刷开发版开启ROOT权限的教程
  16. PS压缩图片文件大小,不失真!!!
  17. DICOM影像中的窗宽窗位
  18. mysql 主从1146_浅谈mysql主从同步及错误1146处理
  19. imputation文献-A systematic evaluation of single-cell RNA-sequencing imputation methods
  20. 互联网“香饽饽”?数据挖掘或成热门行业

热门文章

  1. Django学习笔记 ORM操作 From菜鸟教程
  2. Mahout算法调用展示平台2.1
  3. python实现谱聚类算法
  4. 解决Ubuntu无法上网的问题
  5. HTML链接标签详解,很简单
  6. vb Do循环语句的几种形式
  7. myelicpes2019初次使用设置_实况足球2019(PES2019)全图文攻略官方操作指南
  8. 第8章第2节:制作企业宣传册的封面幻灯片 [PowerPoint精美幻灯片实战教程]
  9. jq删除某个css样式,jq删除属性_使用jquery删除css属性或样式
  10. 影响网站关键词排名的5个因素