java中jdk5的新特性
jdk5新特性:
-
1.增强for循环: 使用于数组和集合
for(元素数据类型 变量 : 数组或者Collection集合) {
System.out.println(变量);
}- 增强for循环 底层依赖的是 Iterator迭代器
- 增强for循环,增强for循环不能删除,只能遍历
-
2.静态导入:
-
静态导入是导入类中静态方法
- 格式: import static 包名….类名.方法名;
- 注意事项: 方法必须是静态的,如果有多个同名的静态方法,容易不知道使用谁?这个时候要使用,必须加前缀。由此可见,意义不大,所以一般不用,但是要能看懂。
- 静态导入开发不用,但是需要能看懂
-
-
3.可变参数:
- 定义方法的时候不知道该定义多少个参数
- 格式: 修饰符 返回值类型 方法名(数据类型… 变量名){}
- 注意事项:
-
这里的变量其实是一个数组
-
如果一个方法有可变参数,并且有多个参数,那么,可变参数肯定是最后一个
-
4.数组转换成集合:
- 数组转换成集合虽然不能增加或减少元素,但是可以用集合的思想操作数组,也就是说可以使用其他集合中的方法
- 集合转数组: toArray() 数组转集合: Arrays.asList()
- 如果从集合类中获取到数组,用toArray(),如果我们想从数组到集合用Arrays.asList()方法。
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Jdk5 {
public static void main(String[] args) {
// demo1();
// demo2();
String[] arr = {"a","b","c"};
List<String> list = Arrays.asList(arr); //将数组转换成集合
//list.add("d"); //不能添加
System.out.println(list.size()); //可以使用集合中的其他方法
System.out.println(list);
}
private static void demo2() {
/*
* 可变参数
*/
int[] arr = {11,22,33,44,55};
print(arr);
}
public static void print(int ... arr) { //可变参数其实是一个数组
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
private static void demo1() {
/*
* 增强for循环
*/
ArrayList<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("b");
list.add("c");
list.add("d");
//1,普通for循环删除,索引要--
/*for(int i = 0; i < list.size(); i++) {
if("b".equals(list.get(i))) {
list.remove(i--); //通过索引删除元素
}
}*/
//2,迭代器删除
/*Iterator<String> it = list.iterator();
while(it.hasNext()) {
if("b".equals(it.next())) {
//list.remove("b"); //不能用集合的删除方法,因为迭代过程中如果集合修改会出现并发修改异常
it.remove();
}
}*/
/*for(Iterator<String> it2 = list.iterator(); it2.hasNext();) {
if("b".equals(it2.next())) {
//list.remove("b"); //不能用集合的删除方法,因为迭代过程中如果集合修改会出现并发修改异常
it2.remove();
}
}*/
//3,增强for循环,增强for循环不能删除,只能遍历
for (String string : list) {
if("b".equals(string)) {
list.remove("b");
}
}
System.out.println(list);
}
}