본문 바로가기
네이버클라우드캠프

네이버클라우드캠프 5일차(1/29)

by 하루지오 2024. 1. 29.

1. 자바 자료구조

1) 스택

-지역변수가 올라가는 곳

-byte, char 등

-바로 사용하고 끝나면 해제

2) 힙

-스택보다 메모리가 큼

-스택보다 훨씬 큼

-큰 데이어 보관

-상대적으로 오래 보관

-데이터 즉, 변수가 들어감

-스택에 위치한 참조 변수를 이용해서 사용

3) 코드

-데이터 즉 변수가 아닌 실행하는 코드가 들어감

-실행이 목적

- method 영역

- class가 들어감

 

2. method의 탄생

- main에 긴 코드 작성하면, 코드 이해 및 수정에 힘듦

- 그래서 main에는 method 이름만 작성, 따로 method를 작성

- method = 함수

 

3. 참조 타입 중 열거타입 eunm

- 사전에 정의된 상수들을 나열한 것

- 프로그래밍 언어에서 사용되는 특별한 데이터 타입

- 변수가 가질 수 있는 여러 가지 가능한 값을 사전에 정의해 놓고, 이 값들 중 하나를 선택하여 변수에 저장

- 특징

고유한 값 - 각 상수는 고유한 이름을 가지며, 서로 다른 값을 가짐
ex) 컬러를 나타내는 열거타입→ RED, GREEN, BLUE
제한된 선택지 - 변수가 가질 수 있는 선택지를 명확하게 제한
- 실수로 다른 값을 할당하는 것을 방지
가독성 - 코드의 가독성을 높이는 데 도움을 
- 해당 값이 어떤 의미를 가지는지 명확히 알 수 있음
타입 안전성 - 다른 타입의 값을 열거타입 변수에 할당하는 것을 방지

4. 클래스 (class)의 필요성

- 객체지향 프로그래밍(OOP)에서 핵심적인 개념

- 데이터와 그 데이터를 처리하는 메서드들을 함께 묶어서 하나의 타입으로 정의

- 프로그램을 구성하는 주요 구성 요소 중 하나

- 필요성

추상화(abstraction) - 클래스는 현실 세계의 객체(object)를 모델링하기 위한 수단으로 사용
- 객체의 중요한 특성을 추상화하여 프로그램에서 사용할 수 있게 함
캡슐화(encapsulation) - 클래스는 데이터와 데이터를 처리하는 메서드들을 하나로 묶어서 캡슐화
- 데이터와 관련 기능들이 서로 밀접하게 연관되어 있음
- 데이터와 그 데이터에 대한 연산을 함께 묶어서 외부에서 직접적인 접근을 제한하고 필요한 경우 메서드를 통해 접근하도록 유도
재사용성(reusability) - 클래스를 사용하여 동일한 구조를 가진 여러 객체를 생성
- 코드의 재사용성을 높이고, 유지보수성을 향상시킬 수 있음
유지보수성(maintainability) - 클래스는 관련된 데이터와 기능을 하나의 논리적 단위로 묶어서 코드를 구성
- 코드의 가독성을 높이고, 프로그램의 구조를 명확하게 유지하는 데 도움
- 코드를 이해하고 수정하는 데 용이하며, 버그를 수정하거나 기능을 추가하는 데 유리
다형성(polymorphism) - 클래스와 상속 관계를 통해 다형성을 구현
- 같은 메서드 호출에 대해 다른 동작을 수행하도록 할 수 있는 기능
- 객체지향 프로그래밍에서의 유연성과 확장성을 제공

 

5. 추가로 공부할 내용

- 논리타입 boolean

- 이차원 배열

- Array 배열

- 배열 항목 반복을 위한 for문

int[] numArr= {10, 99, 2, 78, 32, 1, 67};
int min, max;
min = max = numArr[0];
for(int i=1;i<numArr.length;i++) {
     // 최소값
     if(min > numArr[i])
          min = numArr[i];
     // 최대값
     if(max < numArr[i])
          max = numArr[i];
     System.out.println(min + " " + max);
}
public static void main(String[] args) {
          int[] numArr = { 10, 99, 2, 78, 32 };
          int i, j, k, temp;
          for (i = 0; i < numArr.length; i++) {
               k = numArr.length - i;
               for (j = 1; j < k; j++) {
                    if (numArr[j - 1] > numArr[j]) {
                         temp = numArr[j - 1];
                         numArr[j - 1] = numArr[j];
                         numArr[j] = temp;
                    }
               }
          } 
}