💡 해당 글은 『자바의 신 3판』을 복습하며 도서의 내용과 본인의 주관적인 생각을 정리한 글입니다. ☁️ 내용정리 JCF (Java Collection Framework) 자바에서 목록형 데이터를 처리하는 자료구조를 지원하는 프레임워크이다. 자료 구조란 하나의 데이터가 아닌 여러 데이터를 담을 때 사용하는 데이터 구조이다. 컬렉션이 왜 생겼을까? 정적으로 메모리를 할당하고 사용하는 배열은 실제 사용에서 불편한 점이 많다. 배열이 가득찬다면 배열을 카피하고 더 큰 메모리를 가지는 배열에 복사하는 로직이 필요할 것이고, 중복을 제거하고 싶디면, 배열을 순회하며 중복인 원소를 지워주는 로직이 필요할 것이다. 이러한 로직은 프로그램 개발에서 자주 쓰이기 때문에 미리 만들어 둔 것이다. JCF에서는 크게 4가지로..
분류 전체보기
generic은 wildcard와 달리 Lower Bounded를 지원하지 않는다. public Collection copy(Collection target) { } // 이건 되는데 public Collection copy(Collection target) { } // 이건 안됨 Type Erasure generic은 컴파일타임에 타입 안정성을 보장받는 것이다. Generics were introduced to the Java language to provide tighter type checks at compile time and to support generic programming. To implement generics, the Java compiler applies type erasure - ..
💡 해당 글은 『자바의 신 3판』을 복습하며 도서의 내용과 본인의 주관적인 생각을 정리한 글입니다. ☁️ 내용정리 Generic 제네릭이란 여러 타입을 컴파일 타임에 지정하여 저장하기 위한 개념이다. 제네릭을 사용하면 형 변환 시 발생할 수 있는 문제를 사전에 제거할 수 있다. 예를 들어, 아래와 같은 상황이다. public class GenericTest { private final Objcet value; public GenericTest(Object value) { this.value = value; } public Object getValue() { return value; } } GenericTest g1 = new GenericTest(new String()); GenericTest g2 = ..
💡 해당 글은 『자바의 신 3판』을 복습하며 도서의 내용과 본인의 주관적인 생각을 정리한 글입니다. ☁️ 내용정리 java.lang 자바에서 기본으로 제공하는 라이브러리이다. import를 하지 않아도 사용할 수 있다. 아래는 자바의 신에서 중요하다고 언급하는 java.lang의 클래스이다. 문자열: CharSequence, String, StringBuilder, StringBuffer 기본 자료형 및 숫자: 기본자료형 래퍼클래스들, Math, Number 쓰레드: Runnable, Thread, ThreadGroup, ThreadLocal 예외: Throwable, Exception, RuntimeException 대표적인 에러 OOME(OutOfMemoryError): JVM의 메모리가 부족하면 발..
💡 해당 글은 『자바의 신 3판』을 복습하며 도서의 내용과 본인의 주관적인 생각을 정리한 글입니다. ☁️ 내용정리 자바의 창시자는 제임스 고슬링이다. JDK 6 이전과 이후로 각각 SUN, Oracle이 개발하고 있다. JDK는 여러 벤더가 존재한다. 각 벤더의 JDK는 내부 동작이 다를 수 있다. 하지만 버전만 동일하다면 자바 프로그램을 실행하는 데에는 아무런 문제가 없다. 나는 레퍼런스가 많은 오라클이나 OpenJDK를 자주 사용하는 편이다. 용어 정리 JDK: Java Development Kit 자바 개발 키트이다. 소스 코드를 바이트 코드로 변경할 수 있게 javac를 제공하며, 디컴파일 할 수 있는 javap 등 여러 툴과 API를 제공한다. JRE가 포함된다. JRE: Java Runtime..
💡 해당 글은 『자바의 신 3판』을 복습하며 도서의 내용과 본인의 주관적인 생각을 정리한 글입니다. ☁️ 내용정리 객체지향 개발과 관련된 용어들 클래스 상태와 행위를 가지는 자바의 정적인 기본 단위이다. 객체를 생성하기 위한 레시피이다. 상태와 행위 상태란 클래스 혹은 인스턴스 변수이다. 행위는 메서드이다. 캡슐화 캡슐화는 상태와 행위를 하나의 클래스로 묶는 것이다. 캡슐화를 통해 외부로 공개하지 않아도 되는 상태 혹은 행위에 접근을 막을 수 있다. 메시지 메서드에서 다른 메서드를 호출하는 상호작용을 의미한다. 값을 전달할수도 하지 않을 수도 있다. 객체 객체란 클래스를 기반으로 생성되어 힙에 할당된 인스턴스이다. 상속 상속이란 다른 클래스의 자원을 물려받아 사용할 수 있다는 개념이다. 클래스를 확장하는..
💡 해당 글은 『자바의 신 3판』을 복습하며 도서의 내용과 본인의 주관적인 생각을 정리한 글입니다. ☁️ 내용정리 어노테이션 어노테이션이란 메타데이터라고 물리기도 하며, @(at) 문자를 통해 표현할 수 있다. 어노테이션은 코드에 부가적인 정보를 제공하는 데 사용되는 표현 방법이다. 어노테이션은 소스코드에 주석 형태로 추가되어 컴파일러, 런타임 환경 또는 다른 프로세스에게 특별한 정보를 전달한다. 대표적인 어노테이션은 다음과 같다. @Override: 해당 어노테이션이 선언되어 있는 메서드는 오버라이드됨을 컴파일러에게 알려줌 @Deprecated: 해당 메서드는 더 이상 사용되지 않는다는 것을 컴파일러에게 알려줌 + 경고 @Supress Warnings: 경고를 무시한다고 컴파일러에게 알려줌. (사용 시..
💡 해당 글은 『자바의 신 3판』을 복습하며 도서의 내용과 본인의 주관적인 생각을 정리한 글입니다. ☁️ 내용정리 Nested class 자바에서 클래스 안에 클래스가 들어갈 수도 있다. 이를 Nested class라 말한다. 클래스 안에 클래스를 선언하는 이유는 특정 클래스가 해당 클래스에서만 쓰이는 경우, 내부에서 간단하게 구현되어 사용되는 경우, 특정 클래스에 종속되는 개념인 경우 등이 있는데, top-level class로 선언되어서 얻는 이점이 없기 때문에 nested class로 선언한다. 한 곳에서만 사용되는 클래스를 논리적으로 묶어서 처리할 필요가 있는 경우 특정 클래스의 private 자원을 특정 클래스에서 접근하고 싶은 경우 (캡슐화를 위해) 가독성을 위해 Nested class는 크게..
💡 해당 글은 『자바의 신 3판』을 복습하며 도서의 내용과 본인의 주관적인 생각을 정리한 글입니다. ☁️ 내용정리 String String은 개발하면서 아주 빈번하게 사용되는 객체 중 하나이다. public final class String extends Object implements Serializable, Comparable, CharSequence, Constable, ConstantDesc // after java 12 Object 클래스를 확장하며, Serializable, Comparable, CharSequence 인터페이스를 구현한다. String 클래스는 final 으로 선언되어 있어 상속받아 확장하는 것이 불가능하다. String은 보통 아래와 같이 선언한다. String a = "a..