목록분류 전체보기 (94)
우주코딩
wrapper 클래스 primitive 타입은 Object 의 서브타입이 아니기 때문에 Object 레퍼런스에 담을 수 없다. primitive 타입을 wrapper 클래스에 담아서 Object 레퍼런스에 담을 수 있도록 한다. wrapper 클래스 = Object 의 서브타입 new Integer (int); new Float(float); new Boolean(boolean); primitive 값을 객체화하는 용도로 사용하기 위해 만든 클래스 primitive type wrapper 클래스 byte Byte short Short int Integer long Long float Float double Double boolean Boolean char Character Wrapper 클래스의 인스턴스..
String 클래스 String 레퍼런스 String은 자바 기본 타입이 아니다. 클래스이다. String s1; s1은 String 인스턴스 주소를 담는 레퍼런스이다. String 인스턴스 힙에 문자 코드를 저장할 메모리를 만들고 그 주소를 리턴한다. 내용물의 동일 여부를 검사하지 않고 무조건 인스턴스를 생성한다. 가비지가 되면 가비지 컬렉터에 의해 제거된다. 문자열 리터럴 String s1 = "Hello"; Method Area영역에 String 인스턴스 생성 기존에 같은 문자열이 이미 있다면 기존 인스턴스의 주소를 리턴한다.메모리 절약을 위해 중복 데이터를 갖는 인스턴스를 생성하지 않는다.JVM이 끝날 때까지 메모리에 유지된다. intern() 지정된 String 객체를 상수풀에서 찾는다. 있으면..
Object 클래스와 getClass() 메서드 Object 클래스의 getClass() 메서드는 인스턴스의 클래스 정보를 리턴한다. 리턴타입이 클래스이다. My obj1 = new My(); Class classInfo = obj1.getClass(); 이 클래스는 오버라이딩 하지 않는다. Object 클래스와 clone() 메서드 clone()은 인스턴스를 복제할 때 호출하는 메서드이다. 인스턴스 복제 방법1: 직접 복제한다. 즉 새 객체를 만들어 기존 객체의 값을 저장한다. static class Score{ String name; } Score s1 = new Score("홍길동"); System.out.println(s1); Score s2 = new Score(s1.name); // s1과 s..
해시값 2 해시값 활용 예 2 원본 파일인지 검사할 때, 해커에 의해 왜곡된 데이터가 아닌지 검사할 때 해시 알고리즘 = 해시값을 생성하는 식 (MD5, SHA, PGP) 등 서버 컴퓨터에서 개인 컴퓨터로 파일을 다운로드 할 때, 해커가 전송 데이터를 왜곡하여 해킹 코드가 삽입된 파일을 다운로드 String 클래스의 hashCode() 메서드는 같은 문자열에 대해 같은 해시값을 리턴한다. String s1 = "Java"; String s2 = "Java"; System.out.println(Integer.toHexString(obj1.hashCode())); // 같은값 System.out.println(Integer.toHexString(obj2.hashCode())); // 같은값 Map에 값을 저..
Object 클래스와 hashCode() 메서드 hashCode() 해시코드 = 디지털 지문 데이터를 구분할 때 사용하는 식별번호(정수값) Date ---- 요약값(Message Digest) ---- 해시값 해시코드 쓰는 이유? 데이터 동일 여부 검사 (요약하는 알고리즘) 두개의 데이터를 비교할 때 1바이트 씩 순서대로 원본 비교를 하는 것 보다 요약데이터를 갖고 비교해서 비교 속도를 더 빠르게 하기위해 해시 값을 쓴다. 원본을 비교하는 것 보다 요약데이터, 즉 해시값을 비교하는 것이 훨씬 시간이 적게 든다. => 현실세계도 시간이 중요하다! ex) 파일공유 사이트에서 같은 파일인지 비교할 때 해시값을 사용한다. 해시값 Data를 특별한 _수학공식_으로 계산하여 만든 작은 정수값 원래 데이터를 요약한 ..
Object 클래스와 equals() 메서드 equals() Object에서 상속 받은 equals()는 == 연산자와 마찬가지로 인스턴스가 같은지를 비교한다. 만약 그 내용물이 같은지 비교하고 싶다면 equals()를 재정의 하라!System.out.println(obj1.equals(obj2)); //false System.out.println(obj1 == obj2); // false Object에서 상속 받은 것을 그대로 사용하면 equals()는 인스턴스가 같은지 비교한다. => 인스턴스의 내용물이 같은지 비교하도록 만들고 싶다면 equals()을 오버라이딩 하라! => String와 wrapper 클래스는 equals() 오버라이딩 하였다. => StringBuffer 클래스는 equals()..
Object 클래스와 toString 메서드 Object에서 상속 받은 메서드 toString() 클래스 정보를 간단히 출력한다. 패키지명.클래스명@16진수해시값 예) ch15.My1@1e81f4dc println()에 넘겨주는 값이 String 타입이 아니라면 println()은 그 객체에 대해 toString() 호출한 후 그 리턴 값을 출력한다. System.out.println(obj.toString()); // System.out.println(obj); // 둘은 결국 같은 코드이다. 해시값? 인스턴스 마다 부여된 고유의 식별자이다. 주의! 주소 아니다! 인스턴스가 같은지 검사할 때 사용할 수 있다. hashCode()를 재정의하지 않고 원래 메서드를 그대로 사용하면 무조건 인스턴스마다 새 해..
추상멤버 사용하기 oop - 07 - b,c 상속받은 메서드(sort)를 서브클래스에서 재정의하도록 강제한다. 메인 메서드에서 수퍼클래스인 Sorter를 통해 서브클래스의 인스턴스들 (QuickSort, BubbleSort)을 생성할 수 있도록 만든다. 이를 통해 두 클래스의 사용법을 통일한다. static void display(Sorter sorter, int[] values) { // 정렬 객체의 클래스가 뭔지 상관없다. // 그 클래스를 사용할 때는 공통 분모가 되는 // 수퍼 클래스의 메서드를 호출한다. sorter.sort(values); 수퍼클래스를 정의해서 generalization을 하는 이유이다. (다형적 변수!) *Sorter는 서브클래스를 같은 타입으로 묶기 위해 만든 클래스이다. ..