목록Java/자바 기본 문법 (68)
가자미의 개발이야기
-이전 방식의 열거형 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 interface Animal{ int DOG =1; int CAT =2; } interface Person{ int MAN =1; int WOMAN =2; } public class PastJava { public static void main(String[] args) { who(Person.MAN);//정상적 호출 who(Animal.DOG);//비정상적 호출 //두번째 오류가 컴파일 및 실행 과정에서 드러나지 않음!!! } public static void who(int man) { switch(man) { case Person.MAN: ..
-정렬 --public static void sort(List list) ---Coparable을 구현하는 T를 가진 제네릭 메소드 1 2 3 4 5 6 7 8 9 10 11 12 13 import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.ArrayList; public class SortPractice { public static void main(String[] args) { List list = Arrays.asList("TOY","BOX","ROBOT"); list= new ArrayList(list); Collections.sort(list);//정렬 //public static ..
a. Map iterator 인터페이스를 구현하지 않음, 따라서 반복자를 활용하지 않음 하지만 Key는 Set로 구현되어 있어서 반복자를 얻어올 수 있다!! 즉 Key의 반복자로 접근해서 활용가능 Collection메소드는 중복되어 제외. 메서드 설명 boolean containsKey(Object key) key 객체와 일치하는 키값이 있으면 참 boolean containsValue(Object value) value 객체와 일치하는 밸류값이 있으면 참 Set entrySet() key value타입 Map을 entry 타입의 객체로 저장한 Set반환 Set keySet() 저장된 키들을 Set으로 반환 void putAll(Map t) t의 모든 key value객체를 추가한다 Collection ..
a. Set 중복 안되고 순서가 없는 집합 개념 메소드는 Collection 메소드와 동일 b. HashSet 순서 상관x, 중복 허용 안됨 중복요소 제거하고 싶으면 HashSet 순서를 유지하고 싶으면 LinkedHashSet #생성자 HashSet() 해쉬셋 객체생성 HashSet(Collection c) 주어진 컬렉션을 포함하는 해쉬셋 객체생성 HashSet(int initialCapacity) 초기 용량을 가진 해쉬셋을 생성 HashSet(int initialCapacity, float loadFactor) 초기 용량과 load factor를 지정하는 생성자 메소드는 Collection 메소드와 거의 동일 --Set를 구현하는 HashSet클래스의 예시 1 2 3 4 5 6 7 8 9 10 11 ..
a. 컬렉션 프레임워크 란? 데이터 군을 저장하는 클래스들을 표준화한 설계 인터페이스 특징 List 순서가 있는 데이터 집합. 중복 허용 구현 클래스 : ArrayList, LinkedList, Stack, Vector Set 순서가 없는 데이터 집합, 중복 허용하지 않음 구현 클래스 : HashSet, TreeSet 등 Map key와 value의 쌍으로 이뤄진 집합. 순서가 없고, key는 중복 허용하지 않고, value는 중복을 허용한다. 구현 클래스 : HashMap, TreeMap, Hashtable 등 a-1. Collection 인터페이스 메서드 메서드 설명 boolean add(Object o) boolean addAll(Collection c) 객체나 콜렉션에 담긴 객체들을 콜렉션에 추가..
a. 와일드카드 위가 제네릭 메소드, 아래가 와일드카드 메소드이다. 기능적으로는 동일하지만 와일드카드가 더 간결하므로 와일드 카드를 선호한다. 제네릭 타입에 다형성을 적용하기 위함. 표현 와일드카드 종류 설명 와일드카드 제한 없음. 모든 타입 가능
a. 제네릭 클래스와 상속 제네릭 클래스가 상속하려면 타입매개변수가 같아야한다.. SteelBox은 Box를 상속받지 않는다! b. 타겟 타입 제네릭 클래스 Box와 제네릭 메소드 EmptyBoxFactory의 상황을 유심히보자 Box의 타입 매개변수에 맞춰 EmptyBoxFactory의 메소드도 결정된다. 이걸 타겟 타입이라고 부른다. c. 제네릭 메소드와 일반 메소드의 차이 위는 제네릭 메소드 아래는 일반 메소드이다. 제네릭과 일반메소드 모두 Box의 인스턴스를 요구한다. 이때 일반 메소드는 오직 Object를 타입으로 한 Box인스턴스만 가능하다!!!(제네릭 클래스의 상속 참고) 제네릭 메소드는? Integer String...모두 가능!
a. 제네릭 자바의 제네릭은 프로그래머의 실수를 막기 위해 탄생했다. 번거로운 형변환 등 코드 작성할 때 고민해야될 부분을 줄여준다. -제네릭은 어떤 클래스를 생성할 때 클래스 멤버의 자료형을 상황에 따라 맞추겠다는 의미이다. -제네릭을 사용할 때 클래스 이름 뒤에 로 표시하면 된다. 이렇게 제너릭화 된 클래스를 인스턴스 선언할 때 Box aBox = new Box(); 이렇게 제너릭에 해당하는 부분을 어떻게 채울지를 선언하면 된다. 여기서 T를 타입 매개변수라고 하고 Apple을 타입 인자라고 한다. Box는 제네릭 클래스라고 하고, Box는 원시타입이라고 한다. b. 다중 매개변수 기반 제네릭 클래스 타입 매개변수 이름의 규칙 대문자로 한 문자로 이름을 짓는다. E Element K Key N Num..
a. Arrays 클래스 java.util.Arrays 에 정의되어 있는 클래스. 모든 메소드는 static(정적) 메소드이므로, Aarays 클래스로 바로 사용이 가능 b. 배열 복사 메소드 메소드 매개변수 반환 값 비고 int[] copyOf(int[] arr, int len) 원본 배열, 길이 원본의 특정 길이까지 복사된 배열 int말고도 다양한 배열 가능, 원본보다 더 길게 복사하면 기본값(0)으로 초기화 int[] copyOfRange(int[] arr, int start, int end) 원본 배열, 시작, 끝 원본의 시작~끝-1까지 복사 끝-1에 유의 int 말고도 다양한 배열 가능 void arraycopy(int[] arr, int index1, int[] arr2, int index2,..
a. 래퍼 클래스 -기본 자료형 값을 갖고 있는 인스턴스를 생성하는 클래스 -인스턴스를 인자로 요구할 때 기본 자료형 값을 전달해야 되는 경우 -Boolean, Character 등... 임의적인 박싱언박싱 -박싱: 기본 자료형 값을 래퍼클래스로 인스턴스화 한 행위 -언박싱: 래퍼클래스의 인스턴스로부터 값을 꺼내온 행위(인스턴스명.자료형명Value();) -래퍼클래스는 immutable인스턴스를 갖기 때문에 연산을 위해서는 새로운 인스턴스를 만들어야함. -빈번한 연산을 해야하는 경우 비효율적. int i = 1; Integer i2 = new Integer(i); //boxing int i3 = i2.intValue(); //unboxing 오토 박싱과 오토 언박싱 -인스턴스 생성이나 메소드를 활용하지 ..