본문 바로가기

전체 글

(10)
7. 클래스와 객체 (2) 개요'6. 클래스와 객체 (1)'에서 이어집니다.인스턴스 멤버와 정적 멤버클래스 멤버란, 필드와 메소드를 통틀은 말입니다. 인스턴스 멤버인스턴스 멤버는 객체마다 가지고 있는 멤버를 의미합니다.지금까지 선언한 것과 같이 인스턴스 멤버를 선언할 수 있습니다. 정적 멤버 static정적 멤버는 클래스에 고정된 멤버입니다. 정적 멤버는 객체를 생성하지 않고도 사용할 수 있습니다.정적 멤버를 선언하는 방법은 다음과 같습니다. 📢 출력 예시 정적 필드입니다. 정적 메소드가 호출되었습니다. 정적 멤버를 호출할 경우, 인스턴스 멤버와 달리 객체를 별도 생성하지 않아도 호출할 수 있습니다.정적 멤버는 클래스 로더(Class Loader)가 바이트 코드를 로딩할 때, 클래스별로 관리되기 때문입니다. 상수 또는 공통된 기..
6. 클래스와 객체 (1) 개요객체(Object)란 속성과 동작으로 구성되어 있는 것으로,Java에서는 속성과 동작을 각각 필드(Field)와 메소드(Method)라고 부릅니다. 현실에서 사람이 혼자 행동하지 않고 서로가 상호 작용하며 살아가는 것처럼,프로그램 속의 객체도 서로가 상호 작용하며 코드가 진행됩니다.객체는 메소드를 통해 상호 작용하며, 이를 메소드 호출이라고 합니다. 클래스(Class)는 객체 생성을 위한 필드와 메소드의 정의가 포함됩니다.따라서, 클래스는 객체를 만들기 위한 틀이라고 비유할 수 있습니다. 클래스로부터 만든 객체를 해당 클래스의 인스턴스(Instance)라고 부르며,클래스를 통해 객체를 만드는 것을 인스턴스화라고 합니다. 객체를 하나씩 조립해서 완성된 프로그램을 만드는 기법을 객체 지향 프로그래밍(OO..
5. 조건문과 반복문 개요조건식에 따라 다른 실행문을 실행하기 위해 사용되는 것을 조건문이라고 하며,작업이 반복적으로 실행되도록 할 때 사용되는 것을 반복문이라고 합니다.조건문if문, elseif문은 조건식의 결과에 따라 함수 실행 여부가 결정됩니다.if-else문은 조건식의 결과가 참이면, if문 내부를, 그게 아닌 경우 else문 내부를 실행합니다. 📢 출력 예시 5 ↩️입력한 수는 홀수입니다. * ↩️은 입력 예시를 의미합니다. else ifelse if를 통해, 조건을 더 세분화할 수 있습니다. 📢 출력 예시 -2 ↩️입력한 수는 음수입니다. switch문switch문은 괄호 안에 있는 변수와 동일한 값을 가지는 case부터 실행문을 실행합니다.case가 없는 경우, default를 실행하며, break를 통해 s..
3. 연결 리스트 개요순서를 가지고 원소(노드)를 정렬한 것을 리스트(List)라고 부릅니다.연결 리스트연결 리스트(Linked List)는 각 원소에 다음으로 가리킬 원소의 위치를 포함시킨 리스트를 의미합니다. 예를 들어, 학생을 학번대로 정렬하였을 때,3번 학생의 정보에 4번 학생의 정보에 대한 위치를 명시하는 것을 우리는 연결 리스트라고 할 수 있습니다. C에서는 연결 리스트를 주로 구조체(Struct)와 포인터(Pointer)를 통해 구현합니다.단순 연결 리스트단순 연결 리스트(Simply Linked List)는 각 노드가 앞에서 뒤로의 연결만을 가진 단방향성 연결 리스트입니다.각 노드는 후행 노드를 가리키므로, 앞에서 뒤로의 접근은 가능하지만, 반대 방향으로의 접근은 불가능합니다. Node 클래스단순 연결 리스..
4. 연산자 개요연산에 사용되는 표시 또는 기호를 연산자(operator)라고 부릅니다.연산자와 함께 연산되는 데이터는 피연산자(operand)라고 하고,연산자와 피연산자를 이용하여 연산의 과정을 기술한 것을 연산식(expression)이라고 부릅니다.연산자연산자는 필요로 하는 피연산자의 수에 따라 단항, 이항, 삼항 연산자로 구분됩니다.연산자는 반드시 하나의 값을 산출하며, 연산식은 다른 연산식의 피연산자가 될 수 있습니다. 연산자 우선 순위연산식에서 다양한 연산자가 복합적으로 구성된 경우, 수학과 동일한 순서로 연산을 처리합니다.이후, 연산의 우선 순위가 동일한 경우, 왼쪽에서 오른쪽으로 처리됩니다. 그러나, 예외적으로 단항 연산자(++, --, ~, !), 부호 연산자, 대입 연산자(=, +=, -=, …)는오..
2. 순환 개요순환(Recursion)이란,알고리즘이나 함수(메소드)가 자신을 호출하여 문제를 해결하는 프로그래밍 기법입니다.순환은 독특한 개념적인 프레임 워크를 제공하며, 자료구조를 다루는 프로그램에 적합합니다.재귀 함수재귀 함수(Recursion Function)은 자기 자신을 호출하는 함수입니다.재귀 함수는 자신을 반복적으로 호출함으로써, 원하는 결과를 도출해낼 수 있습니다. 그러나, 재귀 함수는 여러번 호출하기에 시간 복잡도가 크다는 단점이 있습니다.보통, 중복되는 계산을 줄이기 위해, 메모이제이션(memoization)을 이용합니다.메모이제이션은 한 번 계산한 결과를 메모리에 저장하였다가 꺼내서 중복 계산을 방지하는 방식입니다.거듭제곱 계산p의 n제곱을 구하는 방법은 p를 n번 곱하여 값을 반환하는 것입니..
3. 변수와 자료명 (2) 개요'2. 변수와 자료명 (1)'에서 이어집니다.참조참조(Reference)는 주솟값을 저장하는 것입니다. 메모리 사용 영역JVM은 운영체제에서 할당 받은 메모리 영역을 메소드 영역(Method Area), 힙 영역(Heap Area), JVM 스택(Stack)으로 구분합니다. 메소드 영역은 JVM이 시작될 때,생성되고 모든 스레드(thread)를 공유하는 영역입니다.코드에서 사용되는 class를 class loader을 통해 읽고,class별로 정적(static) 필드와 상수, 메서드 코드, 생성자(constructor)* 코드 등을 분류해서 저장합니다. 힙 영역은 객체와 배열과 같은 래퍼런스 타입 변수의 실제 값이 생성되는 영역이고,이들은 JVM 스택 영역의 변수 또는 다른 객체가 참조합니다.참조하는..
1. 자료구조와 시간 복잡도 Java의 객체지향 프로그래밍 파트에 대한 이해가 요구됩니다. 개요자료구조(Data Structure)란,개발자가 데이터를 효율적으로 사용할 수 있도록 정리하는 방법을 의미합니다. 자료구조로는 배열, 리스트, 트리, 그래프 등이 있습니다.상황마다 효율이 다를 수 있으므로, 자료구조의 장단점을 파악하고상황에 맞는 최적의 자료구조를 사용할 수 있어야 합니다.추상 자료형추상 자료형(ADT: Abstract Data Type)란,자료들과 그 자료들에 대한 연산들을 명기한 것입니다. 구현 방법을 직접 명시하지 않으므로 자료구조와 차이를 보입니다.이는 자료형과 조작을 표현한 것이기 때문에, 데이터의 실제 표현과 구현이 정해지지 않은 것입니다.Java에서는 인터페이스(Interface) 또는 클래스(Class)로 구..