关于foreach,我简单的百度了一下,看到这个人写的还不错,截图了一下
链接在这里:
https://www.cnblogs.com/SzBlog/p/5403683.html
由于是第一次碰到,我简单的实验了一下,至于碰到的地方,是我在JDBC的学习的时候的第五部分的知识点
- foreach只能遍历值,不能改变值,这是关键点
- 然后我们遍历的本质都是对集合中的元素进行遍历,不论是数组还是泛型,本质都是一个集合
先从简单的尝试吧
数组
下面是我写的代码
public class Foreach {
public static void main(String[] args) {
int a[]={10,9,8,7,6,5,4};
for (int i : a) {
System.out.println(i);
}
}
}
所以说基本格式就是这样的,看上面的标注。
下面是用泛型做的实验,在做这个之前,我专门写了一个People类。
People的源代码,看下面
public class People {
private String name;
private String sex;
private int age;
//构造方法
public People(String name, String sex, int age) {
super();
this.name = name;
this.sex = sex;
this.age = age;
}
}
没有用set和get,就只是简单的写了一个重载!
通过这个类,我写了一个关于People的泛型
代码如下:
import java.util.ArrayList;
public class List {
public static void main(String[] args) {
//定义一个Book类型的
ArrayList<People> ListPeople=new ArrayList<People>();
for(int i=0;i<5;i++){
//通过for循环创造五个人对象,这个对象有三个属性
People people=new People("张三"+i+"号","男",i+10);
//依次把这五个对象写进
ListPeople.add(people);
}
for (People people : ListPeople) {
System.out.println(people);
}
}
}
然后执行的效果是这样的,看下图
真的非常的纳闷,输出来的一堆看不懂的东西。
仔细看了一下,同数组是一样的,我们输出的是这个集合中的每个元素,在泛型中,我们是把每个对象存进去的,所以输出的就是这个对象,但是我想要的输出的结果是对象中的元素。
这里就要用到一个toString()方法
会在People中生成这样一段代码
@Override
public String toString() {
return "People [name=" + name + ", sex=" + sex + ", age=" + age + "]";
}
作用就是输出People类创建的对象的时候,把对象的输出改成对这个对象中的元素的输出
所以我们写入了这个方法之后,在foreach中的输出people对象的时候,获得的就是这个对象中的元素的文字说明。
最终就得到我想要的结果了。
main函数的完整代码以及People类的完整代码如下:
import java.util.ArrayList;
public class List {
public static void main(String[] args) {
//定义一个Book类型的
ArrayList<People> ListPeople=new ArrayList<People>();
for(int i=0;i<5;i++){
//通过for循环创造五个人对象,这个对象有三个属性
People people=new People("张三"+i+"号","男",i+10);
//依次把这五个对象写进
ListPeople.add(people);
}
for (People people : ListPeople) {
System.out.println(people);
}
}
}
===========================================================================================
public class People {
private String name;
private String sex;
private int age;
//构造方法
public People(String name, String sex, int age) {
super();
this.name = name;
this.sex = sex;
this.age = age;
}
@Override
public String toString() {
return "People [name=" + name + ", sex=" + sex + ", age=" + age + "]";
}
}