자바 알아보기
JAVA 란?
JAVA 는 객체 지향 프로그래밍 언어이다. Sun Microsystems 에서 개발되었으며, James Gosling 이 주도적으로 개발하였다. Write Once, Run Anywhere 라는 슬로건을 가지고 있으며, 이는 JAVA로 작성된 프로그램은 어떤 플랫폼에서도 실행될 수 있다는 것을 의미한다.
JAVA 특징
- 객체 지향 프로그래밍 언어
- 객체 지향 프로그래밍 언어를 사용하면 코드의 재사용성이 높아지고 유지보수가 쉬워진다.
- 플랫폼 독립성
- JAVA로 작성된 프로그램은 어떤 플랫폼에서도 실행될 수 있다.
- 멀티 스레드 지원
- 멀티 스레드를 사용하면 여러 작업을 동시에 처리할 수 있어서 프로그램의 성능이 향상된다.
- 동적 로딩 지원
- 동적 로딩을 사용하면 프로그램 실행 시에 필요한 클래스를 동적으로 로딩할 수 있다.
- 예외 처리 지원
- 예외 처리를 사용하면 프로그램 실행 중에 발생한 예외를 처리할 수 있다.
JAVA 개발 환경 구축
- JDK(Java Development Kit) 설치
- JDK를 설치하면 JAVA 프로그램을 개발할 수 있는 환경을 구축할 수 있다.
- 코드 에디터 설치
- 코드 에디터를 설치하면 JAVA 코드를 작성할 수 있다.
- 대표적인 코드 에디터: IntelliJ IDEA, Eclipse
JAVA 실행 방법
- 컴파일
- JAVA 소스 코드를 컴파일하면 바이트 코드가 생성된다.
- 컴파일 명령어:
javac HelloWorld.java
- 실행
- 바이트 코드를 실행하면 JAVA 프로그램이 실행된다.
- 실행 명령어:
java HelloWorld
JAVA 기본 문법
연사자와 반복분
- 연산자
- JAVA에서는 다양한 연산자를 제공한다.
- 대표적인 연산자:
+
,-
,*
,/
,%
- 연산자를 사용하면 특정 작업을 수행할 수 있다.
1 2 3 4
int a = 10; int b = 20; int c = a + b; System.out.println(c);
- 반복문
- JAVA에서는 다양한 반복문을 제공한다.
- 대표적인 반복문:
for
,while
,do-while
- 반복문을 사용하면 특정 작업을 반복해서 수행할 수 있다.
1 2 3
for (int i = 0; i < 10; i++) { System.out.println(i); }
매서드와 필드
매서드
- 클래스에 정의된 함수이다.
- 특정 작업을 수행할 수 있다.
- 코드의 재사용성이 높아진다.
1 2 3 4 5 6 7 8
class Car { String color; int speed; void drive() { System.out.println("Driving..."); } }
필드
- 클래스에 정의된 변수이다.
- 객체의 상태를 나타낼 수 있다.
- 객체의 상태를 저장할 수 있다.
1 2 3 4
class Car { String color; int speed; }
클래스와 객체
클래스
- JAVA에서는 클래스를 사용하여 객체를 만들 수 있다.
- 클래스는 객체를 만들기 위한 틀이다.
- 객체를 만들 수 있고, 객체를 사용하여 작업을 수행할 수 있다.
1 2 3 4
class Car { String color; int speed; }
객체
- JAVA에서는 클래스를 사용하여 객체를 만들 수 있다.
- 객체는 클래스의 인스턴스이다.
- 클래스에 정의된 필드와 메서드를 사용할 수 있다.
1 2 3
Car myCar = new Car(); myCar.color = "Red"; myCar.speed = 100;
생성자
생성자
- 객체를 초기화하는 데 사용된다.
- 클래스의 이름과 동일한 이름을 가진다.
- 사용하면 객체를 만들 때 필요한 초기화 작업을 수행할 수 있다.
1 2 3 4 5 6 7 8 9
class Car { String color; int speed; Car(String color, int speed) { this.color = color; this.speed = speed; } }
인터페이스
- 인터페이스
- 클래스의 일종이다.
- 클래스에 정의된 메서드를 구현할 수 있다.
- 다형성을 구현할 수 있다.
1 2 3 4
interface Animal { void eat(); void sleep(); }
상속
상속
- 클래스의 특성을 다른 클래스에게 물려주는 것을 말한다.
- 코드의 재사용성이 높아진다.
- 클래스의 계층 구조를 만들 수 있다.
1 2 3 4 5 6 7 8 9 10 11
class Animal { void eat() { System.out.println("Eating..."); } } class Dog extends Animal { void bark() { System.out.println("Barking..."); } }
오버라이딩
오버라이딩
- 부모 클래스에 정의된 메서드를 자식 클래스에서 재정의하는 것을 말한다.
- 다형성을 구현할 수 있다.
1 2 3 4 5 6 7 8 9 10 11
class Animal { void eat() { System.out.println("Eating..."); } } class Dog extends Animal { void eat() { System.out.println("Eating dog food..."); } }
오버로딩
오버로딩
- 같은 이름의 메서드를 여러 개 정의하는 것을 말한다.
- 메서드의 이름을 동일하게 유지하면서 다양한 매개변수를 사용할 수 있다.
1 2 3 4 5 6 7 8 9
class Calculator { int add(int a, int b) { return a + b; } int add(int a, int b, int c) { return a + b + c; } }
추상화와 다형성
추상화
- 객체의 공통적인 특성을 추출하는 것을 말한다.
- 객체의 공통적인 특성을 나타낼 수 있다.
1 2 3
abstract class Animal { abstract void eat(); }
abstract란?
- 추상 클래스나 추상 메서드를 정의할 때 사용된다.
- 추상 클래스나 추상 메서드는 구현되지 않은 메서드를 가지고 있다.
다형성
- 객체의 다양한 형태를 나타내는 것을 말한다.
1 2 3 4 5 6 7 8 9 10 11
class Animal { void eat() { System.out.println("Eating..."); } } class Dog extends Animal { void eat() { System.out.println("Eating dog food..."); } }
제네릭
제네릭
- 클래스나 메서드를 정의할 때 타입을 파라미터로 사용하는 것이다.
1 2 3 4 5 6 7
class Box<T> { T value; Box(T value) { this.value = value; } }
컬렉션 프레임워크
컬렉션 프레임워크
- 데이터를 저장하고 관리하는 데 사용되는 클래스들의 집합을 말한다.
- JAVA에서는 다양한 컬렉션 프레임워크를 제공한다.
1 2 3
import java.util.ArrayList; import java.util.HashSet; import java.util.HashMap;
List
- List는 순서가 있는 데이터를 저장하는 데 사용되는 인터페이스이다.
1 2 3 4
List<String> list = new ArrayList<>(); list.add("Java"); list.add("Python"); list.add("C++");
Set
- Set은 순서가 없는 데이터를 저장하는 데 사용되는 인터페이스이다.
1 2 3 4
Set<String> set = new HashSet<>(); set.add("Java"); set.add("Python"); set.add("C++");
Map
- Map은 키와 값으로 이루어진 데이터를 저장하는 데 사용되는 인터페이스이다.
1 2 3 4
Map<String, String> map = new HashMap<>(); map.put("Java", "Object-Oriented Programming Language"); map.put("Python", "High-Level Programming Language"); map.put("C++", "General-Purpose Programming Language");