드디어 제대로 된 코딩공부를 시작한다. 파이썬과 자바스크립트, 그리고 html/css는 학원도 다녀보고 잠깐씩 건든 기억이 있으나 자바로는 헬로우 월드도 쓸 줄 모르는 수준이기 때문에, 신년 스터디를 따라가기 위하여 독학을 시작한다. (물론, 나에겐 스터디를 함께하는 친절한 ㅊ씨와 ㅈ씨에게 도움을 받을 수 있단 행운이 있다.) 내가 처음으로 들을 강의는 인프런의 '김영한 - 자바 입문' 이고, 비주얼 스튜디오에 익숙한 손가락을 호되게 혼내며 인텔리제이에 익숙해지도록 할 예정. 사실상 코딩 공부를 할 시간이 거의 없지만서도... 나는 잘하고 싶기에. 그리고 또 재밌으니까.
과거 소규모 프로젝트를 했을 당시 사람들의 권유로 다운받은 인텔리제이를 쓰게될 줄은 몰랐다. 프론트만 깔짝댄 나는 비주얼 스튜디오밖에 쓸 줄 몰랐으므로. 그리고 백엔드는 앞으로도 건들 일 없을 줄 알았거든. 타고나길 꾸미는 것을 좋아해서 그럴까? 코딩하는대로 즉각 가시적인 결과를 보여주는 프론트와는 달리 백은 뼈대를 만드는 것이니... 뭐 이것도 내가 아직 프로그래밍 초보, 아니 왕초보이기때문에 가지는 생각일지도 모른다. 내가 말하는 것에 오류가 있다면 유감이다. 이렇게 불특정 다수에게 공개될 수 있는 글을 게재하는 까닭은 따로있으나, 내 딴엔 기록용으로 쓸 블로그니 혹시라도 유입되어 읽게 된 고수가 있다면 양해를 바란다. (없기를!)
먼저 커리큘럼 섹션1에 있는 OT를 듣고, 수업 자료들을 다운받았다. 섹션2 Hello World -이쯤되면 궁금한 것이 왜 항상 프로그래밍 언어의 시작은 '헬로우 월드'인가?- 에선 개발 환경 세팅과 자바에 관한 기초 지식을 알려주신다.
사실 인텔리제이는 나에게 정말이지 어려운 IDE다. 강사님께서 어떻게 아셨는지 귀신같이 한글 패치가 되어있는 수강생들은 전부 원판으로 돌아가라는 말씀을 하시길래 소름이 돋았다. 내가 설치한 기억은 없는데, 전에 다운로드와 학생 등록을 도와준 분들이 패치해주신 건지... 전자기기의 디폴트 언어를 영어로 해놓는 나로선 꺼릴 것은 없지만 모국어가 편한 것은 어쩔 수 없는 듯하다.
이렇게 자바를 향한 첫 발자국을 내딛었다! 그리고 소감: 내가 지금까지 파이썬과 자바스크립트만 해봐서 그런지 헬로우자바 적는 게 뭐이리 긴지 모르겠음. 여기서 main은 메서드고, 자바가 main(String[] args)를 찾아 프로그램을 시작한 것이다. String은 여타 언어에서도 사용되듯 문자열을 뜻하는 것 같다. System.out.println("Hello Java");는 값을 콘솔에 출력하는 기능이다. 자바스크립트는 세미콜론을 생략해도 돌아갔던 거 같은데, 자바는 필수로 붙여야 한다고 한다. 세미콜론을 통해 문장의 끝을 파악하기 때문에 저 코드는 큰따옴표 안에 있는 문자열을 출력한 후 끝나는 것이다.
이 길고 긴 코드를 하나하나 칠 일은 당연히 없다. 인텔리제이에서 단축어를 지원해주니까.
Public static void main(String[] args)는 psvm, System.out.println()는 sout으로 치면 된다. (똑똑한 인텔리제이는 문자열 또한 Tab키를 통해 연속되는 숫자를 알아서 써준다) 주석 기호는 다른 언어와 비슷한듯. 별다른 특징은 없어보인다.
섹션 2의 다섯 번째 강의는 자바에 대한 설명인데, 도통 이해하기 힘든 이론적인 이야기라 곤란했다. 학습 단계에선 자바의 종류가 상관 없다고 하니 다행이다. 인텔리제이가 알아서 자바의 컴파일과 실행을 도와주므로 아직까진 직접 자바를 설치할 필요는 없다. 이제 본격적인 자바 문법으로 들어가본다.
섹션 3은 변수에 관한 내용이다. 보다시피 variable 패키지를 새로 만들었고, 그 아래에 첫 Var1 클래스를 생성했다. 이때 소속된 패키지를 선언하지 않으면 코드에 오류가 생긴다.
만약 '10'이 아닌 '20'을 출력하고 싶다면 괄호 안에 있는 수를 모조리 '20'으로 변경하면 된다. 그러나 바꿔야 할 코드가 늘어난다면 이는 매우 번거로운 작업이 될 것이다. 모든 프로그래밍 언어는 이와같은 문제를 해결하기 위 변수(variable)라는 기능을 제공한다.
자바의 변수 선언과 초기화는 자바스크립트와 별반 다를 것이 없다. int(정수 integer)를 통해 그릇을 만들고, 등호를 통해 값을 대입한다. 이 상태로 코드를 실행하면 괄호 안에 '10'이라는 값을 집어넣었을 때와 같은 결과가 나온다. 만일 10을 20으로 바꾸고 싶다면, 대입하는 값을 바꾸기만 하면 된다. 자바는 실행 시점에서의 변수의 값을 읽어 사용하기 때문에 가장 마지막으로 집어넣은 값을 가져다 쓴다. 따라서 내가 a = 10;이라는 코드 아래에 a = 20;이라는 코드를 다시 쓰고 실행시키면, 출력되는 결과는 10이 아닌 20으로 나온다.
변수 코딩은 여러가지 방법이 존재한다. 쉼표를 통해 여러개의 변수를 선언할 수 있고 초기화 역시 한꺼번에 처리할 수 있다. 아무래도 프로그래머들의 편의성을 위한 듯함. 하루종일 컴퓨터 화면만 들여다보는 사람들에게 코드의 간결성은 필수불가결하니 말이다. 다녔던 학원의 강사님이 자기 코드를 짜는 것보다 협업에서의 남의 코드를 보는 것이 더 어렵다고 하던데, 대개 자기 입맛대로 코딩을 하니 그런 것 같기도. 개발자들의 암묵적인 코딩 룰이 있는 이유는 그래서가 아닐까.
만약 변수 초기화를 하지 않은 채로 실행을 하면 바로 컴파일 에러가 뜬다. 이런 오류가 뜨는 이유는 변수 선언이 컴퓨터의 메모리의 일부를 따와 공간을 차지하는 행위기 때문이다. 초기화를 하지 않으면 메모리 속의 수많은 데이터 중 이상한 값을 가져와 출력할 수 있으므로, 사전에 차단하는 것이다. 또한, 지금 선언한 변수는 지역변수(local variable)이기에 개발자가 직접 초기화를 해주어야만 한다. 설명을 보니 클래스 변수와 인스턴스 변수는 자바가 자체초기화를 해주는 듯. 덧붙여 컴파일 에러는 자바 문법에 문제가 생겼을 때 발생하는 오류기에 신속하게 수정할 수 있어 착한 에러... 라고 한다. 무슨 말인지 알 거 같아서 슬프네.
이번엔 자바에서의 변수 타입(형식)들을 알아보았다. 내 기억의 문제일지도 모르겠지만 double과 char을 써본 건 처음인 듯? 또 boolean이 아닌 bool로 적어도 가동되는지 궁금하다. 보통은 축약해서 쓰는 것 같던데. 고능한 인텔리제이는 역시나 Tab키를 통해 알아서 순서를 맞춰준다. 이때 내가 직접 적은 등호 뒤 어떠한 숫자나 문자의 고정된 값을 프로그래밍 언어로 '리터럴'이라고 부른다. 리터럴 자체는 고정되어 있으므로 변할 수 없다. 예시로 '100'을 '200'으로 수정한다면, 이는 코드 자체를 바꾼 것이 된다.
변수를 선언하면 표현 범위에 따라 메모리 공간을 차지한다. 자바에서는 그에따른 다양한 타입이 제공된다. 이렇게 많은 타입들을 다 외워야 되나 싶었으나, 아니나 다를까 이해하고 넘어가는 것일 뿐 실무에서 자주 사용되는 타입은 몇 개 없었다.
실무에서 거의 사용하지 않은 타입은 다음과 같다: byte, short, float, char
실무에서 자주 사용되는 타입은 다음과 같다: int, long, double, boolean, String
파일을 다룰 때에만 byte를 사용하고, 대부분의 정수는 int를 사용한다. 20억이 넘는 특수한 경우에만 long을 사용하면 된다. 실수는 double만 사용하면 된다. 문자는 하나이든 문자열이든 관계없이 보통 String을 사용한다.
이 뒷강의는 자바에서의 변수 명명 규칙인데, 다른 언어와 별 차이가 없어 예외만 적어두겠다. 상수는 모두 대문자를 사용하며 언더바로 구분(ex USER_LIMIT)한다. 패키지는 모두 소문자(ex org.spring.boot)를 쓴다.
이제 변수를 배웠으니 마지막으로 강의에서 제시한 문제를 직접 풀어보겠다.
문제2: 다음과 같은 작업을 수행하는 프로그램을 작성하세요.
클래스 이름은 VarEx2라고 적어주세요.
1. 변수 num1을 선언하고, 이에 10을 할당하세요.
2. 변수 num2를 선언하고, 이에 20을 할당하세요.
3. 두 변수의 합을 구하고, 그 결과를 새로운 변수 sum에 저장하세요.
4. sum변수의 값을 출력하세요.
문제3: 클래스 이름은 VarEx3입니다.
long타입의 변수를 선언하고, 그 변수를 백억으로 초기화한 후 출력하는 프로그램을 작성하세요.
boolean타입의 변수를 선언하고, 그 변수를 true로 초기화 한 후 출력하는 프로그램을 작성하세요.
이렇게 자바의 첫 시작이 끝났다. 다음 섹션은 연산자이다.
'Study > Java' 카테고리의 다른 글
자바 스터디 기록 [3] (조건문) (0) | 2025.03.02 |
---|---|
자바 스터디 기록 [2] (연산자) (0) | 2025.03.02 |