A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xingzjx 中级黑马   /  2015-3-14 21:53  /  882 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 xingzjx 于 2015-3-14 22:01 编辑

一、java里面有8种基本数据类型,它们分别对应着相应的包装类型(基本数据类型转换成的引用类型)。分别如下
1、布尔型:boolean(Boolean)
2、字符型:char(Character)
3、数值型:
(1)浮点型:byte(Byte)、int(Integer)、long(Long)
(2)浮点型:float(Float)、double(Double)
二、享元模式与数据类型
1、装箱:基本数据类型转换成引用类型。
2、拆箱:引用类型转换成基本数据类型
3、享元模式:如果系统里面有多个相同的对象,那么只需要一份对象就行,也就是说实现了对象共享。
4、对于包装类来说,-128到127之间的整数,还有26个英文字母,还有布尔值,实现了内存共享,也就是说这个区间的数创建成引用类时,会在常量池里面开辟空间。5、包装类的作用:把基本数据类型包装成对象后,可以有自己的属性和方法,也就是说包装类有更多的操作。

三、程序demo
  1. public class AutoBox {

  2.         /**
  3.          * 装箱:基本数据类型转换成引用类型。
  4.          * 拆箱:引用类型转换成基本数据类型
  5.          * 享元模式:如果系统里面有多个相同的对象,那么只需要一份对象就行,也就是说实现了对象共享。
  6.          * 对于包装类来说,-128到127之间的整数,还有26个英文字母,实现了内存共享,也就是说这个区间的数创建成引用类时,会在常量池里面开辟空间。
  7.          * @param args
  8.          */
  9.         public static void main(String[] args) {
  10.                 test1();
  11.                 test2();
  12.                 test3();
  13.                 test4();
  14.                 test5();
  15.         }
  16.         
  17.         private static void test1() {
  18.                 Integer iObj = 3;
  19.                 System.out.println(iObj + 12);// 拆箱
  20.                 Integer.valueOf(11);// 装箱
  21.         }
  22.         
  23.         
  24.         private static void test2() {
  25.                 // 对于-128-127的整数,包装成引用类型的时候,会把对象放到常量池里面,实现共享内存方式
  26.                 Integer i1 = 137;
  27.                 Integer i2 = 137;
  28.                 System.out.println(i1 == i2);
  29.                 Integer i3 = Integer.valueOf(213);
  30.                 Integer i4 = Integer.valueOf(213);
  31.                 System.out.println(i3==i4);
  32.                 Integer i5 = Integer.valueOf(12);
  33.                 Integer i6 = Integer.valueOf(12);  
  34.                 Integer i7 = 12;
  35.                 Integer i8 = 12;  
  36.                 System.out.println(i5 == i6);
  37.                 System.out.println(i7 == i8);
  38.         }
  39.         
  40.         private static void test3() {
  41.                 String str1 = "a";
  42.                 String str2 = "a";
  43.                 String str3 = new String("a");
  44.                 String str4 = new String("a");
  45.                 System.out.println(str1==str2);
  46.                 System.out.println(str1==str3);
  47.                 System.out.println(str3==str4);
  48.         }
  49.         
  50.         private static void test4() {
  51.                 Character c1= 'a';
  52.                 Character c2 = 'a';
  53.                 System.out.println(c1==c2);
  54.                
  55.                 Long l1 = (long) 123423423;
  56.                 Long l2 = (long) 123423423;
  57.                 System.out.println(l1==l2);
  58.          }
  59.         
  60.         private static void test5() {
  61.                 Boolean b1= true;
  62.                 Boolean b2 = true;
  63.                 System.out.println(b1==b2);
  64.          }

  65. }
复制代码




4 个回复

倒序浏览
基本类型和引用类型有哪些区别?
回复 使用道具 举报
Edison_Heung 发表于 2015-3-15 00:47
基本类型和引用类型有哪些区别?

基本数据类型是保存在栈内存的数据段;引用类型是保存在堆内存的数据类型,而变量保存的是一个引用(相当于C语言中的指针)。
回复 使用道具 举报
xingzjx 发表于 2015-3-15 10:36
基本数据类型是保存在栈内存的数据段;引用类型是保存在堆内存的数据类型,而变量保存的是一个引用(相当 ...

受益匪浅呀:lol

点评

thankyou  发表于 2015-3-16 00:35
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马