封装类与基本数据类型的关系

             首先8种基本类型对应的8的封装类,byte--->Byte;        short --->Short;       int----->Integer;      long----->Long;     float----->Float;       double----->Double;
char------>Character;         boolean---->Boolean; 

1.从基本类型到引用类型的转化(也叫装箱操作):

                 第一种:自动装箱  Integer in=2;       

 第二种:手动显式装箱 Boolean flag=Boolean.valueOf(boolan  f)与第一种其实是一种形式,第一种是其隐式的调用;

 第三种:     Char c=new Char('A'); 通过构造方法将引用类型封装成类

              

               2. 从引用类型到基本类型的转化(也叫拆箱操作) :

                  Character c=new Characer('A');//利用构造方法对引用类型进行初始化,

                   第一种:自动拆箱           char ch=c;//等号右边的c表示的是Character 的实例对象;

                  第二种:手动显式拆箱    char c1=c.charValue();

                 

                3.字符串转化成封装类:

String  s="afdfvd";
                第一种  Boolean b=Boolean.valueOf(s);//只有s为true时,对象b对应的值才能是true;如果要转为其他的封装类,也要判断字符所代表的字符是否跟封装类对应,此时可用异常处理;
     
                第二种:利用类的构造方法,Char c=new Char("s");//此时c所对应的值就是字符s;


4.封装类转换成字符串:

         第一种:直接用+“”;实例  Integer in="9527";String s=in+""+"是华安";//此时字符s表示为9527是华安;
                第二种:利用String方法   Boolean flag=true;String s=String.valueOf(flag);s+="代表真";此时字符串信息为  :“true代表真”;
                第三种:利用String的toString方法,String s=Integer.valueOf(123).toString();

                 5.基本类型转换成字符串(不能使用字符串的构造方法):

第一种:直接用+“”;实例  String s='h'+“”+'y'+'w'+'a'+'n';注意只在第一个字符后面加了一个“”就可以将字符连成字符串;这里提一个小问题在System.out.println(2+1+“”+"模式");和System.out.println(""+2+1+"模式");第一个打印结果是“3模式”;而第二个打印结果为“21模式”;所有注意“”所起的作用域;
                第二种:利用字符串的成员方法:String s=String.valueOf(123);
                第三种:String s=Integer.valueOf(125).toString();

              6.字符串转化成基本类型:

              第一种:String s="3.14";      double d=Double.parseDouble(s);//这种方法char类型除外;
              第二种:double d1=Double.valueOf(s).doublevalue();//对应2.将引用类型转换成基本类型,此处可隐藏
      第三种:double d2=new Double(s).doublevalue();同第二种方法一样,还是利用封装类,先将字符串转换为封装类,然后再将其转化成基本类型


            8种封装类中要注意的事项,除了Float和Double外,其他 的封装类都有缓存区,举例说明,   Integer in=new Integer(22);Integer in2=new Integer(22);此时(in==in2)?true:false;的值为true;此时虽然in和in2比的同样是地址,但是缓冲区的范围为-128到127;也就是说在这个范围内的对象,当其new一个新类的时候,不会产生新的内存地址空间;由于Boolean 只有两个值,所以它在new的时候永远都是同一个地址空间;
                
            面试题 :  Integer in=new Integer(255);
    int a=255;System.out.prinltn(in==a);//此时打印结果为true;in自动拆箱,两个值比的是值
            Integer in=new Integer(255);
            Integer in2=255;
    System.out.println(in==in2);//此时打印结果为false;比的是内存地址
   Integer in3=new Integer(100);
   Integer in4=100;
   System.out.println(in3==in4);//此时的打印结果还是false;

         

              




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值