primitive主数据类型的包装

当想以对象方式来处理primitive主数据类型时,就把它包装起来,Java 5.0之前的版本,无法直接把primitive主数据类型放进ArrayList或Hash-Map。 每一个primiti主数据类型都有个包装用的类,且因为这些包装类都在java.lang这个包中。所以无需去import他们。对应的包装类的名称都是依照所包装的类型设定的,只是将其第一个字母改成大写即可。 包装类有:Boolean Character Byte Short Integer Long Float Double 包装值:

int i = 288;
//传入primitive主数据类型给包装类的构造函数
Integer iWrap = new Integer(i);

解开包装:

//所有的包装类都有类似这样的方法
int unWrappped = iWrap.intValue();

primitive int 的 ArrayList 无autoboxing:

public void do NumbsOldWay(){
          
   
    //创建出ArrayList对象
    ArrayList listOfNumbers = new ArrayList();
    //不能直接加入primitive的3,得转化为Integer
    listOfNumbers.add(new Integer(3));
    //返回object类型,但你可以将object转换为Integer
    Integer one = (Integer) listOfNumbers.get(0);
    //最后再取出primitive
    int intOne = one.intvalue();

有autoboxing

public void doNumsNewWay(){
          
   
    //创建Integer类型的ArrayList
    ArrayList<Integer> listOfNumbers = new ArrayList<Integer>;
    listOfNumbers.add(3);
    //编译器自动解开Integer对象的包装,因此可以直接赋值给int
    int num = listOfNumbers.get(0);
 }

autoboxing的用处

1,方法的参数 参数是某种包装类型,传入相对应的primitive主数据类型

void takeNumber(Integer i){
          
   }

2,返回值 method声明为返回某种primitive主数据类型,返回兼容的primitive主数据类型或者该primitive主数据类型的包装类型。

int giveNumber() {
          
   
    return x;
}

3,boolean的表达式 任何预期boolean值的位置都可以用求出boolean的表达式来代替

if(bool){
          
   
    System.out.println("true");
    }

4,数值运算 可以在使用primitive主数据类型作为运算子的操作中以包装类型来替换

Integer i = new Integer(42);
i++;
 
Integer j = new Integer(24);
Integer k = i + j;

5,赋值 将包装类型或primitive主数据类型赋给声明成相对应的包装或primitive主数据类型

Double d = x;

6,包装类型转换 常用为将对应的String类型的字符串数字转换成对应的数值

String s = "2";
int x = Integer.parseInt(s)
 
double d = Double.parseDouble("420.24");
//bool类型不同
boolean b = new Boolean("true").booleanValue();

7,将primitive主数据值转换成String 将数值转换成String

double d = 4.25;
String doubleString = " " + d ;

double d = 42.5;
String doubleString = Double.toString(d);
经验分享 程序员 微信小程序 职场和发展