class TestCourse {
public static void main(String[] args) {
Course course1 = new Course("Data Structures");
Course course2 = new Course("Database Systems");
course1.addStudent("Peter Jones");
course1.addStudent("Kim Smith");
String a1 = new String("Anne Kennedy");
System.out.println(a1);
course1.addStudent(a1);
course2.addStudent("Peter Jones");
course2.addStudent("Steve Smith");
System.out.println("Number of students in course1: " + course1.getNumberOfStudents());
String[] students = course1.getStudents();
for (int i = 0; i < course1.getNumberOfStudents(); i++)
System.out.print(students[i] + ", ");
System.out.println();
System.out.println("Number of students in course2: " + course2.getNumberOfStudents());
String a2 = new String("Anne Kennedy");
// should be false
System.out.println(a2 == a1);
course1.dropStudent(a2);
// String[] students2 = course1.getStudents();
for (int i = 0; i < course1.getNumberOfStudents(); i++)
System.out.print(students[i] + ", ");
}
}
class Course {
private String courseName;
private String[] students = new String[100];
private int numberOfStudents;
public Course(String courseName) {
this.courseName = courseName;
}
public void addStudent(String student) {
students[numberOfStudents] = student;
numberOfStudents++;
}
public String[] getStudents() {
return students;
}
public int getNumberOfStudents() {
return numberOfStudents;
}
public String getCourseName() {
return courseName;
}
public void dropStudent(String student) {
for (int i = 0; i < numberOfStudents; i++) {
if (students[i] == student) { // should refer to different memory
// address but is true? how come?
while (i < numberOfStudents) {
students[i] = students[i + 1];
i++;
}
}
}
numberOfStudents--;
}
}
if (students[i] == student) to my knowledge students[i]should point to a different addresses in memory than student therefore should be false, however I am getting true and don't understand why it is true in this case? Could someone please help elaborate?