전체 글 342

[Java] static 키워드

static 키워드는 정적 변수(static variable)를 선언하기 위해서 사용하는 키워드다. static은 클래스의 멤버(필드, 메서드, 이너 클래스)에 사용하고 static 키워드가 붙어있는 멤버를 '정적 멤버(static member)'라고 부르고 static이 붙어있지 않은 인스턴스 변수와 구분한다. 인스턴스를 생성하면, 각 인스턴스들은 서로 독립적이므로 서로 다른 값을 유지한다. 경우에 따라서 각 인스턴스들이 공통적으로 같은 값이 유지되어야 하는 경우에 static을 붙인다. 인스턴스 멤버는 반드시 객체를 생성한 이후에 변수와 메서드에 접근하여 해당 멤버를 사용할 수 있지만, static 키워드로 정의되어 있는 클래스 멤버들은 인스턴스의 생성 없이도 사용이 가능하다. new 키워드를 통해 ..

개발 일지/Java 2022.12.27

[Java] 필드(Field)

필드(field)는 '클래스에 포함된 변수'를 의미하는 것으로 객체의 속성을 정의할 때 사용된다. 자바에서 변수는 크게 클래스 변수(class variable, cv), 인스턴스 변수(instance variable, iv) 그리고 지역 변수(local variable, lv)라는 세 가지로 구분된다. 여기서 필드는 클래스 변수와 인스턴스 변수이며, 이 둘은 다시 static 키워드의 유무로 구분할 수 있다. static 키워드가 함께 선언된 것은 클래스 변수, 그렇지 않은 것은 인스턴스 변수이다. 그리고 이 두 가지 변수 유형에 포함되지 않고 메서드 내에 포함된 모든 변수를 지역 변수라고 한다. class Example { // 클래스 영역 int instanceVariable; // 인스턴스 변수 s..

개발 일지/Java 2022.12.27

[Java] 객체(Object)

객체(Object)란 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에 자신의 속성을 갖고 있으며 다른 것과 식별 가능한 것을 말한다. 컴퓨터 과학에서 객체는 클래스에서 정의한 것을 토대로 메모리에 할당된 것으로 프로그램에서 사용되는 데이터 또는 식별자에 의해 참조되는 공간을 의미한다. 객체는 변수, 자료 구조, 함수 또는 메서드가 될 수 있다. 객체 지향 프로그래밍에서 객체는 클래스의 인스턴스이다. 클래스 객체는 자료와 그 자료를 다루는 명령의 조합을 포함하여 객체가 메시지를 받고 자료를 처리하며 메시지를 다른 객체로 보낼 수 있도록 한다. 객체는 크게 속성(state)과 기능(behavior)이라는 두 가지 구성요소로 이루어져 있다. 속성과 기능은 각각 필드와 메서드로 정의되는데, 일반적으로 ..

개발 일지/Java 2022.12.27

[Java] 클래스(Class)

클래스(Class)는 객체 지향 프로그래밍(OOP)에서 객체를 정의한 '설계도(blueprint)' 또는 '틀(frame)'이다. 클래스는 객체를 생성하는 데 사용되며 객체는 클래스에 정의되고 설계된 내용 그대로 생성된다. 이렇게 클래스를 통해 생성된 객체를 해당 클래스의 인스턴스(instance)라고 부른다. 또한, 클래스로부터 객체를 만드는 과정을 인스턴스화(instantiate)라고 한다. 객체와 인스턴스는 사실 같은 말이라서 두 용어를 혼용해서 사용할 수 있다. 엄격하게 두 용어를 구분한다면 객체는 모든 인스턴스를 포괄하는 넓은 의미를 가지고 있는 반면, 인스턴스는 해당 객체가 어떤 클래스로부터 생성된 것인지를 강조한다는 데 그 차이가 있다. 클래스를 사용하면 객체를 분류할 때 멤버의 자료형을 미..

개발 일지/Java 2022.12.27

[Java] 객체 지향 프로그래밍(OOP)

객체 지향 프로그래밍 (Object Oriented Programming, OOP)이란, 프로그램 구현에 필요한 객체를 파악하고 각각의 객체들의 역할이 무엇인지를 정의하여 객체들 간의 상호작용을 통해 프로그램을 만드는 것을 말한다. 여기서 객체란, 우리가 인지할 수 있는 '실재하는 모든 것'이자 '사용할 수 있는 실체'를 의미한다. 객체 지향 이론의 핵심 개념은 '실제 세계는 이러한 객체들로 구성되어 있으며, 발생하는 모든 사건들은 이 객체들 간의 상호작용을 통해 발생한다'는 전제로부터 출발한다. 컴퓨터 프로그래밍의 관점에서 보면 일련의 명령어들의 나열을 통해 컴퓨터에게 말을 건네는 절차적 프로그래밍 방식과는 다르게, 객체지향적 프로그래밍은 '프로그래밍에서 필요한 데이터를 한 데 모아 추상화시켜 상태와 ..

개발 일지/Java 2022.12.27

[Java] 배열(array)

배열(array)은 같은 타입의 변수들을 하나의 묶음으로 묶은 자료 구조이다. 배열을 구성하는 각각의 값을 배열 요소(element)라고 하며, 배열에서의 위치를 가리키는 숫자는 인덱스(index)라고 한다. Java에서 인덱스는 0부터 시작한다. ex) [ 1 ,2, 3, 4 ] 이면 0번째 인덱스는 1이고 2번째 인덱스는 3이다. 배열은 같은 종류의 데이터를 많이 다뤄야 하는 경우에 사용할 수 있는 기본적인 자료 구조이며, 선언되는 형식에 따라 1차원 배열, 2차원 배열 또는 그 이상의 다차원 배열로도 선언할 수 있다. 참고로, 2차원 이상의 배열을 다차원 배열이라고 한다. 1차원 배열의 선언과 초기화 1차원 배열은 가장 기본적인 배열로 다음과 같이 타입 뒤에 대괄호를 붙여서 선언하고 초기화할 수 있..

개발 일지/Java 2022.12.26