목록Programming/JAVA (11)
Be ready to study forever - 개발자 꿈나무
Annotation 주석처럼 프로그램에 별다른 영향을 미치지 않지만 추가적인 정보를 달아 유용한 정보를 제공한다. @interface 와 같은 형태를 하고 있으며 컴파일시에 추가적인 정보를 전달하여 .class 파일에 적용된다. 1. 어노테이션 개요 1.2. 표준 어노테이션 @Override 메서드 앞에 붙어 상속받은 클래스에서 오버라이드를 제대로 했는지 체크해주는 어노테이션이다. 오버라이드한 메서드에 @Override를 붙이면 상속해주는 클래스에 이름이 같은 메서드가 있는지 확인하고 없는경우 오류를 발생시킨다. 오버라이드 할경우 @Override어노테이션이 필수는 아니지만 실수를 줄이기 위해 붙이는 것이 권장된다. @Deprecated 해당 어노테이션은 붙이면 메서드나 프로퍼티가 다른것으로 대체되었으니..
Enums – 열거형 상수관리를 편하게 선언하기 위해서 여러 상수를 정의할 때 사용하면 편리하다. 아래의 그림과 같이 Enum으로 한번에 관리가 가능하며 맴버에 접근할 때에는 Static 프로퍼티처럼 Kind.DIAMOND로 접근할 수 있다. 1.열거형의 조상 – java.lang.Enum 열겨형은 아래의 메소드를 상속받으므로 아래의 메소드를 호출할 수가 있다. 예제 2. 열겨형의 멤버 추가 열겨형의 상수 안에 멤버를 추가해 줄 수 있다. package com.admin.study.admin.model.enumclass; import lombok.AllArgsConstructor; import lombok.Getter; @AllArgsConstructor @Getter public enum ItemSta..
Generics Generics는 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시에 타입체크를 해주는 기능이다. 예를들면 ArrayList는 Object 타입의 모든 클래스를 담을 수 있다. 이런 과정에서 발생할 수 있는 문제는 데이터를 꺼내 올 때 타입이 다른 경우 오류를 낼 수 있는 가능성 이 있기 때문에 ArrayList arrayList = new ArrayList 과 같이 Generics를 활용해서 한가지 타입만 받을 수 있도록 한 것이다. 1. Generics의 선언 위쪽 코드의 경우 발생 할 수 있는 문제는 새 객체를 생성하면 item은 Object클래스이기 때문에 모든 타입의 매개변수를 받을 수 있다. 위에 언급한 것과 같이 이럴 경우 형변환의 문제로 인해 오류 발생 가능..
Collection Framework – Map 1.HashMap HashMap은 Key와 Value가 하나의 데이터(entry)로 묶여 저장되는 특징이 있다. 해싱기법을 사용해서 많은 양의 정보를 검색하는데 성능이 좋다. 키 값은 중복이 불가능 하지만 벨류 값은 중복이 허용된다. 또한, 저장되는 순서가 없는 것이 특징이다. HashMap은 put()메서드로 중복된 키값을 저장하려 하면 기존에 있던 키 값의 벨류 값을 덮어 쓰기하는 방식으로 작동하기 때문에 주의해야 한다. HashMap은 null값을 허용하기 때문에 주의할 것. *HashSet은 add()메서드로 저장하려 할 경우 값을 저장하지 않고 false를 반환함으로써 저장 실패를 알린다. 1.1. HashMap의 Entry HashMap은 Ent..
Collection Framework – Set 1. HashSet HashSet은 Set인터페이스를 구현한 컬렉션이므로 중복이 허용되지 않고 순서 또한 존재하지 않는다. add(Object o)메서드나 addAll(Collection c)메서드는 리턴 값을 boolean으로 하며 중복이 있어 추가되지 않으면 false를 반환한다. HashSet은 저장 순서가 없으므로 저장되는 순서를 원한다면 LinkedHashSet을 활용하면 된다. *HashSet은 내부적으로 HashMap을 이용하여 만들어졌다. 1.1. HashSet 메서드 1.2. HashSet의 과 equals( ), hashCode( ) HashSet의 Add메서드를 사용하여 인스턴스를 추가할 때 인스턴스의 객체에 equals()와 hashC..
컬렉션 프레임워크 컬렉션은 여러 개의 데이터그룹을 의미하면 프레임워크는 표준화된 프로그래밍 방식을 의미한다. 따라서, 컬렉션 프레임워크란 데이터의 집합을 표준화된 방식으로 프로그래밍을 할 수 있게 도와주는 방식으로 jdk 1.2부터 지원됨 1. 컬렉션 프레임워크 핵심 인터페이스 컬렉션 데이터는 크게 3가지의 그룹으로 나뉜다. List, Set, Map List와 Set은 공통되는 부분이 있어 Collection인터페이스를 상속받지만 Map은 그렇지 않다. 아래의 표를 보면 좀더 정확한 상속 구조를 알 수 있다. 1.1 컬렉션 프레임워크 인터페이스 메서드 1.2. List 인터페이스 메서드 1.3. Set 인터페이스 메서드 1.4. Map 인터페이스 메서드 2. ArrayList List인터페스이를 상속받..
4. Math클래스 4.1.Math클래스의 자주 쓰이는 메서드들 5. Wrapper클래스 int double등의 기본형 데이터타입을 때로는 객체로 다뤄야할 때가 있다. 이때 Wrapper클래스를 사용하게 된다. 8개의 기본형타입이 있으므로 Wrapper클래스 역시 8개의 Wrapper클래스가 존재한다. 모든Wrapper크래스들은 equals()와, toString()이 오버라이딩 되어있고 toString()메서드를 사용할 경우 String으로 반한다. 5.1. Wrapper클래스의 종류 5.2. Number클래스 기본형 데이터 타입 중에서 숫자는 모두 Number클래스의 상속을 받는다. 내부적으로는 Number클래스는 추상화 클래스로 내부적으로는 객체가 가지고 있는 값을 기본형으로 변환하는 작업을 한다...
3. StringBuffer 클래스와 StringBuilder 클래스 String으로 생성된 인스턴스는 immutable(변경불가능한)이지만 StringBuffer로 생성된 인스턴스는 append, delete등 수정이가능하며 Buffer를 가지고 있다. 기본적으로 비슷한 내용이면 내부적으로 char[]배열을 가지고 있다. * buffer란 완충하기 위한 임의의 값 예를들면 동영상의 버퍼링은 원활한 비디오 스트림을 위해 일정이상의 buffer를 가지며 이를 버퍼링이라고 한다. *StringBuffer의 인스턴스를 생성할 때 충분한 buffer를 생성해 주는 것이 좋다. 3.1 StringBuffer의 생성자 버퍼의 크기를 생성자에서 지정해 주지 않는다면 기본버퍼는 매개변수 스트링 크기 + 16개 char..
2. String 클래스 String 클래스는 사실 기본형타입 char[]를 배열로 가지고잇는 ‘문자열’이다. 문자열은 immutable, 즉, 한번 선언하면 변결 될 수가 없다. 사실, 문자열들을 +로 결합하면 새로운 String인스턴스를 생성하는 것이다. immutable예제 2.1. String str = “abc” 와 String str = new String(“abc”)의 비교 String str = “abc”로 선언될 경우 “abc”는 상수화 되고 “abc”의 주소값이 str에 저장된다. 따라서 String str2 = “abc”로 새로 선언한다 해도 str2도 똑같은 주소값을 가지게 된다. 하지만 String str = new String(“abc”)로 선언하면 새로운 인스턴스를 생성하는 것..
java.lang 패키지 자바 프로그래밍에 기본이 되는 클래스를 포함하고 있기 때문에 따로 import 과정없이 바로 사용될 수 있다. String, System클래스가 java.lang패키지에 속하기 때문에 따로 import없이 할 수 있었던 이유이다. 1. Object 클래스 Object클래스는 모든 클래스의 조상이므로 모든 Object클래스의 메서드를 기본적으로 상속받고 있다. 따라서 toString(), hashCode(), equals() 와 같은 메서드들은 모두 사용 가능하며 때에 따라서는 오버라이드 해서 사용한다. 1.1. equals(Object obj) 메서드 매개변수로 객체의 참조변수를 받아서 비교하여 boolean으로 같으면 true 다르면 false로 반환한다. equals() 클래..