자바 15 - 새로운 기능
안녕하세요, 미래의 자바 개발자 여러분! 자바 15의 새로운 기능을 탐험하는 흥미로운 여정에 함께할 수 있어 기쁩니다. 10년 이상 자바를 가르쳐온 저로서는, 이 버전이 놀라운 개선 사항을 제공한다고 자신 있게 말할 수 있습니다. 그麼, 새로운 기능을 함께 탐구해 보겠습니다!
자바 제어 문장
새로운 기능에 들어가기 전에, 자바의 기본 제어 문장을 간단히 돌아보겠습니다. 이는 거의 모든 프로그램을 작성할 때 사용할 기본적인 블록입니다.
If-Else 문장
If-Else 문장은 길을 나누는 분기점과 같습니다. 프로그램이 특정 조건에 기반하여 결정을 내릴 수 있게 합니다.
int age = 18;
if (age >= 18) {
System.out.println("You can vote!");
} else {
System.out.println("Sorry, you're too young to vote.");
}
이 예제에서, 나이가 18이상이라면 프로그램은 "You can vote!"를 인쇄합니다. 그렇지 않으면, 죄송한 메시지를 인쇄합니다.
For 반복문
For 반복문은 자바의 충실한 노동자와 같습니다. 특정 횟수로 코드 블록을 반복하는 데 유용합니다.
for (int i = 0; i < 5; i++) {
System.out.println("Count: " + i);
}
이 반복문은 0에서 4까지의 수를 인쇄합니다. 자바에게 "0에서 시작해 5보다 작은 동안 계속하고, 각 번째에 1을 더해"라고 말하는 것과 같습니다.
객체 지향 프로그래밍
이제 자바의 가장 흥미로운 측면 중 하나에 대해 이야기해 보겠습니다: 객체 지향 프로그래밍(OOP). 이는 레고 블록으로 만드는 것처럼, 각 블록이 자신의 특성과 행동을 가진 객체입니다.
클래스와 객체
클래스는 블루프린트이고, 객체는 그 블루프린트로 만들어진 것입니다. 간단한 Dog
클래스를 만들어 보겠습니다:
public class Dog {
String name;
int age;
public void bark() {
System.out.println(name + " says: Woof!");
}
}
이제 Dog
객체를 만들 수 있습니다:
Dog myDog = new Dog();
myDog.name = "Buddy";
myDog.age = 3;
myDog.bark(); // 이는 다음과 같이 인쇄합니다: Buddy says: Woof!
자바 내장 클래스
자바는 우리의 삶을 더 쉽게 만들어주는 내장 클래스의 보물을 제공합니다. 두 가지를 살펴보겠습니다.
String 클래스
String
클래스는 텍스트를 처리하는 데 사용됩니다. 이는 자바에서 매우 일반적기 때문에 특별한 대우를 받습니다.
String greeting = "Hello, World!";
System.out.println(greeting.length()); // 인쇄: 13
System.out.println(greeting.toUpperCase()); // 인쇄: HELLO, WORLD!
ArrayList 클래스
ArrayList
은 필요에 따라 자라거나 줄일 수 있는 슈퍼 파워를 가진 배열입니다.
import java.util.ArrayList;
ArrayList<String> fruits = new ArrayList<String>();
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Cherry");
System.out.println(fruits); // 인쇄: [Apple, Banana, Cherry]
System.out.println(fruits.get(1)); // 인쇄: Banana
자바 15의 새로운 기능
이제 자바 15의 흥미로운 새로운 기능을 탐구해 보겠습니다!
텍스트 블록
텍스트 블록은 다중 라인 문자열을 다루는 데 훨씬 더 쉽게 만들어줍니다. 코드에 편지를 쓰는 것과 같습니다!
String oldWay = "This is how we used to\n" +
"write multi-line strings.\n" +
"It was not very convenient.";
String newWay = """
This is a Text Block.
It's much easier to read
and write multi-line strings now!
""";
System.out.println(newWay);
newWay
문자열은 훨씬 깨끗하고 읽기 쉬운 것을 보시죠?
sealed 클래스
sealed 클래스는 다른 클래스가 상속할 수 있는지 통제할 수 있게 합니다. 이는 클래스의 독점 클럽을 만드는 것과 같습니다!
public sealed class Shape permits Circle, Square, Triangle {
// Shape 클래스 코드
}
final class Circle extends Shape {
// Circle 클래스 코드
}
final class Square extends Shape {
// Square 클래스 코드
}
final class Triangle extends Shape {
// Triangle 클래스 코드
}
// 이는 컴파일 시 오류를 발생시킵니다:
// class Rectangle extends Shape { }
이 예제에서, Circle
, Square
, Triangle
만 Shape
를 상속할 수 있습니다. 다른 클래스가 Shape
를 상속하려고 하면 오류가 발생합니다.
instanceof의 패턴 매칭
이 기능은 다양한 유형의 객체를 다루는 데 더 쉽게 만들어줍니다. 코드에 지능적인 탐정을 두는 것과 같습니다!
Object obj = "Hello, Java 15!";
if (obj instanceof String str) {
System.out.println(str.toUpperCase());
}
자바의 이전 버전에서는 obj
을 String
으로 캐스팅한 후 instanceof
체크를 해야 했습니다. 이제 한 줄로 모든 작업을 수행할 수 있습니다!
레코드
레코드는 데이터를 저장하는 데 완벽한 새로운 종류의 클래스입니다. 데이터 객체에 대한 스위스 아ーノ이Knife와 같습니다!
public record Person(String name, int age) { }
Person alice = new Person("Alice", 30);
System.out.println(alice.name()); // 인쇄: Alice
System.out.println(alice.age()); // 인쇄: 30
레코드는 자동으로 생성자, 접근자, equals()
, hashCode()
, toString()
메서드를 제공합니다. 클래스에 대한 개인 비서를 가진 것과 같습니다!
결론
와우, 오늘 많은 내용을 다루었습니다! 기본 제어 문장에서 자바 15의 흥미로운 새로운 기능까지, 자바 프로그래밍 여정에 필요한 강력한 도구를 갖추셨습니다. 기억하시라, 프로그래밍은 새로운 언어를 배우는 것과 같아 - 연습, 인내, 지속이 필요합니다. 하지만 이 새로운 기능들로 인해 자바는 더 표현력 있고, 사용하기 쉬워지고 있습니다.
마무리하면서, 유명한 컴퓨터 과학자 Alan Kay의 말을 떠올립니다: "미래를 예측하는 최고의 방법은 그것을 만드는 것입니다." 자바 15로 인해, 당신은 코드를 통해 미래를 만드는 데 더 많은 힘을 가지게 되었습니다. 그幺, 이 새로운 기능들로 실험하고 놀라운 것을 창조해 보세요!
행복한 코딩, 미래의 자바 마스터 여러분! ?????
Credits: Image by storyset