객체지향 프로그래밍(Obect-Oriented Programming) 🤔 정의 객체지향 프로그래밍이라는 단어를 많이 들었을것이다. 이는 프로그래밍에서 필요한 데이터들을 추상화시켜 상태와 행위를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구
앞서 OOP를 포스팅하면서 언급했던 특징들에 대해 좀 더 세부적으로 정리하려고 한다.추상화
JVM(Java Virtual Machine) 이란? 🤔 정의 자바 바이트 코드를 실행할 수 있는 주체, java 소스코드를 CPU가 인식하지 못하기 때문에 기계어로 컴파일하는 과정이 필요하다. 컴파일 과정이 끝나면 바이트 코드(.class)가 나온다. 그렇지만 바이
클래스 "객체를 정의한 틀"
<span style="background-color:제네릭 없이 객체를 여러 자료형으로 받을 수 있도록 설계한다면 int, float, String 등의 여러 자료형에 대한 각각의 클래스를 하나씩 만들어야 하는 불편함이 있기 때문에 제네릭을 사용하면 클래스 하나
프로그램 구현에 필요한 자료구조를 구현해놓은 JDK 라이브러리java.util 패키지에 구현되어 있음객체를 순서에 따라 저장하고 관리ArrayList데이터가 연속적으로 존재해당 index를 통해 빠르게 검색 가능데이터 추가/삭제시 데이터의 복사로 인해 많은 비용 발생
클래스 내부에 선언한 클래스로 이 클래스를 감싸고 있는 외부 클래스와 밀접한 연관이 있는 경우가 많고, 다른 외부 클래스에서 사용할 일이 거의 없는 경우에 사용한다. 중첩 클래스라고도 한다. 내부 클래스에서 외부 클래스의 멤버들에 쉽게 접근할 수 있고 코드의 복잡성도
<span style="background-color:봄, 여름, 가을 겨울호랑이, 고양이, 퓨마, 삵체육, 미술, 음악enum을 사용하면 상수들을 저장하게 되는데 변수에 값을 할당할 수도 있고 이를 이용하여 switch문에도 사용할 수 있다.같은 상수명 중복 안
annotation은 주석처럼 프로그래밍 언어에 영향을 미치지 않으면서 유용한 정보를 제공한다. 에너테이션의 역할을 살펴보면 다음과 같다.컴파일러에게 문법 에러를 체크하도록 정보를 제공프로그램을 빌드할때 코드를 자동으로 생성할 수 있도록 정보 제공런타임에 특정 기능을
람다식은 익명 함수를 생성하기 위한 식으로 java에서 함수형 프로그래밍을 위해 지원하게 되었다.<span style="background-color:자바에서 메서드를 사용하려면 객체를 먼저 생성하고 그 객체로 메서드를 호출해야 한다. 클래스에서 공통적으로 사용하
<span style="background-color:자바 어플리케이션에서 메인스레드가 main() 메서드를 실행하면서 시작된다. main() 메서드 첫 코드부터 아래로 순차적으로 실행되고 main() 메서드의 마지막 코드를 실행하거나 return문을 만나게 되면
enum타입을 이용하여 ==과 eqauls() 연산을 했을때 같은 값을 비교한다는 연산에 있어서는 같다.==는 NPE를 발생시키진 않지만 equals()는 NPE를 발생시킨다.equals()는 컴파일 에러가 발생하지 않는 반면, ==는 컴파일 에러를 발생시킨다.eqau
(참고) 객체의 구성 요소를 생각하기보다는 행동을 위주로 설계를한다면 OOP에 더 가까운 설계가 될 수 있다.변하지 않는 객체, 불변해야 하며, 동일하게 생성된 두 VO는 영원히 동일한 상태임을 유지해야한다. 잘못된 상태로는 만들어질 수 없으며 항상 유효한 객체여야 한
리플렉션 클래스/메서드 메타정보를 이용하여 실제 인스턴스를 호출하는 방법 주의 리플렉션을 사용하면 클래스와 메서드의 메타정보를 사용해서 어플리케이션에서 동적으로 사용할 수 있지만 런타임에 동작하기 때문에 컴파일 시점에서 오류를 찾기 힘들다. JDK 동적 프록시 In