1. for-each的认识
(1)for-each语句是Java中for-Index的一种加强,是Java 5带来的新语法糖。
(2)for-each语句是在遍历数组、集合的时候,foreach拥有不错的性能。
(3)foreach是for语句的简化,但是for-each并不能替代for循环。任何for-each都能改写为for循环,反之不行。
(4)foreach不是java中的关键字。for-each的循环对象一般是一个集合,List、ArrayList、LinkedList、Vector、数组等。
2. for-each的定义
for(元素类型T 每次循环元素的名称 : 循环对象){
//对定义的名称进行操作
}
3. 哪些类型的对象可以适用For-Each?
(1)数组
(2)Collection类
(3)任何实现了Iterable接口的自定义类
第一类,第二类在实际开发中经常用到,而第三类能够适用For-Each的原因需要通过源码来进行分析。
4. for-each的举例
- for-each遍历数组
public static void main(String[] args) {
String[] demo = {"a", "b", "c"};
for (String t :demo ) {
System.out.println(t);
}
}
- for-each遍历List
public static void main(String[] args) {
List<String> list = new ArrayList();
list.add("a");
list.add("b");
list.add("c");
for(String str : list){
System.out.println(str);
}
}
5. for-each的局限性
for-each虽然能遍历数组或者集合,但是只能用来遍历,无法在遍历的过程中对数组或者集合进行修改,而for循环可以在遍历的过程中对源数组或者集合进行修改。
1 数组
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class test{
public static void main(String[] args) {
String[] names = {"ming", "fei"};
for (String name : names) {
name = "xin";
}
//foreach
System.out.println("foreach:"+Arrays.toString(names));
//for
for (int i = 0; i < names.length; i++) {
names[i] = "xin";
}
System.out.println("for:"+Arrays.toString(names));
}
}
2.集合
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class test {
public static void main(String[] args) {
List<String> names = new ArrayList<String>();
names.add("ming");
names.add("fei");
//foreach
for(String name:names){
name = "uzi";
}
System.out.println(Arrays.toString(names.toArray()));
//for
for (int i = 0; i < names.size(); i++) {
names.set(i,"uzi");
}
System.out.println(Arrays.toString(names.toArray()));
}
}
求出一个文件的目录名以及目录总个数
实现代码:
import java.io.File;
public class Demo {
public static void main(String[] args){
File file=new File("D:/apache-maven1");
String[] files=file.list();
for(int i=0;i<files.length;i++){
System.out.println(files[i]);
}
System.out.println(files.length);
}
}
获取本地IP地址
实现代码如下:
import java.net.InetAddress;
import java.net.UnknownHostException;
public class Demo {
public static void main(String[] args) throws UnknownHostException {
InetAddress host = InetAddress.getLocalHost();
String ip =host.getHostAddress();
System.out.println("本机ip地址:" + ip);
}
}
自定义多个字符和数字,求出6位随机数的组合
实现代码:
import java.util.Random;
public class Demo {
static char[] chars = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f','g','h',
'i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
public static String getStr(int i){
StringBuffer string = new StringBuffer();
Random random = new Random();
while(i-->0){
//获取随机生成的下标
int x = random.nextInt(chars.length);
string.append(chars[x]);
}
return string.toString();
}
public static void main(String[] args) throws Exception {
int i=6;
String string = getStr(i);
System.out.println(string);
}
}