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?
 
     
    