心得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
• 静态导入
• 自动装包/拆包
• 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
相关文章推荐
- 心得18--JDK新特性-静态导入、自动封装与拆装、增强for循环
- 黑马程序员_学习笔记:11) Jdk5.0新特性:增强for循环、可变参数(...)、静态导入、枚举:关键字 enum、自动拆装箱、泛型
- Java5新特性之静态导入、可变参数、增强for循环、自动拆装箱
- jdk1.5的新特性:静态导入,任意参数,增强的for循环,自动拆装箱,享元模式,枚举
- Java5新特性之静态导入、可变参数、增强for循环、自动拆装箱
- Java-JDK5.0的简单新特性(静态导入,可变参数,增强型for循环,自动拆装箱)
- 20、java jdk 5.0新特性(静态导入&自动装箱和拆箱&增强for循环 &可变参数)
- Java JDK5.0的新特性 增强for循环 自动装箱/拆箱 可变参数 静态导入
- JDK5.0新特性(静态导入、自动装箱/拆箱、增强for循环、可变参数、枚举、泛形)
- jdk5.0新特性(泛型、枚举、静态导入、自动拆装箱、增强for、可变参数)
- 黑马程序员--基础--第一篇--JDK5.0新特性泛型 静态倒入 自动拆装箱 不定项参数 增强for如循环 枚举
- 黑马程序员------java中的泛型、增强for循环、可变参数、静态导入、自动拆装箱、枚举
- 详谈Java枚举、静态导入、自动拆装箱、增强for循环、可变参数
- java JDK1.5新特性(一) [静态导入] [可变参数] [增强for] [自动装箱拆箱] [枚举]
- JDK1.5新特性:静态导入、可变参数、增强for循环、自动装箱拆箱(享元设计模式)、枚举、注解、泛型、
- 20.JDK1.5新特性(一)【静态导入】【可变参数】【自动装箱拆箱】【增强for循环】
- 黑马程序员-----JDK1.5新特性-自动拆装箱、静态导入、枚举、可变参数、for循环增强
- 黑马程序员_Java高新技术(静态导入、可变参数、增强for循环、自动拆装箱、枚举、反射)
- java新特性之静态导入、自动装箱和拆箱、增强for循环、可变参数、枚举
- 黑马程序员——高新技术---eclipse使用技巧、静态导入、可变参数、增强for循环、 自动拆装箱、枚举