본문 바로가기

Java

(54)
Collection 인터페이스 Collection 인터페이스 하나의 객체 Map 인터페이스 key와 value로 이뤄진 객체 Hash -> 검색을 위한 자료구조 key를 바탕으로 index를 찾음
String 객체 String str1 = new String("abc"); ->힙 메모리 String str2 = "abc"; ->상수 풀 따라서 String str1 = new String("abc"); String str2 = new String("abc"); str1 == str2 하면 false String str1 = "abc"; String str2 = "abc"; str1 == str2 하면 true + 연결시에 새로운 메모리로 생성됨 일반 클래스 객체와 String 클래스 객체의 출력이 일반 클래스 객체는 주소값이 출력되는데 반해 String 객체는 내용물이 출력되는 이유는 두 객체 전부 객체가 출력될 때 toString()이 호출 되는데 String은 내용을 일반 클래스는 주소를 출력하도록 구현 되어 있..
Clone 메소드 clone() 객체 복사본 만듬. private마저 복사함. 은닉 위배 Book book2 = (Book)book.clone(); clone은 Object로 반환되므로 Book으로 명시 해줌. Book이 clone 사용하려면 class Book implements Cloneable{ } 이렇게 명시 해 줘야 함.
equals ,hashCode 메소드 equals() 재정의를 통해 어떤 경우에 같은 것인지 설정 해 줄 수 있음. equals의 매개변수가 Object이므로 instanceof로 해당 객체가 원하는 객체 타입인지 조사 후에 다운캐스팅 해서 자신의 멤버 변수와 매개변수의 멤버 변수가 같은지 어떤지 비교 가능. @Override public boolean equals(Object obj) { if(obj instanceof Student) { Student std = (Student)obj; if(this.name == std.name && this.studentnum == std.studentnum) return true; else return false; } return false;} hashCode() 메서드 인스턴스가 저장된 가상머신의..
Object 클래스 Object 클래스는 모든 클래스의 최상위 클래스이고 암묵적으로 모든 클래스는 Object클래스를 extends하고 있음. 모든 Object 클래시는 일부 메소드(final) 제외하고 재정의로 사용 가능. java.lang.Object -> import 안해도 자동 import됨. String 클래스 안에 toString()이 정의되어 있음. Book book = new Book(); System.out.println(book); 하면 클래스와 메모리 주소가 나오는데, String str = new String("토지") System.out.println(str); 하면 str의 내용이 나옴. 이거는 str.toString()이 실행되기 때문이고 String 은 Object클래스에 정의 되어 있으므로 t..
자바 연습 (equals, hashCode) public class Date { public int month; public int day; public int year; public Date(int a, int b, int c) { this.year = a; this.month = b; this.day = c; } @Override public boolean equals(Object obj) { Date temp = (Date)obj; if(this.day == temp.day && this.year == temp.year && this.month == temp.month) return true; return false;} @Override public int hashCode() { return day+month*year; } } class M{..
자바 연습 (인터페이스) public interface Sort { void ascending(); void descending(); void descriprion(); } public class Bubble implements Sort { @Override public void ascending() { System.out.println("버블 어센딩"); } @Override public void descending() { System.out.println("버블 다운센딩"); } @Override public void descriprion() { ascending(); descending(); System.out.println("숫자를 정렬하는 알고리즘 입니다"); System.out.println("버블 알고리즘 입니다")..
인터페이스 default 키워드 인터페이스는 구현 부 없이 그냥 명시만 해놓고 상속받는 클래스에서 구현하는게 원칙인데 default 메소드를 만들어 놓으면 이것이 하위 클래스에서 구현이 되지 않는다면 interface의 메소드로 사용하게 됨. 따라서 하위 클래스는 재정의 가능 & static은 인스턴스 없이 사용 가능. 인스턴스에도 업캐스팅 하면 각각의 인스턴스에 해당하는 메소드만 호출됨.