목록JAVA 문법 (40)
Super Coding Addict
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/b2CvSU/btqYE8HcNsV/S5mftrFcYcs0y1Ek0nW0Z1/img.png)
- 예제 package ch10.object; class Student{ int studentNum; String studentName; public Student(int studentNum, String studentName) { this.studentNum = studentNum; this.studentName = studentName; } @Override public boolean equals(Object obj) { if( obj instanceof Student) { Student std = (Student)obj; //다운캐스팅 return (this.studentNum == std.studentNum); } return false; } @Override public int hashCode(..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cvqO5H/btqYW3cOfHG/RyhzTElEyPh8dY8kruQmZ1/img.png)
* equals()메서드 - 두 객체의 동일함을 논리적으로 재정의 할 수 있음 물리적 동일함 : 같은 메모리 주소를 가지는 객체 논리적 동일함 : 같은 학번의 학생 등처럼 논리적으로는 동일한 객체 => 물리적으로는 다른 메모리에 위치한 객체이더라도, 논리적으로는 동일함을 구현하기 위해 사용하는 메서드 - 예제 # EquaslTest 클래스 package ch10.object; public class EqualsTest { public static void main(String[] args) { String str1 = new String("abc"); String str2 = new String("abc"); System.out.println(str1 == str2);//메모리 주소 비교 System.o..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/yTvfY/btqYLzRbYNt/9iDeqvdTALPl7d0zGS1X30/img.png)
* Object 클래스 - java.lang.Object 클래스 - 모든 클래스의 최상위 클래스 => 모든 클래스는 Object 클래스에서 상속을 받음 => 모든 클래스는 Object 클래스의 메서드를 사용 가능 => 모든 클래스는 Object 클래스의 일부 메서드 재정의하여 사용 가능 (final로 정의된 메서드들은 재정의 불가) - 예제 # ToStringTest 클래스 package ch10.object; class Book{ String title; String author; public Book(String title, String author) { this.title = title; this.author = author; } @Override public String..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/4rgQw/btqYN2kPOK6/aaJ1jtzA8VapTAyujuv9AK/img.png)
* 익명 이너클래스 - 하나의 인터페이스나 하나의 추상클래스에 대해서 바로 생성을 할 수 있다 (원래 인터페이스나 추상클래스를 생성하려면 상속을 받은 클래스를 만들고 생성해서 써야하는 데) --> 안드로이드 위젯 핸들링할 때 (버튼이나 텍스트 박스 등) 화면 터치나 클릭하는 일들이 있는데, 거기서 사용되는 모든 위젯 핸들러들을 이런 익명 이너클래스를 사용 - 지역 내부 클래스 예제 # LocalInnerClass 클래스 package ch12.innerclass; class Outer{ int outNum = 100; static int sNum = 200; Runnable getRunnable(int i) { int num = 100; //상수 (i도 상수임) class MyRunnable implem..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bwPkQ5/btqYN01BeV7/vYxNyIOyIoXKmXK4TxO1dk/img.png)
* 내부 클래스? - 클래스 내부에 구현한 클래스 - 클래스 내부에서 사용하기 위해 선언하고 구현하는 클래스 * 내부 클래스 유형 - 인스턴스 내부 클래스 / 정적 내부 클래스 / 지역 내부 클래스 / 익명 내부 클래스 - 예제 # InnerTest 클래스 package ch12.innerclass; class OutClass{ private int num = 10; private static int sNum = 20; private InClass inClass; public OutClass() { inClass = new InClass(); } class InClass{ int iNum = 100; //*static int sInNum = 200; --> InClass가 static..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/sy22g/btqYDkfR6y5/gC9AgulPuTJWtzgkQkwEO1/img.png)
* Map 인터페이스 - key-value쌍의 객체를 관리하는 데 필요한 메서드가 정의 됨 - key는 중복될 수 없다 - key를 이용하여 값을 저장 / 검색 / 삭제 - 내부적으로 hash 방식으로 구현 됨 ( index = hash(key) //index는 저장 위치) - key가 되는 객체는 객체의 유일성 여부를 알기 위해 equals()와 hashCode() 메서드를 재정의 * HashMap 클래스 - Map 인터페이스를 구현한 클래스 중 가장 일반적으로 사용 - HashTable 클래스는 자바2부터 제공된 클래스로 Vector처럼 동기화를 제공 - pair 자료를 쉽고 빠르게 관리 가능 * TreeMap 클래스 - key로 정렬이 됨 => Key를 Comparable이..