定义一个Student类,要求如下。
a. 要求包含4个成员变量 String name, int age, boolean isMale, int sno
b. 分别定义5个构造方法 ,分别为 :
无参构造
初始化name成员变量值的1参构造方法
初始化name 和 sno两个成员变量值的2参构造方法
初始化name,age,isMale三个成员变量值的3参构造方法
初始化name,age, isMale,sno这4个成员变量值的4参构造方法
c. 在定义一个成员方法
public void print() { System.out.println(name + "---" + age + "---" + (isMale ? "男" : "女") + "-- -" + sno); }代码
package day05; public class Task01 { public static void main(String[] args) { } } class Student{ String name; int age; boolean isMale; int sno; public Student(){ } public Student(String name){ this.name = name; } public Student(String name,int age){ this.name = name; this.age = age; } public Student(String name,int age,boolean isMale){ this.name = name; this.age = age; this.isMale = isMale; } public Student(String name,int age,boolean isMale,int sno){ this.name = name; this.age = age; this.isMale = isMale; this.sno = sno; } public void print() { System.out.println(name + "---" + age + "---" + (isMale ? "男" : "女") + "---" + sno); } }Task02 问题
在上题基础上,创建两个Student对象分别为stu1和 stu2。
要求stu1对象的四个成员变量name, age, isMale, sno的值分别为“张三”,18,true, 1
要求stu2对象的四个成员变量name, age, isMale, sno的值分别为“李四”,25,false, 2
然后在两个对象上调用print()方法即 stu1.print(), stu2.print(),两次调用方法输出的结果相同吗? 为什么?
代码package day05; public class Task02 { public static void main(String[] args) { Student stu1 = new Student("张三",18,true,1); Student stu2 = new Student("李四",25,false,2); stu1.print(); stu2.print(); } } class Student{ String name; int age; boolean isMale; int sno; public Student(){ } public Student(String name){ this.name = name; } public Student(String name,int age){ this.name = name; this.age = age; } public Student(String name,int age,boolean isMale){ this.name = name; this.age = age; this.isMale = isMale; } public Student(String name,int age,boolean isMale,int sno){ this.name = name; this.age = age; this.isMale = isMale; this.sno = sno; } public void print() { System.out.println(name + "---" + age + "---" + (isMale ? "男" : "女") + "---" + sno); } }结果
由运行结果可知,在两个对象上调用print()方法即 stu1.print(), stu2.print(),两次调用方法输出的结果不相同。因为不同的对象调用同一个方法会随着对象的不同而导致访问的数据不同。
Task03 问题类中定义的成员变量和成员方法同Student,同时在MyStudent类中定义和Student相似的5个构造方法 的基础上,根据需要修改MyStudent相应构造方法的方法体,要求实现
MyStudent st = new MyStudent(); st.print();
这两句代码打印出的结果是 麻花疼—100—男---1000
代码package day05; public class Task03 { public static void main(String[] args) { MyStudent st = new MyStudent(); st.print(); } } class MyStudent{ String name; int age; boolean isMale; int sno; public MyStudent(){ this.name = "麻花疼"; this.age = 100; this.isMale = true; this.sno = 1000; } public MyStudent(String name){ this.name = name; } public MyStudent(String name,int age){ this.name = name; this.age = age; } public MyStudent(String name,int age,boolean isMale){ this.name = name; this.age = age; this.isMale = isMale; } public MyStudent(String name,int age,boolean isMale,int sno){ this.name = name; this.age = age; this.isMale = isMale; this.sno = sno; } public void print() { System.out.println(name + "---" + age + "---" + (isMale ? "男" : "女") + "---" + sno); } }结果 Task04 分析
由于double类型是一个普通数据类型,在调用doubleTest()函数时是将实参的值传递给了形参,而在doubleTest()函数中是修改的形参的值,所以方法执行前后money的值相同。
而p是我们定义的一个Person类,属于引用类型的数据类型,在调用PersonTest()函数是传入的是p的地址,PersonTest()在函数中修改person.name的值相当于修改主函数p.name的值,所以在PersonTest()运行前后p.name的值发生了改变。
结果由代码验证得:
Task05 题目定义一个表示学生信息的类Student,要求如下:
(1)类Student的成员变量: id表示学号;name表示姓名;gender表示性别;age表示年 龄;java表示Java课程成绩。
(2) 在定义一个print()方法,输出student对象的 name,gender,age,java的值(即输出学 生信息)
(3)根据类Student的定义,创建五个该类的对象,输出每个学生的信息,计算并输出这五个 学生 Java语言成绩 的平均值,
提示: 数组既可以存储基本数据类型的值,也可以存储引用数据类型的值 因此,5个Student 对象可以放在一个Student数组中 Student[] students = new Student[5];
students[1] = student对象的引用 //求平均值可以通过循环遍历 students数组来完成
代码package day05; public class Task05 { public static void main(String[] args) { Student[] students = new Student[5]; Student student0= new Student(1,"张三",true,20,80); Student student1 = new Student(2,"李四",false,21,81); Student student2 = new Student(3,"王五",true,22,83); Student student3 = new Student(4,"赵六",false,23,84); Student student4 = new Student(5,"周七",true,24,85); students[0] = student0; students[1] = student1; students[2] = student2; students[3] = student3; students[4] = student4; students[0].java = 80; students[0].print(); double avg = 0.0; for (int i = 0; i < 5; i++) { students[i].print(); avg = avg + students[i].java; } System.out.println("平均成绩为:"+avg/5); } } class Student{ int id; String name; boolean gender; int age; double java; public Student(int id,String name,boolean gender,int age,double java{ this.id = id; this.name = name; this.gender = gender; this.age = age; this.java = java; } public void print(){ System.out.println(id + "---"+name + "---" + (gender ? "男" : "女") + "---" + age + "---" + java); } }结果
this.id = id;
this.name = name;
this.gender = gender;
this.age = age;
this.java = java;
}
public void print(){
System.out.println(id + “—”+name + “—” + (gender ? “男” : “女”) + “—” + age + “—” + java);
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)