[Java 풀스택 과정 강의] 1월 12일차

부트캠프 일지/Java 풀스택 과정 강의
2026.01.13
※ TIL와는 별개로 적는 개인 개발 일지라서 말은 좀 편하게하는 페이지입니다.
일지이기 때문에 일기의 성격이 더 강합니다.

 

 

 

어제는 객체, Object에 대해서 배웠다. 그 중 내장 객체에 대해서 배웠기 때문에 정리한다. 일지를 하루씩 밀리면 안 되는데, 어제는 TIL 특별편을 쓰느라고 진이 다 빠졌다.

 

객체에 대해서

자바스크립트 객체는 1. 내장, 2. 브라우저 3. 문서 4. 사용자 정의 객체로 나눌 수 있다.

일단 객체Object가 무엇이냐면, MDN의 정의에 의하면 관련된 데이터와 함수의 집합이라고 한다. …뭐라는 걸까? 당연하게 써오는 것들을 정의로 다시 들어가면 머리가 아파진다. 다른 곳들을 찾아보면 Object를 key와 value의 한 쌍으로 정의하고는 하는데, 이 말은 맞되 틀린 말이다. 왜냐면 String 같은 것들 또한 일종의 객체이기 때문. 다만 대부분의 설명에서 말하는 바 중 하나는 JS는 객체로 이루어져 있다는 건데, 이 말은 맞는 말이다. JS는 객체로 대부분 이루어져 있다.

그러면 객체는 무어라 설명하는 게 좋을까?

 

위키백과에서 객체에 대한 설명이 있다.

 

객체 또는 오브젝트(object)는 클래스에서 정의한 것을 토대로 메모리(실제 저장공간)에 할당된 것으로 프로그램에서 사용되는 데이터 또는 식별자에 의해 참조되는 공간을 의미하며, 변수, 자료 구조, 함수 또는 메소드가 될 수 있다.

 

 

이 말 덕분에 JS에서 object를 이해할 수 있어졌다. 사실 강사님도 열심히 설명하셨고, 사실 오늘도 설명해주셨지만… 속성Property와 메소드Method에 대해서, 그리고 배열array과 객체object의 차이 등등에 대한 이야기였다. 이렇게 대부분 JS에서의 object가 어떻게 작용하는지는 쉬이 설명하지만 정작 정의는 설명하기 어려운 듯하다.

일반적인 프로그래밍에서의 객체(object)와 달리 js에서는 클래스를 잘 사용하지 않기 때문에(class 의존적인 언어가 아니다) 이부분을 예외로 한다. 객체는 메모리에 할당되며, 메모리 생성 전까지는 존재하지 않는 것이다. 즉, 이렇게 추상적이니 말로 하기 어렵다. 속성property을 반드시 가져야하냐면 빈 값도 괜찮고, 반드시 key와 value를 가지지 않아도 되고… 강사님이 정의에 대한 설명에 애를 먹으시는 것도 이해가 된다.

변수, 자료구조, 함수, 또는 메소드는 객체가 될 수 있다. 즉 객체라는 거대한 개념 아래에 변수, 자료구조, 함수, 또는 메소드가 들어간다.

그래도 흔히 사용되는 object의 정의인 key와 value의 한쌍인 데이터 처리도 중요한 부분이니, 일반적으로 객체object라고 칭하면 이쪽으로 생각하는 게 좋다. 그리고 js가 object 대부분으로 이루어져 있지만, object가 없어도 작동하기는 한다. 물론 객체라는 것의 특성상 아예 빼고 코드를 짜기는 어렵지만…

이 언어의 특성과 관련해서 인터프리터 언어? 컴파일 언어? 라는 이야기들이 많은데 나중에 따로 정리해본다(TIL 보충학습)

이 객체는 그냥 TIL에서 정리할 걸 그랬는데 어차피 또 다룰 거 같으니 미리 다룬다고 해서 문제는 없을듯. 거기서는 좀 더 이미지 보충과 함께한다.

 

 

JS 내장 객체

JS 내에서 미리 정의된 객체이다. 선언 과정을 통해서 변수를 정의해서 사용한다. 이 종류들을 보면 왜 '내장 객체'인지 이해할 수 있다. 하나하나 사용자 변수로 불러오기 번거롭고, 메모리에 저장된 것을 불러오는 것이기 때문이다.

 

  • Date
    날짜 및 시간을 확인 및 관리해주는 객체로, 브라우저(클라이언트)의 시간을 기준으로 불러온다.
  • Array
    배열. 지난 시간에 배운 그것이다. 배열을 생성하기 위한 녀석들이다.
  • String
    문자열. 흔히 사용하는 문자열은 굳이 따지면 객체로 따지지 않지만 객체로 자동변환된다(객체 String은 new String 같은 형태로 만들지만… 자동 형변환처럼 뭐 그리 째째하게 따지냐는 듯이 바뀌어준다.)
  • Math
    산수 계산을 위한 객체이다. 간단한 연산과 반올림, 내림 등을 지원해준다.
  • Event
    이벤트에 대한 정보를 제공하는 객체다.
  • Screen
    화면의 해상도, 색상, 크기 등을 제공하는 객체다.

그리고 이런 객체들의 메소드Method는 자주 사용하기 때문에 기억해두는 것이 좋다. 여러 가지가 있는데, 특히 자주 쓰이는 건 강의에서 강조표시로 정리해주셨다. 크게 설명된 메소드는 다음 네 객체의 것이고, 나머지는 자투리처럼 넘어갔다.

 

잠깐 메소드란: 객체에 속한 함수라고 할 수 있다. 객체 자체 내장 함수 같은 것이다. 객체의 메소드는 대체로 객체.메소드명으로 사용한다.

 

Date

Date의 메소드 종류는 많아서(표가 10개까지만 지원된다) 종류에 따라서 정리한다.

 

Date 객체의 시간/날짜 정보를 반환하는 메소드

메소드 설명
getYear() 1970년 이후의 연도를 반환한다.
getMonth() 월 반환(0:1월, 1:2월…)
getDate() 일 반환
getDay() 요일 반환(0:일, 1:월…, 6:토)
getHours() 시 반환(0~23)
getMinutes() 분 반환(0~59)
getSeconds()  초 반환(0~59)
getTime() 1970년 1월 1일 이후 시간을 1/1000 단위로 표시

 

사실 이 반환 함수는 사용된 적을 거의 본적이 없다. 대부분 Date를 split으로 쪼개거나 Date 자체를 사용한다.

 

Date 객체의 시간/날짜 정보를 설정하는 메소드

메소드 설명
setYear() 1970년 이후의 연도를 설정한다
setMonth() 월 설정(0:1월, 1:2월…)
setDate() 일 설정
setHours() 시 설정(0~23)
setMinutes() 분 설정(0~59)
setSeconds()  초 설정(0~59)
setTime() 1970년 1월 1일 이후 시간을 1/1000 단위로 설정

 

set은 더더욱 본 적이 없다(…) 그다지 사용할 일이 없다.

 


Date 객체의 시간/날짜의 포맷을 변경하는 데 사용되는 메소드

메소드 설명
parse(날짜 문자열) 문자열을 시간으로 변경
toGMTString() 문자열을 GMT 날짜로 복귀
toLocaleString() 날짜를 문자열로 변환

 

얘네는 그래도 꽤 사용된다.

 

 

Array

배열은 중요해서 몇 번이나 다루었으니, 메소드만 정리한다.

메소드 설명
unshift(데이터) 배열 맨 앞에 요소 추가
shift() 첫 번째 요소 삭제
push(데이터) 배열 마지막에 요소 추가
pop() 마지막 요소 삭제
reverse() 배열 순서를 역순으로 변경
sort() 오름차순으로 변경
slice(start,end) start~end-1 범위의 요소를 추출하여 새 범위를 생성
splice(위치,개수,데이터) 특정 위치에 요소 삭제하고 추가

 

이녀석들은 비슷비슷하게 사용된다. 그 중 push는 정말 끔찍할 정도로 자주 쓰인다.

 

Math

메소드 설명 메소드 설명
sin(x) sin pow(x,y) 지수
cos(x) cos sqrt(x) 제곱근
tan(x) tangent round(x) 반올림
abs(x) 절대값 floor(x) 버림(내림)
exp(x) 지수함수 ceil(x) 올림
log(x) 로그함수 max(x,y) 최대값
random(x) 난수함수 min(x,y) 최소값

 

굵은 표시 외에는 그나마 ceil이랑 max,min밖에 사용하지 않았다.

여기서 math.random(x)는 난수를 생성하는데, 0.0x~0.9x 사이의 실수 형태의 난수를 무작위로 생성한다. 이 때문에 새로고침 할때마다 랜덤한 난수가 생성된다. 이것을 정수로 사용하기 위해서는 다음의 식이 필요하다.

 

 

var num = Math.floor(Math.random() * 10);

 

이렇게하면 0부터 9의 난수가 발생한다. 1을 추가하면 1~10의 난수가 된다.

 

String

메소드 설명
charAt() 인덱스로 지정된 위치의 문자 반환
indexOf() 문자열에서 특정 문자의 위치 반환
lastIndexOf() 문자열 끝에서부터 검색하여 위치 반환
substring() 문자열의 일부분 추출
slice() 문자열의 일부분 추출(오른쪽 끝(음수) 지정 가능)
substr() 문자열의 일부분 추출(추출할 문자 개수 지정)
toUpperCase() 문자열을 모두 대문자로 변경
toLowerCase() 문자열을 모두 소문자로 변경
split() 문자열 분리

 

이 외에 concat()이라 하는 문자열 연결도 있는데, 칸이 모자라서 뺐다. 근데 사실 다들 + 같은 걸 쓰지 굳이 concat()을 쓰지는 않는 터라…

 

굵은 녀석들은 꽤 자주 쓰이기 때문에 코드 블럭으로 정리한다.

 

let object1 = 'flower';
let ex1 = object1.charAt(4); //flower의 네 번째 글자, w

let object2 = 'abcd@gmail.com';
let ex2 = object2.indexOf('@'); //@의 위치인 4를 반환, 만약에 없는 문자를 찾으면 -1이 된다.
if(object2.indexOf('@') != -1) {} //흔히 사용되는 '글자 찾기' 메커니즘이다.

let object3 = '010-1111-2222';
let ex3 = split.object3('-'); //-로 object3의 글자를 분리하여 배열에 저장한다.
//[010,1111,2222]의 배열 생성
console.log(ex3[0]); //이렇게 되면 010이 출력된다.

 

선생님께서 말씀해주시는 복습과 함께 일지를 적어보았다. 이렇게 하면 확실히 기억에는 남는 듯하다.

하지만 일지는 미리미리 정리하자. 개인 의뢰 일지도 밀렸다…