您的位置:首页 > 编程语言 > Java开发

心得18--JDK新特性-静态导入、自动封装与拆装、增强for循环

2012-09-17 16:32 447 查看
1. “JDK 5.0”的一个重要主题就是通过新增一些特性来简化开发,这些特性包括:

• 静态导入

• 自动装包/拆包

• for-each循环

• 可变参数

• 枚举

• 泛型

• 元数据

静态导入语法用于导入指定类的某个静态属性值(方法)或全部静态属性值(方法)。语法:Import static 包名.类名.静态属性|静态方法|*;比如:导入指定类全部静态属性和方法 import staticjava.lang.Math.*

自动装箱(autoboxing):把一个基本数据类型直接赋给对应的包装类变量, 或者赋给 Object 变量

自动拆箱:把包装类对象直接赋给一个对应的基本类型变量

2. 增强for循环

引入增强for循环的原因:在JDK5以前的版本中,遍历数组或集合中的元素,需先获得数组的长度或集合的迭代器,比较麻烦!为了简化此类操作,JDK5中新添了增强for循环。增强for循环只能用在数组、或实现Iterator接口的集合类上

使用 foreach 循环遍历数组和集合元素时, 无须获得数组和集合长度, 无须根据索引来访问数组元素和集合元素,foreach 循环自动遍历数组和集合的每个元素

l 语法格式:

for ( type 变量名:集合变量名 ) { … }

//变量名: 自动迭代访问每一个元素

具体案例分析:

package com.java.test;

importjava.util.ArrayList;

import java.util.Iterator;

importjava.util.LinkedHashMap;

import java.util.List;

import java.util.Map;

import java.util.Set;

importjava.util.Map.Entry;

public class ForTest {

public void Test() {

// 不使用泛型遍历list:

List list = new ArrayList();

list.add("aaa");

list.add("bbb");

list.add("ccc");

for (Object str : list) { //因为list是List对象类型的,所以遍历的时候用用Object类型声明变量str

System.out.println(str);

}

//
使用泛型遍历list:

List<String> list1 = new ArrayList<String>();

list1.add("aaa");

list1.add("bbb");

list1.add("ccc");

for (String str : list1) { //这里给定List的泛型类型是String,那么这是遍历的时候就可以用String声明了

System.out.println(str);

}

}

//通过map.keySet()把键值取出,遍历

public void Test1() {

Map map = new LinkedHashMap();

map.put("1", "aaa");

map.put("2", "bbb");

map.put("3", "ccc");

Set keys = map.keySet();

Iterator it = keys.iterator();

while (it.hasNext()) {

String key = (String)it.next();

String value = (String) map.get(key);

System.out.println(key + "=" + value);

}

}

//
通过map.entrySet()把键值对取出,一块遍历

public void Test2() {

Map map = new LinkedHashMap();

map.put("1", "aaa");

map.put("2", "bbb");

map.put("3", "ccc");

Set keys = map.entrySet();

Iterator it = keys.iterator();

while (it.hasNext()) {

Map.Entry me = (Entry) it.next();

String key = (String) me.getKey();

String value = (String) me.getValue();

System.out.println(key + "=" + value);

}

}

//增强for循环的做法

public void Test3() {

Map map = new LinkedHashMap();

map.put("1", "aaa");

map.put("2", "bbb");

map.put("3", "ccc");

for (Object obj : map.entrySet()) {

Map.Entry me = (Entry) obj;

System.out.println(me.getKey() + "=" +me.getValue());

}

}

//使用JavaBean遍历

public void Test4() {

List<Person> list = new ArrayList<Person>();

list.add(new Person("jine", 20));

list.add(new Person("hello", 24));

list.add(new Person("电石法", 22));

for (Person p : list) {

System.out.println(p.getName() + "....." +p.getAge());

}

}

}

注意事项:

运用增强for循环只能遍历数组或继承Iterator的集合,不能给其赋值;也不能修改其值

案例一:(赋值失败案例)

intarr[] = new int[5];

for(intnum : arr){

num = 1;

}

System.out.println(arr[0]); //
输出结果为0,不是1


案例二:(修改值失败案例)

List<String>list = new ArrayList<String>();

list.add("xxx");

for(Stringstr : list){

str = "yyy";

}

System.out.println(list.get(0));
//输出结果为xxx,并非yyy
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐