Integer

package com.Integer;

public class Study01 {
    /**
     * 对象包装类的引入
     * 基本数据类型没有什么方法,操作它的话比较麻烦,所以一般使用它的包装类进行操作
     * int    Integer
     * byte    Byte
     * short Short
     * long    Long
     * char    Character
     * boolean Boolean
     * float Float
     * double Double
     *
     * Integer
     * final修饰
     * 1.0开始
     *
     * 构造方法:
     *     Integer(int value)
     *     Integer(String s) //只能放可以转换成int的参数,否则报错NumberFormatException
     *
     * 获取Integer方法:
     *     static decode(String s) 将String解码成为Integer
     *     getInteger(String num [,int val]) 获取String、转化成为的Integer,转换失败返回null,有默认值得话转换失败返回默认值
     *  static valueOf(String str) 返回保存String值得Integer对象
     *  static valueOf(String str,int radix) 保存String的值转化成为以radix为基数的Integer对象,(就是将String中的值转换成某种进制的Integer对象)
     * 获取int
     *     intValue() 将Integer转化成为int
     *     parseInt(String str) 解析String为int
     *     parseInt(String str,int radix) 解析String为特殊进制的int
     *
     *     static toString(int x)将x转换成为String
     *     static toString(int x,int radix)将radix位的x转化成String
     *
     * 10进制转换到常用进制:
     *     toBinaryString(int x)转成二进制
     *  toHexString(int x)转成16进制
     *  toOctalString(int x)转成8进制
     *
     */
    public static void main(String[] args){
        Integer ii=Integer.getInteger("ss12",12);
        System.out.println(ii);
    }

}

package com.Integer;



public class Study02 {
    /*
     *JDK5的新特性:自动拆装箱
     *装箱:把基本类型转换成为包装类类型
     *拆箱:将包装类类型转换成基本类型
     */
    
    public static void main(String[] args){
        /*Integer ii=100;
        ii+=200;
        System.out.println("ii:"+ii);*/
        testInteger();
        /*
          相当于这样:*/
            Integer ii = Integer.valueOf(100);
            ii = Integer.valueOf(ii.intValue() + 200);
            System.out.println((new StringBuilder("ii:")).append(ii).toString());
        
    }
    
    public static void testInteger(){
        /*
         * 看程序写结果
         */
        Integer i1=new Integer(127);
        Integer i2=new Integer(127);
        System.out.println(i1==i2);
        System.out.println(i1.equals(i2));
        System.out.println("-------------");
        
        Integer i3=new Integer(128);
        Integer i4=new Integer(128);
        System.out.println(i3==i4);
        System.out.println(i3.equals(i4));
        System.out.println("-------------");
        
        Integer i5=127;
        Integer i6=127;
        System.out.println(i5==i6);
        System.out.println(i5.equals(i6));
        System.out.println("-------------");
        
        Integer i7=128;
        Integer i8=128;
        System.out.println(i7==i8);
        System.out.println(i7.equals(i8));
        System.out.println("-------------");
        
    }
    
    /**
      自动装箱实际上使用的是Integer.valueOf()
      查看源码发现,针对-128~127之间的数据,做了一个数据缓存池,如果数据是该范围内的,每次不创建新对象,范围外每次创建新对象
 public static Integer valueOf(int i) {
    final int offset = 128;
    if (i >= -128 && i <= 127) { // must cache
        return IntegerCache.cache[i + offset];
    }
        return new Integer(i);
    }
  private static class IntegerCache {
    private IntegerCache(){}

    static final Integer cache[] = new Integer[-(-128) + 127 + 1];

    static {
        for(int i = 0; i < cache.length; i++)
        cache[i] = new Integer(i - 128);
    }
    }
     */

}

posted @ 2016-06-07 09:59  guodaxia  阅读(309)  评论(0编辑  收藏  举报