Java 언어 기초 - 01
Java의 특징, 객체지향 개념, 기본 프로그램 구조, 컴파일 과정, 변수와 자료형, 연산자, 조건문, 반복문까지 Java 기초 정리글
Java 언어 기초 - 01
Java의 특징
- 객체 지향 언어: 캡슐화, 상속, 다형성 지원
- JVM 위에서 실행 → 플랫폼 독립성 확보
- 강타입 언어로 컴파일 시 타입 검사 엄격
- 방대한 표준 라이브러리와 생태계 보유
Java 프로그램 구조 개요
- 모든 코드는 클래스 내부에 작성
- 실행 진입점:
main
메서드 - 메서드, 변수, 객체를 사용해 프로그램 구성
개발과 실행 흐름
.java
파일에 코드 작성javac
컴파일 →.class
바이트코드 생성- JVM이 바이트코드 실행
Java의 장점
- “Write Once, Run Anywhere” → 플랫폼 독립성
- 풍부한 표준 라이브러리 제공
- 멀티스레딩, 네트워크 지원
- 강력한 보안과 안정성
객체 지향 프로그래밍(OOP)
핵심 개념
- 캡슐화: 데이터와 메서드를 객체로 묶음
- 상속: 기존 클래스를 확장해 새로운 기능 추가
- 다형성: 같은 인터페이스로 다른 동작 수행
- 추상화: 세부 정보 숨기고 핵심 기능만 표현
객체와 클래스
- 클래스: 객체를 생성하기 위한 설계도
- 객체: 클래스로부터 만들어진 실체(인스턴스)
1
2
3
4
5
6
7
8
9
10
11
class Animal {
String name;
void sound() {
System.out.println("동물 소리");
}
}
Animal dog = new Animal();
dog.name = "강아지";
dog.sound();
상속
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Parent {
void hello() {
System.out.println("Hello from Parent");
}
}
class Child extends Parent {
void hello() {
System.out.println("Hello from Child");
}
}
Child c = new Child();
c.hello();
다형성
1
2
Parent obj = new Child();
obj.hello(); // Child의 hello()가 실행됨
추상 클래스와 인터페이스
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
abstract class Shape {
abstract void draw();
}
class Circle extends Shape {
void draw() {
System.out.println("원을 그립니다");
}
}
interface Movable {
void move();
}
class Car implements Movable {
public void move() {
System.out.println("차가 움직입니다");
}
}
객체 지향의 장점
- 코드 재사용성 증가
- 유지보수성 향상
- 프로그램 확장성 강화
- 현실 세계 모델링에 유리
객체 지향 vs 절차 지향
구분 | 절차 지향 | 객체 지향 |
---|---|---|
설계 중심 | 함수와 절차 중심 | 객체와 클래스 중심 |
데이터 처리 | 데이터와 함수 분리 | 데이터와 메서드를 객체로 묶음 |
재사용성 | 낮음 | 높음 |
유지보수 | 복잡함 | 용이함 |
예시 언어 | C | Java, C++ 등 |
Java 기본 프로그램 구조
프로그램 구성 요소
- 클래스 내부에 코드 작성
main
메서드가 실행 시작점
1
2
3
4
5
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
실행 흐름
.java
작성javac
컴파일 →.class
생성- JVM이 실행
컴파일 과정
단계별 흐름
- 소스 코드 작성 →
.java
javac
컴파일 →.class
바이트코드- 클래스 로딩 → JVM 메모리에 적재
- 바이트코드 검증 → 안전성 검사
- JVM이 인터프리트/JIT 컴파일 → 실행
특징
- 플랫폼 독립적 바이트코드 생성
- JVM이 다양한 OS에서 동일 실행 환경 제공
- JIT 컴파일로 성능 최적화
Java 변수와 자료형
변수 선언
1
2
3
4
int number = 10;
double pi = 3.14;
char grade = 'A';
boolean isActive = true;
기본 자료형
- 정수형:
byte
,short
,int
,long
- 실수형:
float
,double
- 문자형:
char
- 논리형:
boolean
참조 자료형
1
2
String name = "Java";
int[] scores = {90, 80, 70};
- 객체, 배열, 인터페이스, 열거형 등
null
값 가능
형변환
- 자동(묵시적): 작은 → 큰 타입
- 강제(명시적): 큰 → 작은 타입
1
2
double d = 3.14;
int i = (int) d; // 3
Java 연산자
산술 연산자
1
2
3
4
int a = 10;
int b = 3;
System.out.println(a + b); // 13
System.out.println(a % b); // 1
비교 연산자
1
2
int num = 5;
System.out.println(num == 5); // true
논리 연산자
1
boolean result = (5 > 3) && (10 > 5); // true
조건(삼항) 연산자
1
2
int score = 85;
String grade = (score >= 90) ? "A" : "B";
비트 연산자
1
2
3
int n = 5; // 0101
int m = 3; // 0011
System.out.println(n & m); // 1 (0001)
Java 조건문
if 문
1
2
3
4
5
6
7
8
int num = 10;
if (num > 0) {
System.out.println("양수입니다.");
} else if (num == 0) {
System.out.println("0입니다.");
} else {
System.out.println("음수입니다.");
}
switch 문
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int day = 3;
switch (day) {
case 1:
System.out.println("월요일");
break;
case 2:
System.out.println("화요일");
break;
case 3:
System.out.println("수요일");
break;
default:
System.out.println("기타 요일");
break;
}
Java 반복문
for 문
1
2
3
for (int i = 0; i < 5; i++) {
System.out.println(i);
}
while 문
1
2
3
4
5
int count = 3;
while (count > 0) {
System.out.println(count);
count--;
}
do-while 문
1
2
3
4
5
int num = 0;
do {
System.out.println(num);
num++;
} while (num < 3);
특징 정리
for
: 반복 횟수 명확할 때 사용while
: 조건이 참이면 반복do-while
: 최소 1회 실행 보장
This post is licensed under CC BY 4.0 by the author.