어제까지 프론트엔드를 끝내고, 오늘부턴 백엔드 수업을 진행했다.
자바는 아직까지 널리 사용되고, 다른 프로그래밍 언어가 대체할 수 없는 부분이 있다.
자바 언어 특징
1. 운영체제에 독립적
2. 사용하기에 쉬운 언어
- 다른 언어의 단점 보완(포인터, 메모리 관리)
- 객체 지향 언어
- 능률적이고 명확한 코드 작성 가능
3. 자동 메모리 관리(Garbage Collection)
4. 네트워크와 분산환경 지원
5. 멀티스레드 지원
JVM(Java Virtual Machine)
자바를 실행하기 위한 가상 기계로 플랫폼에 의존적이다.
byte code(class 파일)를 해석하고 실행하는 interpreter.
자바 개발 환경
자바 개발 환경은 사용자와 개발자 입장에 따라 설치 범위가 다르다. 개발자는 보통 JDK를 설치하고, 그 안에는 JRE, JVM, Java Class Library, Utilities 같은 요소들이 포함된다. 즉, 자바 프로그램을 실행만 할 것인지, 직접 개발까지 할 것인지에 따라 필요한 환경이 달라진다.
자바 프로그래밍 기본
먼저 프로젝트를 만들고, 그다음 src 폴더에서 클래스를 생성한다. 클래스를 만들 때는 클래스명, 패키지명, 그리고 필요한 경우 메인 메소드 생성 여부를 함께 설정한다. 즉, 자바 프로그래밍은 프로젝트 생성 → 클래스 생성 → 코드 작성 순서로 진행된다고 이해하면 된다.
자바에서 모든 코드는 반드시 클래스 안에 존재해야 하며, 서로 관련된 코드들을 그룹으로 나누어 별도의 클래스를 구성한다. 클래스들이 모여 하나의 Java 애플리케이션을 구성한다.
- main
메인 메소드라고 부르며 기능이 정해져있다.
'public static void main(String[] args)' 는 main 메소드의 고정된 선언부다. 프로그램 실행 시 java.exe에 의해 호출된다.
모든 클래스가 main 메소드를 가지고 있어야 하는 것은 아니지만, 하나의 Java 애플리케이션에는 main 메소드를 포함한 클래스가 반드시 하나는 있어야 한다.
javascript에서 기능이 function이었다면 java에서는 메소드가 기능이다.
- 주석(comment)
코드에 대한 설명이나 그 외 다른 정보를 넣을 때 사용하는 것으로 컴파일 시 컴파일러가 주석 부분은 건너 뛴다.
형태는 javascript와 같다. ( /* */ , //)
JDK 설치하기
https://docs.aws.amazon.com/corretto/latest/corretto-21-ug/downloads-list.html
Downloads for Amazon Corretto 21 - Amazon Corretto 21
Thanks for letting us know this page needs work. We're sorry we let you down. If you've got a moment, please tell us how we can make the documentation better.
docs.aws.amazon.com
위 링크로 이동한 뒤

windows x64 JDK msi 파일을 다운받아 설치파일을 실행해준다.
나는 m1 맥북 에어, 윈도우 모두 사용하고 있어서 맥북에선 mac OS aarch 64 pkg 파일을 다운받았다.
별다는 설정 없이 next -> install 눌러 설치해주었다.

설치가 완료되면 아래의 명령어로 설치가 잘 되었는지 확인할 수 있다.
java --version
javac -version


amazon correctto 21을 설치하면 환경변수에도 경로가 추가된다. 그래서 자바의 버전을 확인하는 명령어도 잘 작동한다.
Eclipse 설치


구글에 eclipse를 검색후 위 사진 링크로 이동한다.
Download Packages를 클릭하여 이동한다

최신버전보단, 25년 12월 버전으로 설치하였는데
위 파란 박스 안의 다운로드 링크로 설치했다.

설치하고 실행하면 installer가 뜨게 되는데 Eclipse IDE for Enterprise Java and Web Developers를 클릭한다.

Java 21+ VM을 이전에 설치했던 Amazon Corretto 경로로 바꿔주고 Insatll하면 된다.

경로를 내가 실습할 파일로 바꿔주고 설치한다.

그러면 빈 파일이었던 곳에 .metadata라는 폴더가 생성되게 된다.

이런 경고창이 뜨게 되는데 그냥 제외 클릭 하고 실행했다.
변수
변수 : 메모리 공간(RAM)에 한 개의 값을 기록하기 위한 장소(공간)
자료형
- 기본형
실제 데이터(값)를 저장
논리형, 문자형, 정수형, 실수형으로 나눠지고 8개의 자료형이 있음
각 자료형 별 데이터 저장크기가 다름
- 참조형
데이터가 저장되어 있느 주소를 저장함(객체의 주소)
기본형을 제외한 나머지(String 등),

Java에서 문자는 ' ' 으로 쓰고, 문자열은 " "로 구분한다.
문자는 char이고, 문자열은 String이다.
또한, 정수도 int로 정의한다면 무조건 4byte이다.
변수의 선언
메모리 공간에 데이터를 저장할 수 있는 공간을 할당하는 것.
자료형 변수명 ;
변수의 명명 규칙
1. 대소문자가 구분되며 길이 제한이 없다.
2. 예약어를 사용하면 안 된다.
3. 숫자로 시작하면 안 된다.
4. 특수문자는 '_'와 '$'만 허용한다.
5. 여러 단어 이름은 단어의 첫 글자를 대문자로 한다.
변수의 초기화
변수를 사용하기 전에 처음으로 값을 저장하는 것
→ 지역변수는 반드시 초기화 해야 된다.
- 선언 후 초기화
| int age; age = 100; |
- 선언과 동시에 초기화
| int age = 100; |
값 대입과 리터럴
- 값 대입
생성한 변수(저장 공간)에 값을 대입하는 것
- 리터럴
변수에 대입되는 값 자체를 의미한다.
| 값 대입 = 넣는 행동 리터럴 = 넣는 값 자체 |
Java 기본 자료형 정리
| 종류 | 자료형 | 설명 | 예 |
| 정수형 | byte, short, int, long | 정수를 저장할 때 사용 | int inum = 4;, long lnum = 8L; |
| 실수형 | float, double | 실수를 저장할 때 사용 | float fnum = 4.0f;, double dnum = 8.0; |
| 문자형 | char | 문자 1개 저장 | char ch = 'A'; |
| 문자열 | String | 문자열 저장 | String str = "A"; |
| 논리 | boolean | 참/거짓 저 | boolean isTrue = true; |
float와 double은 둘 다 실수형이지만,
double은 실수의 기본 타입이라 8.0처럼 바로 쓸 수 있고,
float는 float 타입이라는 표시를 해야 해서 4.0f처럼 뒤에 f를 붙여야 한다.
이클립스로 실습하기

우선 class 파일을 test라는 이름으로 만들어준다.
패키지를 선언하지 않고 클래스를 생성했기 때문에
디폴트 패키지가 생성되게 되는데 실제 폴더에는 보이지 않는다.

이번에는 또 다시 class 파일을 생성하는데, 이름은 variable01, package는 com.test01로 작성했다.

그러면 디폴트 패키지가 아니라 새로 이름 지은 com.test01 패키지 안에 variable01.java 파일이 있는 걸 확인할 수 있다.
폴더에서 확인해보면 com > test01 > variable01.java 이렇게 파일 두 개 안에 variable01이 있는 걸 확인할 수 있다.
위에서 변수 자료형을 정리했는데 변수를 지정하고 자바에서 예시를 들어 출력해보면 아래 사진과 같이 나온다.


자바 기본 실행 구조


이 코드는 자바 프로그램이 어떻게 시작되고 실행되는지 보여주는 가장 기본적인 예제이다.
자바 프로그램은 main 메소드에서 시작된다.
즉, 프로그램을 실행하면 가장 먼저 main 메소드가 호출되고, 그 안에 작성된 코드가 순서대로 실행된다.
또 자바에서는 필요한 기능을 실행하기 위해 클래스의 객체를 먼저 생성한 뒤,
그 객체를 통해 메소드를 호출하는 방식으로 많이 사용한다.
이번 코드에서도 variable01 클래스의 객체를 만들고,
그 객체를 통해 var01() 메소드를 실행하는 흐름으로 작성되어 있다.
정리하면 자바의 기본 사용 흐름은 다음과 같다.
- main 메소드에서 프로그램 시작
- 필요한 클래스의 객체 생성
- 객체를 통해 메소드 호출
- 메소드 안의 기능 실행
즉, 이 코드는 자바에서 프로그램이 시작되는 위치와 객체를 생성한 뒤 메소드를 실행하는 기본 구조를 연습하는 예제라고 볼 수 있다.
자바는 main 메소드에서 시작하고, 객체를 생성한 뒤 메소드를 호출하는 방식으로 기능을 실행한다.
1. 자바 프로그램의 기본 실행 구조
자바 프로그램은 main 메소드에서 시작된다.
실행을 위해서는 먼저 객체를 생성하고, 그 객체를 통해 메소드를 호출하는 방식으로 코드를 작성할 수 있다.
예를 들어 Variable01에서는 Variable01 test = new Variable01();로 객체를 만든 뒤, test.var01();, test.var02();처럼 메소드를 실행하는 구조를 보여준다.
즉, 자바에서는 클래스 안에 메소드를 만들고, 필요하면 객체를 생성해서 기능을 실행하는 흐름을 익히는 것이 중요하다.
2. 변수와 자료형
Variable01에서는 자바의 기본 자료형을 선언하고 값을 대입하는 예제가 나온다.
정수형에는 byte, short, int, long이 있고, 실수형에는 float, double이 있다. 또 문자 하나를 저장하는 char, 문자열을 저장하는 String, 참과 거짓을 저장하는 boolean도 함께 사용했다.
코드에서는 각 변수에 값을 넣고 System.out.println()으로 출력하면서 자료형별 사용법을 확인했다. 특히 실수형 부분에서 float는 4.0f처럼 뒤에 f를 붙여야 하고, double은 8.0처럼 바로 사용할 수 있다는 점도 같이 정리할 수 있다.
System.out.println()은 출력과 동시에 줄바꿈이 이루어지고,
System.out.print()는 줄바꿈이 없다.
3. 변수 선언과 초기화
변수는 먼저 선언만 할 수도 있고, 선언과 동시에 값을 넣을 수도 있다.
var01()에서는 자료형과 변수명을 먼저 선언한 뒤 값을 나중에 대입했고, var02()에서는 int inum = 4;, double dnum = 8.0;처럼 선언과 동시에 초기화하는 방식으로 작성했다. 두 방식 모두 가능하지만, 보통은 선언과 동시에 초기화하는 방식이 더 자주 사용된다.
4. 키보드 입력 받기

Variable02에서는 자바에서 키보드 입력을 받을 때 사용하는 두 가지 클래스인 BufferedReader와 Scanner를 다뤘다.
BufferedReader는 readLine()을 이용해서 한 줄 전체를 문자열로 입력받는 방식이고, Scanner는 nextLine(), nextInt(), nextDouble() 같은 메소드를 이용해서 문자열, 정수, 실수 입력을 더 편하게 처리할 수 있다.
try는 오류가 날 수 있으니 감싼 것이고, catch는 에러가 발생했을 때 printStackTrace();로 에러 내용을 자세히 출력한다.
코드에서는 이름을 문자열로 입력받고, 나이를 정수로, 등급을 실수로 입력받아 한 문장으로 출력하는 예제를 확인할 수 있다. 즉, 입력값의 종류에 따라 적절한 메소드를 사용하는 흐름을 연습한 코드라고 볼 수 있다.
5. 상수

Variable03에서는 상수 개념을 정리했다.
상수는 한 번 값을 저장하면 이후에 변경할 수 없는 변수이다. 자바에서는 final 키워드를 사용해서 상수를 선언한다. 예제에서는 final int AGE;를 선언한 뒤 AGE = 20;을 대입했고, 이후 다시 값을 바꾸려 하면 에러가 난다는 점을 확인할 수 있다. 즉, 일반 변수는 값 변경이 가능하지만, 상수는 한 번 정해진 값을 계속 유지해야 할 때 사용하는 개념이다.
6. 오버플로우

Variable04에서는 오버플로우 예제를 다뤘다.
byte는 저장할 수 있는 값의 범위가 정해져 있는데, 최대값인 127에서 1을 더하면 더 큰 수가 되는 것이 아니라 최소값인 -128로 순환된다. 이처럼 자료형이 저장할 수 있는 범위를 벗어났을 때 값이 순환하거나 예상과 다르게 처리되는 현상을 오버플로우라고 한다. 코드에서는 bnum++로 값을 증가시킨 뒤 결과를 출력하고, 다시 형변환을 이용해 값을 조정하는 흐름도 보여준다.
정리
이번 파일들을 통해 자바 프로그램의 기본 실행 구조, 변수 선언과 초기화, 자료형, 키보드 입력, 상수, 오버플로우까지 한 번에 정리할 수 있었다.
특히 입력을 받을 때 BufferedReader와 Scanner의 차이를 보고, final을 이용한 상수 선언, 그리고 byte의 범위를 통해 오버플로우까지 확인하면서 자바의 기본 문법을 조금 더 익힐 수 있는 내용이었다.
7. 오늘 배운 메소드 / 클래스 정리
- package
클래스를 묶어서 관리하는 폴더 개념이다. - import
다른 패키지에 있는 클래스를 현재 코드에서 사용할 수 있게 가져오는 구문이다. - public static void main(String[] args) {}
자바 프로그램이 시작되는 메소드이다. 실행하면 가장 먼저 호출된다. - new 클래스명()
객체를 생성할 때 사용하는 문법이다. 클래스를 실제로 사용할 수 있는 형태로 만든다. - BufferedReader
키보드 입력을 한 줄 단위로 받을 때 사용하는 클래스이다. - Scanner
키보드 입력을 문자열, 정수, 실수 등 다양한 형태로 받을 때 사용하는 클래스이다. - InputStreamReader
키보드 입력(System.in)을 문자 형태로 읽을 수 있게 바꿔주는 클래스이다. - System.in
키보드로 입력받는 표준 입력이다. - readLine()
엔터를 칠 때까지 한 줄 전체를 문자열로 읽는 메소드이다. - next()
공백 전까지 한 단어만 읽는 메소드이다. 코드 주석에서 nextLine()과 차이를 설명하고 있다. - nextLine()
공백 포함 한 줄 전체를 문자열로 읽는 메소드이다. - nextInt()
정수를 입력받는 메소드이다. - nextDouble()
실수를 입력받는 메소드이다. - System.out.print()
콘솔에 내용을 출력하는 메소드이다. 줄바꿈 없이 출력한다. - System.out.println()
콘솔에 내용을 출력하는 메소드이다. 출력 후 줄바꿈한다. - try { } catch(Exception e) { }
예외가 발생할 수 있는 코드를 처리할 때 사용하는 문법이다. - e.printStackTrace()
발생한 예외 내용을 콘솔에 출력하는 메소드이다. - final
상수를 만들 때 사용하는 키워드이다. 한 번 값을 넣으면 변경할 수 없다. - byte, short, int, long
정수형 자료형이다. 저장 가능한 범위가 다르다. - float, double
실수형 자료형이다. float는 값 뒤에 f를 붙여야 한다. - char
문자 1개를 저장하는 자료형이다. - String
문자열을 저장하는 자료형이다. - boolean
참과 거짓을 저장하는 자료형이다. - 오버플로우
자료형이 저장할 수 있는 범위를 넘었을 때 값이 순환되는 현상이다. byte 예제로 확인했다.
8. 느낀점
자바는 대학교 2학년 1학기에 배운 기억이 있는데 몇 년이 지나고 학부 특성상 Java를 쓰지 않다 보니 내용을 거의 까먹었다.
오늘 수업을 계기로 예전에 배웠던 내용들을 떠올리는 계기가 되었다.
특히 자료형을 쓰는 방법과 System.out.println(), public static void main(String[] args) {}, 그리고 패키지에서 제공되는 클래스를 사용하기 위해 import 하던 기억들이 새록새록 기억나기 시작했다.
수업 밀도가 높아서 그날그날 복습하지 않고 한시간이라도 빠지면 수업을 못 따라갈 거 같다는게 단점이지만 매일매일 강제성 있는 공부를 할 수 있단 건 부트캠프의 장점인 것 같다. ㅜㅜ
'멀티캠퍼스' 카테고리의 다른 글
| [2026.04.15]TIL - 13일차 Git (2) | 2026.04.19 |
|---|---|
| [2026.04.14]TIL - 12일차 Java 변수와 메모리 구조, 메소드, 연산자 정리 (0) | 2026.04.14 |
| [2026.04.10] TIL - 10일차 jQuery (remove/empty/removeAttr, 동기·비동기, Promise, Ajax) (1) | 2026.04.12 |
| [2026.04.09] TIL - 9일차 jQuery (DOM 조작과 Effect 정리) (3) | 2026.04.09 |
| [2026.04.08] TIL - 8일차 jQuery (jQuery 기초와 선택자, DOM 탐색) (2) | 2026.04.09 |