当前位置: 代码迷 >> 综合 >> Java--自动装箱、拆箱与遍历循环
  详细解决方案

Java--自动装箱、拆箱与遍历循环

热度:76   发布时间:2023-09-21 21:10:58.0

自动装箱、拆箱与遍历循环源代码:

public static void main(String[] args) {List<Integer> list = Arrays.asList(1,2,3,4);int sum = 0;for(int i:list)sum +=i;System.out.print(sum);
}

编译之后的代码:

public static void main(String[] args){List list = Arrays.asList(new Integer[]{    //变长参数变成了数组类型的参数Integer.valueOf(1);    //自动装箱、拆箱转化为对应的包装和还原方法Integer.valueOf(2);Integer.valueOf(3);Integer.valueOf(4);});int sum=0;//遍历数组还原成了迭代器实现,这也是为什么遍历循环要求被遍历的类实现Iterable接口的原因for(Integer localInteger = list.iteratoor();localInterator.hasNext();){int i = ((Integer) localIterator.next()).intValue();sum+=i;}System.out.println(sum);
}

自动装箱陷阱:

public static void main(String[] args) {Integer a = 1;Integer b = 2;Integer c = 3;Integer d = 3;Integer e = 321;Integer f = 321;Long g = 3L;System.out.println(c == d);    //trueSystem.out.println(e == f);    //falseSystem.out.println(c ==(a + b));    //trueSystem.out.println(c.equals(a+b));    //trueSystem.out.println(g == (a+b));    //trueSystem.out.println(g.equals(a+b));    //false
}

详解Java自动拆箱、装箱