Student a = new Student(); a.setName = "张三";Student b = a;a.setName = "李四"; b.name = ?为什么是“李四”
时间: 2024-04-10 12:28:59 浏览: 135
对于这段代码,b的name属性为"李四"是因为在Java中,对象的赋值是通过引用传递的。在代码中,首先创建了一个Student对象a,然后将a赋值给b,这意味着a和b引用了同一个对象。当执行a.setName("李四")时,实际上是修改了这个对象的name属性。由于a和b引用的是同一个对象,所以无论是通过a还是b访问name属性,都会得到相同的结果,即"李四"。
相关问题
public class StudenTest1 { public static void main(String[] args) { Stunden stu1 = new StundenO: stu1.setName(“张三"); stul.setAge (18); System.out.printin(stul.getName () + ". Stunden stu2 = new Stunden( name: “李四"
这段代码中有一些语法错误,需要进行修正。首先,类名应为 "Student" 而非 "Stunden"。其次,第一行代码应该为: `Student stu1 = new Student();` 而非 `Stunden stu1 = new StundenO:;`。在第二行代码中,应该为 `stu1.setName("张三");` 而非 `stul.setName("张三");`。在第三行代码中,应该为 `stu1.setAge(18);` 而非 `stul.setAge(18);`。最后一行代码应该为 `System.out.println(stu2.getName() + " is " + stu2.getAge() + " years old.");` 而非 `System.out.printin(stul.getName() + ".`。修正后的代码如下:
```
public class StudentTest {
public static void main(String[] args) {
Student stu1 = new Student();
stu1.setName("张三");
stu1.setAge(18);
System.out.println(stu1.getName() + " is " + stu1.getAge() + " years old.");
Student stu2 = new Student("李四", 20);
System.out.println(stu2.getName() + " is " + stu2.getAge() + " years old.");
}
}
```
一个培训班(Shool)包含若干学生(Student),培训班能够计算所招学生的平均成绩,两个类具体说明如下: (1) Student类 a) 一个私有的name属性存放学生的姓名; b) 一个私有的score属性存放学生的入学成绩; c) 一个公有的不带参数的构造方法; d) 一个共有的带参数的构造方法; e) set方法和get方法; f) 一个公有的toString()方法,返回学生的姓名和成绩,格式参考如下: 张三 300.0 (2) Shool类 a) 一个私有的name属性存放培训班的名称; b) 一个私有的Student类型的数组students属性存放培训班的学生; c) 一个无参的和一个有参的构造方法; e) set和get方法; f) 一个公有的getAverageScore()方法,用于返回培训班所招学生的平均成绩, g) 一个公有的toString()方法,用于返回培训班所有学生的姓名和成绩信息,参考格式如下: 提示:调用每一个员工的toString()方法获取学生的信息。 张三 300.0 李四 320.0 王五 290.0 (1) 编程实现两个类; (2) 按要求补充2处测试类代码,测试两个类的功能; (3) 样例如下,输出培训班所有学生的姓名和成绩,并通过调用Shool类的getAverageScore() 方法 ,计算并输出培训班学生的平均成绩: import java.util.Scanner; public class TestShool { public static void main(String[] args){ Scanner scanner = new Scanner(System.in); Student stu1 = new Student(scanner.next(), scanner.nextDouble()); Student stu2 = new Student(scanner.next(), scanner.nextDouble()); Student stu3 = new Student(scanner.next(), scanner.nextDouble()); Shool shool = new Shool(); Student[] students={stu1,stu2,stu3}; //补充代码1:把数组students添加到shool对象中 System.out.println("姓名\t\t" + "成绩"); System.out.println("-------------------------"); System.out.println(shool.toString()); //补充代码:按照样例输出培训班所招学生的平均成绩 } }
下面是两个类的代码实现,以及补充代码的测试类代码:
Student类:
```java
public class Student {
private String name;
private double score;
public Student() {}
public Student(String name, double score) {
this.name = name;
this.score = score;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getScore() {
return score;
}
public void setScore(double score) {
this.score = score;
}
public String toString() {
return name + "\t" + score;
}
}
```
Shool类:
```java
public class Shool {
private String name;
private Student[] students;
public Shool() {}
public Shool(String name, Student[] students) {
this.name = name;
this.students = students;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Student[] getStudents() {
return students;
}
public void setStudents(Student[] students) {
this.students = students;
}
public double getAverageScore() {
double sum = 0.0;
for (Student s : students) {
sum += s.getScore();
}
return sum / students.length;
}
public String toString() {
String result = "";
for (Student s : students) {
result += s.toString() + "\n";
}
return result;
}
}
```
测试类代码:
```java
import java.util.Scanner;
public class TestShool {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Student stu1 = new Student(scanner.next(), scanner.nextDouble());
Student stu2 = new Student(scanner.next(), scanner.nextDouble());
Student stu3 = new Student(scanner.next(), scanner.nextDouble());
Shool shool = new Shool();
Student[] students = {stu1, stu2, stu3};
shool.setStudents(students); // 补充代码1:把数组students添加到shool对象中
System.out.println("姓名\t\t" + "成绩");
System.out.println("-------------------------");
System.out.println(shool.toString());
// 补充代码2:按照样例输出培训班所招学生的平均成绩
System.out.println("平均成绩:" + shool.getAverageScore());
}
}
```
测试结果示例:
输入:
```
张三 300
李四 320
王五 290
```
输出:
```
姓名 成绩
-------------------------
张三 300.0
李四 320.0
王五 290.0
平均成绩:303.3333333333333
```
阅读全文