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);
}
}
*/
}