자바 기본 구조와 기본 문법
by Frinee1. 자바의 기본 구조
자바 프로그램은 클래스(Class)와 메서드(Method)로 구성된다.
Java는 객체지향 언어로, 프로그램 실행 단위는 클래스에서 시작하여 모든 실행은 main 메서드에서 이루어진다.
// 클래스 선언
public class Main {
// main 메서드: 프로그램의 시작점
public static void main(String[] args) {
// 실행할 코드
System.out.println("Hello, Java!"); // 콘솔에 출력
}
}
구성 요소
- 클래스(Class)
- 자바 프로그램의 기본 단위, 코드와 데이터를 캡슐화함.
public class Main
: 클래스 이름은 파일 이름과 동일해야 함.- 클래스는 서로 다른 데이터와 기능을 담아 코드 재사용성을 높이고, 객체지향적 설계를 가능하게 함.
- main 메서드
- 자바 프로그램의 시작점으로 반드시
public static void main(String[] args)
형태public
: 모든 곳에서 접근할 수 있음을 의미함.static
: 객체를 생성하지 않고도 메서드를 실행할 수 있도록 함. 이는 자바 실행 시 JVM이 직접 호출하기 위해 필요합니다.void
: 반환값이 없음String[] args
: 프로그램 실행 시 전달되는 입력값을 저장하는 매개변
- 자바 프로그램의 시작점으로 반드시
설계 이유
- JVM과의 연동:
main
메서드는 JVM이 프로그램을 실행할 때 가장 먼저 호출하는 진입점으로 설계 - 단순성과 유연성:
static
키워드를 사용함으로써 객체 생성 없이 프로그램을 시작할 수 있음
2. 변수와 자료형
변수는 데이터를 저장하기 위한 공간이며, 자바에서는 변수 선언 시 반드시 자료형을 명시해야 함.
자료형 분류
- 기본형(Primitive Types)
- 데이터 자체를 저장하는 형태로 메모리 사용이 효율적이고 빠름
- 종류
자료형 의미 메모리 사이즈 범위 기본값 byte
8-bit 정수 1 byte -2⁷ ~ 2⁷-1 0 short
16-bit 정수 2 bytes -2¹⁵ ~ 2¹⁵-1 0 int
32-bit 정수 4 bytes -2³¹ ~ 2³¹-1 0 long
64-bit 정수 8 bytes -2⁶³ ~ 2⁶³-1 0L float
32-bit 부동소수점(IEEE 754) 4 bytes -3.40E+38 ~ 3.40E+38 0.0f double
64-bit 부동소수점(IEEE 754) 8 bytes 1.79E+308 ~ 1.79E+308 0.0d char
16-bit 유니코드 문자 2 bytes 0 ~ 2¹⁶-1 \u0000 boolean
논리형 1 bit 0 or 1 0 (false)
- 참조형(Reference Types)
- 객체의 주소값을 저장하며 복잡한 데이터를 다룰 때 사용
- 종류
Object
: 모든 Class와 Enum의 일반화된 타입String
: char의 배열로 구현된 참조 자료형Array
: 동일한 타입의 데이터를 순차적으로 저장하는 객체Class
: Class 객체 자체를 다루는 자료형Wrapper
: 기본 데이터 타입의 값을 객체로 다루기 위한 클래스Interface
: 객체가 구현해야 하는 메소드의 집합을 정의한 타입Enum
고정된 상수들의 집합을 정의하는 특별한 종류의 클래스- 그 외에도 많은 참조형 타입들이 존재함
구분 | 기본형 | 참조형 |
저장 방식 | 값 자체를 저장 | 메모리 주소를 저장 |
메모리 사용 | 스택(Stack) | 힙(Heap) |
데이터 크기 | 고정 (자료형별로 정해짐) | 가변 (객체 크기에 따라 다름) |
주요 예시 | int , double , char , boolean |
String , 배열, 사용자 정의 클래스 |
public class VariablesExample {
public static void main(String[] args) {
int age = 25; // 정수형 변수
double height = 175.5; // 실수형 변수
char grade = 'A'; // 문자형 변수
String name = "Alice"; // 문자열 변수
boolean isStudent = true; // 논리형 변수
// 출력
System.out.println("Name: " + name);
System.out.println("Age: " + age);
System.out.println("Height: " + height);
System.out.println("Grade: " + grade);
System.out.println("Is student? " + isStudent);
}
}
3. 연산자
연산자는 변수나 값을 조작하거나 비교하는 데 사용
연산자의 종류와 의미
연산자 유형 | 연산자 | 설명 | 예시 |
---|---|---|---|
산술 연산자 | + , - , \* , / , % |
숫자 간의 덧셈, 뺄셈, 곱셈, 나눗셈, 나머지를 구함 | a + b , a % b |
증감 연산자 | ++ , -- |
1씩 증가 또는 감소. 접두사와 접미사로 사용 가능. | ++a , b-- |
대입 연산자 | \= |
오른쪽 값을 왼쪽 변수에 대입. | a = 10 |
복합 대입 연산자 | += , -= , \*= , /= , %= |
대입과 동시에 산술 연산 수행. | a += 5 |
비교 연산자 | \== , != , < , > , <= , >= |
값의 동등성, 크기 비교를 수행. | a == b , a > b |
논리 연산자 | && , || , ! |
논리적 조건을 결합하거나 부정 | a && b , !a |
비트 연산자 | & , | , ^ , ~ , << , >> , >>> |
비트 단위의 연산 수행 | a & b , a << 1 |
삼항 연산자 | ? : |
조건에 따라 값을 선택. | a > b ? a : b |
instanceof 연산자 | instanceof |
객체가 특정 클래스의 인스턴스인지 확인. | obj instanceof String |
문자열 연결 연산자 | + |
문자열을 이어 붙임. | "Hello" + name |
String name = "Alice";
if (name instanceof String) {
System.out.println("name은 String입니다.");
}
String greeting = "Hello, " + "World!";
4. 조건문과 반복문
4.1. 조건문
if 문
조건식이 참인 경우 명령문을 실행
if (조건식) {
// 조건이 참일 때 실행할 코드
}
int score = 85;
if (score >= 90) {
System.out.println("Grade: A");
}
if-else 문
조건식이 참인 경우 if 문 실행, 거짓인 경우 else 문 실행
if (조건식) {
// 조건이 참일 때 실행할 코드
} else {
// 조건이 거짓일 때 실행할 코드
}
if (score >= 90) {
System.out.println("Grade: A");
} else {
System.out.println("Grade: B or lower");
}
switch 문
- 변수의 값에 따라 여러 실행 경로 중 하나를 선택
switch (변수) {
case 값1:
// 값1일 때 실행할 코드
break;
case 값2:
// 값2일 때 실행할 코드
break;
default:
// 일치하는 값이 없을 때 실행할 코드
}
int day = 3;
switch (day) {
case 1:
System.out.println("Monday");
break;
case 2:
System.out.println("Tuesday");
break;
case 3:
System.out.println("Wednesday");
break;
default:
System.out.println("Other Day");
}
4.2. 반복문
for 문
고정된 횟수만큼 반복하여 실행
for (초기화; 조건식; 증감식) {
// 반복할 코드
}
for (int i = 1; i <= 5; i++) {
System.out.println("Count: " + i);
}
- 초기화: 반복 변수 초기값 설정
- 조건식: 반복을 계속할 조건
- 증감식: 반복 변수값을 변경
while 문
조건식이 true인 경우 계속해서 반복하여 실행
while (조건식) {
// 반복할 코드
}
int count = 5;
while (count > 0) {
System.out.println("Countdown: " + count);
count--;
}
do - while 문
조건문과 반복문을 결합한 구조로 코드를 최소 한 번은 실행한 후 조건을 검사하여 반복을 결정
do {
// 실행할 코드
} while (조건식);
do
블록: 조건과 관계없이 한 번은 반드시 실행되는 코드 블록while (조건식)
: 코드 블록을 반복할 조건을 검사함. 조건이 참이면do
블록을 다시 실행하고, 거짓인 경우 반복을 종료
public class DoWhileExample {
public static void main(String[] args) {
int number = 0;
do {
System.out.println("Current number: " + number);
number++;
} while (number < 3);
}
}
Current number: 0
Current number: 1
Current number: 2
do-while
문 vs while
문
특성 | do-while 문 | while 문 |
---|---|---|
코드 실행 순서 | 코드를 먼저 실행한 후 조건 확인 | 조건을 먼저 확인한 후 코드 실행 |
최소 실행 횟수 | 최소 한 번은 코드가 실행됨 | 조건이 거짓이면 한 번도 실행되지 않을 수 있음 |
사용 예시 | 사용자 입력 처리, 값 확인 등 | 조건이 참일 때 반복을 시작해야 할 경우 |
'Backend > Java' 카테고리의 다른 글
[Java] Generics, Enum, Annotation (1) | 2025.02.18 |
---|---|
[Java] 예외 처리(exception handling) (0) | 2025.02.11 |
[Java] 컬렉션 프레임워크(Collections Framework) (1) | 2025.02.09 |
[Java] 객체지향 프로그래밍 (OOP) (0) | 2025.01.27 |
블로그의 정보
프리니의 코드저장소
Frinee