昨天没有及时更新博客,因为我发现了面向对象单纯的去思考,去面向对象章节的题并没有感觉到有什么难度,但是当面向对象与基础课程中的集合结合起来会有什么新感觉呢,下面介绍一下一经典例题,以及我做题时候的思路
请按以下要求编写代码:
1. 定义Student类,包含以下属性:
学号、姓名、身高
2. 定义MainApp类,包含main()方法;
3. 在main()方法中,创建一个可以存储Student对象的集合对象;
4. 创建以下几个Student对象:
学号 姓名 身高
it001 黄渤 1.72
it002 孙红雷 1.78
it003 章子怡 1.64
it004 杨颖 1.68
5. 将上面几个对象添加到集合中
6. 遍历集合打印每个对象的属性值;
7. 获取并打印集合大小;
8. 获取第3个学员对象,并打印其属性值;
9. 移除掉第4个学员对象;
10. 再次获取并打印集合大小;
11. 将第一个对象替换为以下对象:
it005 撒贝宁 1.67
12. 遍历集合,打印出身高在1.70以上的学员信息;
13. 遍历集合,打印出“孙”姓的学员信息;
import java.util.ArrayList;
/*
请按以下要求编写代码:
1. 定义Student类,包含以下属性:
学号、姓名、身高
2. 定义MainApp类,包含main()方法;
3. 在main()方法中,创建一个可以存储Student对象的集合对象;
4. 创建以下几个Student对象:
学号 姓名 身高
it001 黄渤 1.72
it002 孙红雷 1.78
it003 章子怡 1.64
it004 杨颖 1.68
5. 将上面几个对象添加到集合中
6. 遍历集合打印每个对象的属性值;
7. 获取并打印集合大小;
8. 获取第3个学员对象,并打印其属性值;
9. 移除掉第4个学员对象;
10. 再次获取并打印集合大小;
11. 将第一个对象替换为以下对象:
it005 撒贝宁 1.67
12. 遍历集合,打印出身高在1.70以上的学员信息;
13. 遍历集合,打印出“孙”姓的学员信息;
------------------------------------------------------------------------------------------------------------------------------------------
*/
public class MainApp {
public static void main(String[] args) {
//3.在main()方法中,创建一个可以存储Student对象的集合对象;
ArrayList<Student> list = new ArrayList<Student>();
//4.创建以下几个Student对象:
//5.将上面几个对象添加到集合中
list.add(new Student("it001","黄渤", 1.72));
list.add(new Student("it002","孙红雷", 1.78));
list.add(new Student("it003","章子怡", 1.64));
list.add(new Student("it004","杨颖", 1.68));
//6.遍历集合打印每个对象的属性值;
for (int i = 0; i < list.size(); i++) {
Student s = list.get(i);
System.out.println(s.getId()+","+s.getName()+","+s.getHeight());
}
//7.获取并打印集合大小;
int size = list.size();
System.out.println("打印集合大小:" + size);
//8.获取第3个学员对象,并打印其属性值;
Student stu = list.get(2);
System.out.println("第3个学员对象:"+stu.getId()+","+stu.getName()+","+stu.getHeight());
//9.移除掉第4个学员对象;
list.remove(3);
//10.再次获取并打印集合大小;
size = list.size();
System.out.println("打印集合大小:" + size);
// 11. 将第一个对象替换为以下对象: it005 撒贝宁 1.67
Student student = new Student("it0005", "撒贝宁", 1.67);
list.set(0, student);
//12.遍历集合,打印出身高在1.70以上的学员信息;
//13.遍历集合,打印出“孙”姓的学员信息;
for (int i = 0; i < list.size(); i++) {
Student s = list.get(i);
//打印出身高在1.70以上的学员信息
if (s.getHeight() > 1.70) {
System.out.println("身高在1.70以上的学员信息:"+s.getId()+","+s.getName()+","+s.getHeight());
}
//打印出“孙”姓的学员信息;
if (s.getName().startsWith("孙")) {
System.out.println("“孙”姓的学员信息:"+s.getId()+","+s.getName()+","+s.getHeight());
}
}
}
-------------------------------------------------------------------------------------------------------------------------------------
package com.itheima.level01_02;
/*
* 1. 定义Student类,包含以下属性:
学号、姓名、身高
it001 黄渤 1.72
*/
public class Student {
private String id;
private String name;
private double height;
public Student() {
super();
}
public Student(String id, String name, double height) {
super();
this.id = id;
this.name = name;
this.height = height;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
}
====================================================================================================
大家在看注释的时候需要思考一下咱们调用的方法中,形参的变化和实参的变化,当咱们需要打印出数据的时候是通过直接赋值打印,还是通过地址寻找到变量的值.
这道题思路很明确,希望大家能在多敲几次代码以后分析一下集合在JVM中的内存使用,这样用最底层的思路去分析这道题,会让大家在以后用面向对象的方法去做题的时候有一个清晰思路,
这几天疯狂的在练习面向对象的习题,让自己从数组的思路中切换到面向对象的抽象思维中,希望大家一起进步