jdk5的装箱与拆箱


java的8个基本类型:

整数:short byte long int

字符:char

浮点数:float double

布尔类型:boolean

以上8个基本类型都对应有包装类。

(1)
自动装包/拆包  省了很多在开发过程过 从基本类型到包装类以及从包装类到基本类型之间的转换

自动装包(避免了我们去 new Integer())

从 基本类型(int) 自动的转换成 包装类(Integer)

自动拆包(避免了我们 Integer.parseInt(""))

从 包装类(Integer) 自动的转换成 基本类型(int)

(2)例子: BoxTest.java

package com.jdk150.bean;

import java.util.ArrayList;
import java.util.List;

public class BoxTest {


public static void main(String[] args) {
int a=3;
List<Integer> c = new ArrayList<Integer>();

c.add(a); //a是个int 类型,List里要放的是Integer类型这里JAVA自动的实现装包
c.add(a+3);  //3是一个原始数据类型,这时候JAVA自动的给我们转换

for(Integer i:c){
System.out.println(i);
}

//c里面是个Integer类型 在这里JAVA自动的拆包将Integer类型转换成int类(结果都是一样的)
for(int i:c){
System.out.println(i);
}
}

}

(3)例子: Frequency.java

package com.jdk150.bean;

import java.util.Map;
import java.util.TreeMap;

//由命令行输入一个字符串判断这个字符出现的次数并打印
public class Frequency {

//命令行可以在eclipse的run里面的 运行 里 输入
public static void main(String[] args) {
//String 为key  Integer为value TreeMap 是实现了Map接口并且是排序的
Map<String,Integer> m = new TreeMap<String,Integer>();

//获取命令行参数循环放入MAP中
for(String word:args){
Integer freq = m.get(word);
m.put(word, (freq == null?1:freq+1));
}
System.out.println(m);
}

}


(4)例子: BoxTest2.java

package com.jdk150.bean;

public class BoxTest2 {


public static void main(String[] args) {

//基本数据类型“等号“(==)就是比较内容,而对象“等号”(==)则比的是地址
Integer i1 = 100;
Integer i2 = 100;

if(i1 == i2)
System.out.println("i1 == i2");
else
System.out.println("i1 != i2");


// Integer i1 = 200;
// Integer i2 = 200;
// //“等号”(==)比的是两个对象的内存地址
// if(i1 == i2)
// System.out.println("i1 == i2");
// else
// System.out.println("i1 != i2");

//注:如果值在 -128~~~127之间 他们比较的是基本类型 int 的 value (比的是内容)
//而200已经在这个范围之外 他们相当与比较的是Integer类型(比的是内存地址)
}

}





你可能感兴趣的:(java,C++,c,bean,C#)