일단 이것저것 해 보는 블로그

(Do it! 자바, 1주차) 자바 입문과 기초 문법 (251230~260106) 본문

2026/Do it Java 스터디(2026.01.~02.)

(Do it! 자바, 1주차) 자바 입문과 기초 문법 (251230~260106)

뷔구룽 2026. 1. 7. 12:29

개요

  • 원래 1월 5일부터 스터디 시작이지만, 호기심을 참지 못하고 전자책을 조금 일찍 구매해 공부를 시작했다.
  • 이번 글에는 그 1주차, 첫 시작에 대해 간략히(?) 기록해본다.
  • 1주차는, 자바 개발 환경 세팅과 첫 프로그램 작성, 자바의 기초 문법으로 구성되었다.
  • 올해 정보처리기사 시험 준비를 병행하는 만큼, 기초 문법과 시험에 나올 만한 개념을 특히 집중적으로 읽어보았다.
 

Do it! 자바 프로그래밍 입문 [개정판] | 박은종 저자

eBook Do it! 자바 프로그래밍 입문 [개정판] | 3만 6천 부 이상 팔린 초판의 성공에 힘입어 좀 더 입문자의 눈높이에 맞춰 내용을 수정하고 최신 개발 트렌드에 맞게 개정판을 출간했습니다. 저자인

ebook-product.kyobobook.co.kr

 

1주차 공부 인증


내가 생각하는 핵심 키워드(새롭게 알게 된 점 중 특히 인상적인 부분은 볼드 표시)

01장

  • 프로그래밍: 컴퓨터 프로그램 만드는 일
    • 프로그램의 기본 처리 순서: 변수 선언(초기화; 값이 들어갈 공간을 먼저 내 줘야 함) - 입력 - 처리 - 출력 (코딩할 때도 이 순서를 기억하면 조금 더 수월해짐)
    • 지금 공부하고 있는 자바는 프로그래밍 언어.
  • 컴파일: 컴퓨터가 이해할 수 있는 언어로 '번역'하는 것.
    • 사람의 언어를 프로그래밍 언어로 입력한 뒤, 컴퓨터가 알아들을 수 있는 언어로 번역(컴파일)해, 컴퓨터가 실행한다!
    • 컴파일러: 컴파일 작업을 수행하는 프로그램.
  • 자바는 대표적인 '객체 지향 프로그래밍' 언어
    • 객체 지향 프로그래밍: 여러 객체가 협력하여 프로그램을 구현하는 것.
    • (객체 등 세부 용어는 2주차에서 자세히 다룰 듯)
  • 자바는 프로그램이 안정적
    • 가비지 콜렉터: 쓰레기(더 이상 사용하지 않는 메모리)를 수집해 처리하는 기능 (정보처리기사 필기에 출제된 적 있음)
  • 자바는 오픈소스
    • 자바 개발 키트(JDK): 기본 기능을 제공하는 클래스뿐 아니라, 자료 구조, 네트워크, 입출력, 예외 처리 등에 최적화된 알고리즘 라이브러리를 제공.

02장

  • 변수: 프로그램에서 어떤 값을 저장하기 위해 필요한 공간, 적절한 자료형을 활용해 선언해야.
    • 초기화: 변수에 처음 값을 대입하는 것. 코딩을 할 때 반드시 먼저 변수를 초기화해야 하는 경우가 있음.
    • 변수명 정하는 규칙 (정보처리기사 출제 예상)
1) 변수명에는 영문자(대소문자 구분), 숫자, 언더바(_), 달러 기호만 사용할 수 있음. 2) 변수명 첫 글자에 숫자가 올 수 없음. 3) 예약어 사용 불가: while, int, break, continue 등.
  • 자료형: 정수형(int, short, long, byte), 문자형(char), 실수형(double, float), 논리형(boolean), 자료형 없이 변수 선언하는 경우(var; 변수에 대입되는 자료를 보고 컴파일러가 판단)
  • 상수: final 예약어를 사용해 선언.
  • 리터럴: 프로그램에서 사용하는 모든 숫자, 문자, 논리값 등.
  • 형 변환: 묵시적(작은-> 큰 자료형, 덜 정밀 -> 더 정밀, 대개 자동으로), 명시적(묵시의 반대, 대개 원하는 자료형을 직접 적어줌)

03장

  • 연산자의 종류: 단항, 이항, 삼항이항: 산술 연산자, 관계 연산자, 비트 연산자(시프트 연산자 포함), 논리 연산자
  • 단항: 증감 연산자(++, --), 연산자의 위치에 따라 처리 순서와 결과가 달라짐에 주의!
  • 비트 연산자 중 ~(반전) 연산자 연산법 : ~(A)에서 A가 양수이면 -(A+1), A가 음수이면 (- 제거)(A-1) (책에는 안 나왔지만, 유튜브 흥달쌤 깨알 C언어 강의 참고)
  • 삼항: 조건 연산자(A ? B : C)
  • 연산자 우선순위 (정보처리기사 시험에도 잘 나온다고 함!)
() -> ++ -- -> \*/% -> +- -> << >> -> 부등호 있는 관계 연산 -> 부등호 없는 관계 연산(== !=) -> 비트 연산(% ^ |) -> 논리 연산(&& ||) -> 조건 연산 -> 대입 연산 (-> 순서 연산(A.B.C))

04장

  • 자바의 제어문: 조건문(if, ifelse, if~else if, switchcase), 반복문(while, dowhile, for)
  • 반복문
while(조건문){ 조건이 참인 동안 수행} 조건이 거짓일 때 수행
do { 먼저 한 번 수행} while (조건문) {이후는 위 while문과 동일}
  • for (초기화문 : 조건문 : 증감문) {}
초기화문 -> 조건문 -> 중괄호 안 -> 증감문 순으로 수행
  • 중첩 반복문: for를 2번 이상 사용하는 경우. 외부for문과 내부for문.
ex) 구구단 출력 프로그램: 외부(단수), 내부(단수마다 곱하는 수)
  • continue문: 반복문 내에서, continue문을 만나면 이후 문장을 수행하지 않고 반복문의 처음으로 돌아감.
ex) 1부터 100까지 홀수만 더하는 프로그램: 더하는 수가 짝수면 합을 수행하지 않음.
  • break문: 조건문이나 반복문에서, break문 지점에서 더 이상 수행문을 반복하지 않고 반복문을 빠져나감.

어려웠던 점(아쉬웠던 점)

  1. 영문 타자가 아직 익숙하지 않아 실습 속도가 많이 느렸음 -> 꾸준히 코드를 쳐 보며 영타에 익숙해지기.
  2. 아직 익숙하지 않은 용어-> 어쩔 수 없는 비전공자의 비애, 꾸준히 실습을 따라가며 익숙해지는 수밖에.
  3. 완벽주의 성향-> 한 문제나 개념이 잘 이해가 되지 않으면 일단 넘어가고 다음 걸 해 보는 융통성이 부족했음. 풀리지 않는 되새김 한 문제를 오랫동안 붙잡고 있기도 함. 끈질김과 융통성의 황금 밸런스를 꾸준히 찾아나갈 필요가 있다.

   4. 단번에 이해가 잘 되지 않는 문법

  • 단항 연산자(++ --)의 위치에 따른 처리 순서 변화
전치일 때는 먼저 증감 후 연산, 후치일 때는 연산 과정이 끝난 후 증감 (시험에도 잘 나올 만한 내용).
  • 반복문, 특히 중첩 반복문!!!! 교재 해당 부분을 여러 번 읽고 실습해 봐도 올바른 처리 순서가 잘 그려지지 않아 고생함. 특히 04장 되새김 문제 중 4~5번 - 피라미드와 마름모 별 찍기. 반복문을 삼중 혹은 그 이상을 사용해야 했는데, 처음 알고리즘 구상부터 머리를 싸맴. 우선 구글링 후 기존 개발자 분들의 풀이과정을 따라해 봄. 다만 완전히 내 걸로 만들기에는 시간이 많이 필요하겠다. 언젠가는 스스로의 힘으로 아래 코드를 해석할 수 있는 날이 오기를.

문제의 4~5번 문제

 

* (260109 추가) 출판사에서 제공하는 예제 코드와 저자 유튜브 강의를 많이 참고해 풀어봄(정확히는 예제 코드를 최대한 뜯어서 이해하고자 노력함).

(1주차-2) 04장 되새김 문제 4~5번 풀이 (250108)

 

(1주차-2) 04장 되새김 문제 4~5번 풀이 (250108)

1주차 기록(1주차) 자바 입문과 기초 문법 (251230~260106) (1주차) 자바 입문과 기초 문법 (251230~260106)개요원래 1월 5일부터 스터디 시작이지만, 호기심을 참지 못하고 전자책을 조금 일찍 구매해 공부

gyeonkangkim.tistory.com

 

 

* 다음 두 사이트 자료를 참고해 우선 따라해 봄. 언제쯤 곧잘 이해할 수 있을까...

 

- 혜원 님의 velog(피라미드 별찍기)

 


5. 아직 04장 되새김 문제를 전부 풀어보지 못함.

->  (250108 모두 풀이 완료) (1주차-1) 04장 되새김 문제 06~18 풀이

 

(1주차-1) 04장 되새김 문제 06~18 풀이

개요1주차 기록(1주차) 자바 입문과 기초 문법 (251230~260106) (1주차) 자바 입문과 기초 문법 (251230~260106)개요원래 1월 5일부터 스터디 시작이지만, 호기심을 참지 못하고 전자책을 조금 일찍 구매해

gyeonkangkim.tistory.com

실습 코드

1~5일차(되새김 5번까지)

https://github.com/KimGyeonkang/DoitJava_Studying_2026/commit/9825918fe0107918cc9a1247b3e60d2e8251dc6c#diff-7e83250aa8079e68d0657c81226a400f8e44ffd0a826f7399f4016f77b24d314

 

From Day1 to Day4 · KimGyeonkang/DoitJava_Studying_2026@9825918

Some content is hidden Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

github.com

 

되새김 문제 1번 중

-> 04장에 나오지 않은 입력 기능(Scanner) 사용한 풀이과정

자바의 입력 기능은 String(문자열) 타입으로만 입력 받기 때문에 char(한 문자) 타입을 직접 받지 못한다. 따라서 먼저 문자열을 입력받은 뒤(next), chatAt(0)을 사용해 첫 번째 문자를 꺼내오는 방법을 활용할 수 있다.
package chapter4;

import java.util.Scanner;
/* 250106 사칙연산 프로그램: 사용자에게 사칙연산 기호를 입력받아 결괏값 출력. */
public class Review01 {
    public static void main(String[] args){ // start
        int num1 = 10;
        int num2 = 2;
        int result = 0;

        Scanner scanner = new Scanner(System.in);
        System.out.print("사칙연산 기호를 입력하세요 : ");
        char operator = scanner.next().charAt(0);
        /* Java에서 한 문자를 입력받는 코드
        * 참고: https://cha-coding.tistory.com/entry/Java-char%ED%98%95-%EC%9E%85%EB%A0%A5%ED%95%98%EA%B8%B0 (Last entering: 250106)*/

        switch (operator){
            case '+' -> {
                result = num1 + num2;
                System.out.println(num1 + " " + operator + " " + num2 + " = " + result + " 입니다.");
            }
            case '-' -> {
                result = num1 - num2;
                System.out.println(num1 + " " + operator + " " + num2 + " = " + result + " 입니다.");
            }
            case '*' -> {
                result = num1 * num2;
                System.out.println(num1 + " " + operator + " " + num2 + " = " + result + " 입니다.");
            }
            case '/' -> {
                result = num1 / num2;
                System.out.println(num1 + " " + operator + " " + num2 + " = " + result + " 입니다.");
            }
            default -> System.out.println("올바른 문자를 입력해주세요.");
        }
    }
}

참고: [Java] char타입 입력받기(Scanner, BufferedReader) — 차차의 DevLog

(260107 최종접속)

 

[Java] char타입 입력받기(Scanner, BufferedReader)

자바 Scanner와 BufferedReader는 String타입으로만 입력을 받기 때문에 char타입을 입력받는 기능이 없다. 그럼, 어떻게 문자를 입력받을 수가 있을까? charAt()을 이용하면 된다. 💡 charAt(int index) String타

cha-coding.tistory.com