[커널아카데미] 백엔드 12기 2주차 회고

David·2025년 3월 31일
0

회고

목록 보기
2/2

일주일이 너무 빠르게 지나갔다.

아마 올해 제일 바쁘게, 힘들게 보낸 일주일이지 않았나 싶다.
앞으로 이생활을 6개월을 더 해야한다고 생각하니 저번주에 세웠던 계획을 수정해야 할 것 같다.

저번주 목표는 6-10시 끝나고 헬스장을 가서 운동까지 하는게 계획이었지만, 막상 헬스장에 가면 온몸에 힘이 없어서 웨이트 30분 or 샤워만 하는 정도였다. 운동 후 집에 오면 11시반~ 12시정도 되는데, 자기전 간략하게 나마 배웠던 강의내용 복습을 하거나, 개인공부(CS책 한 두페이지 정도)를 하는데 눈이 스르르 잠긴다.

카페인을 하루에 400이상 섭취를 하였는데도 눈이 감기는 것을 보면 이번 한 주는 알차게 보낸 것 같다. 4월 둘째주 목표는 월~금은 6-10 유지, 토일은 조금 쉬어가며 공부해야겠다.

1. 배열

1. 배열(array)

1-1 배열의 정의

배열이란? 배열은 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것을 말한다. 배열은 각 저장공간이 연속적으로 배치되어 있다는 특징이 있다.

1-2 배열의 선언과 생성

선언방법선언 예
① 타입[ ]변수이름;int[ ] score;
String[ ] name;
② 타입 변수이름[ ]int score[ ];
String name[ ];

선언방법이 2가지가 있지만, 첫번째 방법으로 쓰는 것을 추천

타입[ ] 변수이름; // 배열을 선언(배열을 다루기 위한 참조변수 선언)
변수이름 = new 타입[길이]; // 배열을 생성(실제 저장공간을 생성)

ex) int[ ] score;
   score = new int[5];

<한줄로 정리>
  ⇒ score = new int[5];

1-3 배열의 길이와 인덱스

"인덱스의 범위는 0부터 '배열길이 - 1'까지"
배열의 길이는 int범위의 양의정수(0도 포함)이어야 한다.
배열은 for문을 이용해서 배열길이.length(상수)
for (int i = 0; i <배열이름.length; i++) {}

1-4 배열의 초기화

배열은 생성과 동시에 자동적으로 자신의 타입에 해당하는 기본값으로 초기화되지만, 원하는 값을 저장하려면 값을 직접 지정해줘야 한다.

1-5 배열의 복사

배열은 한번 생성하면 길이를 변경할 수 없기 때문에 더 많은 저장공간이 필요하다면 보다 큰 배열을 새로 만들어 복사해야 한다.

1) for문 이용

  int[ ] arr = new int[5]; // 5개의 저장공간 생성
 int[ ] tmp = new int[arr.length×2] // 기존 배열보다 길이가 2배인 배열 생성
 for(int i = 0; i <arr.length; i++)
  tmp[i] = arr[i]; // arr[ i ]의 값을 tmp[ i ]에 저장
 arr = tmp; // 참조변수 arr이 새로운 배열을 가리키게 한다.

2) System.arraycopy()를 이용

  for (int i = 0; i < num.length; i++){ newNum[i] = num[i]; }
 ⇒ System.arraycopy(num, 0, newNum, 0, num.length);
 num[0]에서 newNum[0]으로 num.length개의 데이터를 복사한다.

2. String 배열

2-1 String배열의 선언과 생성

String[ ] name = new String[3]; // 3개의 문자열을 담을 수 있는 배열을 생성한다.

2-2 String배열의 초기화

int 배열과 동일한 방법으로 초기화한다. 단, String클래스만 "" 큰따옴표로 간략하게 표현하는 것이 허용된다.

2-3 char배열과 String클래스

String클래스는 char배열에 기능(메서드)추가한 것이다.

String클래스의 주요 메서드

메서드설명
char charAt(int index)문자열에서 해당위치(index)에 있는 문자를 반환
int lenght()문자열의 길이 반환
String substring(int from, int to)문자열에서 해당범위(from~to)에 있는 문자열을 반환
(to는 범위에 포함되지 않음)
boolean equals(Object obj)문자열의 내용이 obj와 같은지 확인. 같으면 결과는 true, 다르면 false
char[]toCharArray()문자열을 문자배열(char[ ])로 변환해서 반환

<문자비교>

  • 문자열 내용 비교, 대소문자 구별 O equal() 사용
  • 문자열 내용 비교, 대소문자 구별 X equalsIgnoreCase() 사용
  • 기본형 변수 값 비교는 '=='연산자 사용

3. 다차원 배열

3-1 2차원 배열의 선언과 인덱스

선언 방법선언 예
타입[ ][ ] 변수이름;int[ ][ ] score;
타입 변수이름[ ][ ];int score [ ][ ]
타입[ ] 변수이름[ ];int [ ] score[ ]

3-2 2차원 배열의 초기화

int [ ][ ] arr = new int [ ][ ] { {1, 2, 3}, {4, 5, 6} };
int [ ][ ] arr = { {1, 2, 3}, {4, 5, 6} }; // new int [ ][ ]가 생략됨
int [ ][ ] arr = {
             {1, 2, 3},
             {4, 5, 6}
         };

위 3개의 코드는 동일한 결과 값을 가져오지만, 세번째로 작성시 보기도 좋고, 코드를 빨리 이해할 수 있어서 추천한다.

3-3 가변 배열(△)

행의 숫자가 달라도 연산이 가능하다. 이 경우 두번째 [ ]를 비워두자.
int [ ][ ] score = new int [5][ ] ;
score[0] = new int [4];
score[1] = new int [3];
score[2] = new int [2];
score[3] = new int [3];
score[4] = new int [1];

2. OOP

1. 객체지향 언어

1-1 객체지향언어의 특징

1. 코드의 재사용성이 높다.
  새로운 코드 작성시 기존 코드를 이용하여 쉽게 작성 가능
2. 코드의 관리가 용이하다.
  코드간의 관계를 이용해서 적은 노력으로 코드 변경 가능
3. 신뢰성이 높은 프로그래밍을 가능하게 한다.
  제어자와 메서드를 이용해서 데이터를 보호하고 올바른 값을 유지하도록 하며,
  코드 중복을 제거하여 코드의 불일치로 인한 오동작을 방지할 수 있다.

2. 클래스와 객체

2-1 클래스와 객체의 정의와 용도

클래스란 '객체를 정의해놓은 것' '객체의 설계도 또는 틀'이다.

2-2 객체와 인스턴스

클래스로부터 객체를 만드는 과정을 클래스의 인스턴스화라고 하며, 클래스로부터 만들어진 객체를 그 클래스의 인스턴스라고 한다.

2-3 객체의 구성요소 - 속성과 기능

객체는 속성과 기능의 집합이다. 속성(멤버변수) / 기능(메서드)

2-4 인스턴스 생성과 사용

클래스명 변수명; // 클래스의 객체를 참조하기 위한 참조변수를 선언
변수명 = new 클래스명( ); // 클래스의 객체를 생성 후, 객체의 주소를 참조변수에 저장
Tv t; // Tv 클래스 타입의 참조변수 t를 선언
t = new Tv( ); // Tv 인스턴스를 생성한 후, 생성된 Tv인스턴스의 주소를 t에 저장

2-5 객체 배열(≒ 참조 변수 배열)

Tv[ ] tvArr = new Tv[3]; // 참조변수(tvArr) 배열(객체 배열)을 생성
// 객체를 생성해서 배열의 각 요소에 저장

tvArr[0] = new Tv( ) ;
tvArr[1] = new Tv( ) ;
tvArr[2] = new Tv( ) ;
⇒ Tv[ ] tvArr = { new Tv(), new Tv(), new Tv() }; // 배열의 초기화 블럭 사용

Tv[ ] tvArr = new Tv[100];
for( int i = 0; i < tvArr.length; i++) {
   tvArr[i] = new Tv( ) ;
}

2-6 클래스의 또 다른 정의

클래스 - ① 설계도 ② 변수+메서드 관련 ③ 사용자 정의 타입(타입 추가)

3.변수와 메서드

3-1 선언 위치에 따른 변수 종류

변수는 클래스변수, 인스턴스변수, 지역변수 세 종류가 있다.

멤버변수를 제외한 나머지 변수들은 모두 지역변수이며, 멤버변수 중 static이 붙은 것은 클래스변수, 붙지 않은 것은 인스턴스변수이다.

3-2 클래스변수와 인스턴스변수

인스턴스변수는 인스턴스가 생성될때마다 생성되므로 인스턴스마다 각기 다른 값을 유지할 수 있지만, 클래스 변수는 모든 인스턴스가 하나의 저장공간을 공유하므로, 항상 공통된 값을 갖는다.

3-3 메서드

메서드는 특정 작업을 수행하는(서로 관련이 있는) 일련의 문장들을 하나로 묶은 것이다.

3-4 매서드의 선언과 구현

메서드는 선언부와 구현부로 구성되어 있다.

반환타입 메서드 이름 (타입 변수명, 타입 변수명 ... ) // 선언부
int add (int a, int b) // 선언부

{ } // 구현부
{
   int result = a + b;
   return result; // 호출한 메서드로 결과를 반환한다.
}

profile
DONE IS BETTER THAN PERFECT.

0개의 댓글

관련 채용 정보