Java/Java 정리 (8) 썸네일형 리스트형 Map Map은 인터페이스이다. 따라서 구현체가 있어야 하는데, 대표적인 HashMap을 한 번 살펴보도록 하자. HashMap은 키(중복x) 값(중복o) 쌍을 구성하고 있는 컬렉션 클래스이다. Set과 마찬가지로 순서를 유지하지 않는다. 만일 순서를 유지하고 싶으면 LinkedHashMap 클래스를 사용하면 된다. TreeMap이라는 클래스도 있는데, TreeSet과 같은 개념이다. 범위 검색 및 정렬에 유리한 컬렉션 클래스이고 HashMap보다는 데이터 추가 및 삭제에 시간이 더 걸린다. HashMap은 해싱 기법으로 데이터를 저장한다. 해싱 기법에 따라 데이터가 많아도 검색이 빠르다. Map 인터페이스의 여러 함수 **추가** put putAll **제거** remove **검색** containsKey .. Wrapper Class 래퍼 클래스 래퍼 클래스(wrapper Class) 기본형을 객체로 쓰기 위해 만듬. 박싱 언박싱은 컴파일러가 자동으로 해줌(개발자 편의성) 기본형 -> 레퍼 (박싱) 레퍼-> 기본형 (언박싱) 문자열을 바꾸는법 ex) int i = Integer.phaseInt("숫자로 된 문자"); int i2= Integer.phaseInt("FF", 16); --> 16진수로 바꾸어짐. A~F까지 Integer에서 int로 박싱할 경우 ex) int i2 = Integer.valueOf(i); int에서 Integer로 언박싱할 경우 Integer i3 = Integer. 컬렉션 프레임워크 - HashSet Set인터페이스를 구현한 대표적인 컬렉션 클래스. 순서를 유지하려면 LinkedHashSet클래스를 사용하면 된다. // 자바 1.4 버전 이상부터 TreeSet - 범위 검색과 정렬에 유리한 컬렉션 클래스. HashSet보다 데이터 추가 및 삭제에 시간이 더 걸린다. HashSet은 중복과 순서를 허용하지 않는다. 따라서 중복되는 값을 걸러내는데 아주 큰 도움이 되는 Set의 구현체이다. HashSet의 add() 함수는 내부적으로 클래스의 equals() 및 hashCode()를 호출하여 중복되는 값을 걸러낸다. 자바에서 제공해주는 클래스가 아닌 사용자가 임의로 만든 클래스는 equals() 및 HashCode()를 오버라이딩 해주면 된다. 오버라이딩 하지 않으면 HashSet은 임의의 클래스를 비교.. 제어자 (modifier) *** 접근 지정자*** 1. public : + 제약x 서로 다른 패키지도 접근 가능. 2. protected # 같은 패키지만 접근 가능, 패키지가 달라도 접근 가능할 경우는 상속 관계여야한다. 3. default 같은 패키지만 접근 가능 4. private: - 같은 클래스에서만 접근 가능 위 접근지정자 순으로 public -> private (1~4번순)으로 갈수록 제약이 커진다. ***static *** 클래스 작성의 경우 outer 클래스 및 inner 클래스가 있음 위 두가지 클래스를 동시 사용시 inner 클래스에서만 사용 가능하다. 메서드에서 사용할 시, 객체 생성 없이 메서드를 사용하기 위함. 변수: 프로그램 내에서 특정 데이터 값을 계속 유지할 목적이라면 static 변수가 적합. s.. 패키지(Package) 기본적으로 package가 다르면 서로 접근이 불가능하다. 이것을 가능하게 하는 방법이 import 문을 사용하는 것이다. 문법: import 패키지명.패키지명2.클래스명; ==> ex) com.google.Object (일반적으로 도메인을 거꾸로) import 패지지명.패키지명2.*; ==> * 에스크리터는 패키지 안 클래스 모두를 사용한다는 의미.// 권장하지 않음 why? 어떤 클래스를 사용하는지 모르기 때문. 패키지명을 안써도 디폴트 패키지가 자동으로 만들어진다. api 문서를 보면 알 수 있겠지만, java.lang 패키지는 따로 import 시키지 않아도 된다. -> 많이 쓰여서 알아서 import 됨 패키지는 클래스 관리를 용이하기 위해 사용한다. -> 그만큼 파일을 잘 관리할 것. 패키지명.. 인터페이스 (Interface) 인터페이스(Interface) 일반클래스, 추상클래스 ,인터페이스도 독립적인 .java 파일로 만들 수 있다. 1.public interface 인터페이스명{} 2. 구성요소 == 생성자는 못가짐 1) 상수, 추상메서드, default 메서드, static 메서드 상수: public static final 자동 생성( 자동 상수화 ) ex) int num = 3; 이라고 인터페이스에 작성하면, 자동으로 public static fianal int num = 3; 로 인식된다. 2) 추상메서드 = public abstract 자동 생성 3) default 메서드 = public default void b(){} 4) static 메서드 = public static void c(){} 3. 추상클래스와 비슷.. 추상(Abstract) 일반클래스(concreate class) => 콘크리트처럼 딱딱하게 굳어 구체화된 클래스 1. public class 클래스명 { 구성요소} 2. 구성요소 ==> 변수, 메서드, 생성자 3가지 3. 객체 생성 가능 추상클래스(abstract class) 1. 추상클래스라고 해서 반드시 추상 메서드를 만들 필요는 없지만, 추상 메서드를 만들기 위해선 반드시 추상 클래스를 생성해야 한다. 2. public abstract class 클래스명{구성요소} 3. 구성요소 변수, 메서드, 생성자, 추상메서드(abstract method) 4. 객체 생성 불가 (new 불가) why? ==> 불완전한 클래스이기 때문. 불완전한 클래스에 대한 설명: 기능 구현이 미정이기 때문에 그렇다. ex) 일반 메서드의 경우 pu.. 상속 (Inhereritance) *****상속***** JAVA 의 클래스 간 관계 has a 관계 ==> 멤버 is a 관계 == > 상속 상속은 extends 키워드를 사용하여 부모클래스의 정보를 자식 클래스에서 사용하게 된다. UML에서 상속 관계는 실선 화살표 심볼이다. 문법 => public class 자식클래스명 extends 부모클래스명{} 부모 클래스에도 또 부모클래스가 있는데, Object 클래스(최상위 클래스)가 있다. 인스턴스 object와 다름.(대, 소문자) => A클래스가 B 클래스의 부모 클래스면, 실제로는 은연으로 extends Object 클래스가 삽입된다. ex) public class A (extends Object) {}; 자식은 부모 생성자를 상속 받을 수 없다. 2. private -> priva.. 이전 1 다음