1. 변수 선언 (Variable Declaration)
Java
int number = 10;
String text = "Hello";
boolean isActive = true;
Kotlin
val number: Int = 10
val text: String = "Hello"
val isActive: Boolean = true
차이점
1. val vs var
• val(Immutable, 변경 불가) = Java의 final
• var(Mutable, 변경 가능) = 일반적인 변수 선언
2. 타입 추론(Type Inference)
• Kotlin에서는 val number = 10 처럼 타입을 생략해도 자동으로 Int로 인식됨.
2. 함수 선언 (Function)
Java
public int add(int a, int b) {
return a + b;
}
Kotlin
fun add(a: Int, b: Int): Int {
return a + b
}
혹은 더 간결하게
fun add(a: Int, b: Int) = a + b
차이점
1. fun 키워드 사용
• Java의 public int → Kotlin에서는 fun 사용
2. 리턴 타입 위치
• Java: int add(int a, int b)
• Kotlin: fun add(a: Int, b: Int): Int
3. 한 줄 함수 표현 가능
• fun add(a: Int, b: Int) = a + b
3. 클래스와 생성자 (Class & Constructor)
Java
public class Person {
private String name;
public Person(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
Kotlin
class Person(val name: String)
차이점
1. 기본 생성자(Constructor)를 클래스 선언에 포함 가능
• Java에서는 생성자를 따로 정의해야 하지만, Kotlin에서는 class Person(val name: String)으로 바로 정의 가능
2. 게터/세터 자동 생성
• val name: String 선언만으로 자동으로 getter가 생성됨.
4. 조건문 (If, When)
Java (if-else)
int num = 10;
String result;
if (num > 0) {
result = "Positive";
} else {
result = "Negative";
}
Kotlin (if-else)
val num = 10
val result = if (num > 0) "Positive" else "Negative"
Kotlin (when - Java의 switch와 유사)
val num = 2
val result = when (num) {
1 -> "One"
2 -> "Two"
else -> "Other"
}
차이점
1. Kotlin의 if는 표현식(Expression)으로 사용 가능
• 즉, 값을 반환할 수 있음.
2. Java의 switch → Kotlin의 when
• break 필요 없이 간결하게 사용 가능
5. 반복문 (Loop)
Java (for-loop)
for (int i = 0; i < 5; i++) {
System.out.println(i);
}
Kotlin (for-loop)
for (i in 0..4) {
println(i)
}
Kotlin (while)
var i = 0
while (i < 5) {
println(i)
i++
}
차이점
1. Kotlin의 for는 범위(Range)를 사용
• 0..4 → 0부터 4까지 포함
• 0 until 5 → 0부터 4까지 (5는 제외)
2. step 키워드 사용 가능
for (i in 0..10 step 2) {
println(i) // 0, 2, 4, 6, 8, 10
}
3. 내림차순 반복
for (i in 10 downTo 1) {
println(i)
}
6. Null 안전성 (Null Safety)
Java (NPE 발생 가능)
String name = null;
System.out.println(name.length()); // NullPointerException 발생!
Kotlin (안전한 코드)
var name: String? = null
println(name?.length) // null 출력 (NPE 발생 X)
차이점
1. Kotlin에서는 Nullable과 Non-Nullable을 명확히 구분
• var name: String = null ❌ (에러 발생)
• var name: String? = null ✅ (Nullable 허용)
2. ?.(Safe Call) 연산자로 NPE 방지
• name?.length → name이 null이면 null을 반환, 그렇지 않으면 .length 실행
3. !!(Non-null Assertion) 연산자
println(name!!.length) // 강제로 NPE 발생 가능
7. 확장 함수 (Extension Function)
Java (기존 클래스 확장 어려움)
public class StringUtil {
public static String addPrefix(String str) {
return "Prefix_" + str;
}
}
Kotlin (확장 함수 사용)
fun String.addPrefix() = "Prefix_$this"
val result = "Hello".addPrefix() // Prefix_Hello
차이점
1. Kotlin에서는 기존 클래스에 새로운 기능을 추가 가능
• Java에서는 별도 Util 클래스를 만들어야 하지만, Kotlin에서는 확장 함수를 활용 가능
2. 객체지향적인 코드 작성 가능
• this 키워드를 활용해 기존 클래스처럼 사용 가능
8. 데이터 클래스 (Data Class)
Java (보일러플레이트 코드 많음)
public class User {
private String name;
private int age;
public User(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() { return name; }
public int getAge() { return age; }
}
Kotlin (데이터 클래스 사용)
data class User(val name: String, val age: Int)
차이점
1. 자동으로 equals(), hashCode(), toString() 구현
2. 객체 복사 기능 제공
val user1 = User("Alice", 25)
val user2 = user1.copy(age = 26) // 기존 객체에서 일부 값만 변경
✅ 결론
• 코틀린은 Java보다 간결하고 현대적인 문법을 제공
• Null 안전성, 확장 함수, 데이터 클래스 등 실용적인 기능 제공
• Java 기반 프로젝트에서도 코틀린을 쉽게 적용 가능
• 백엔드 개발 시 Spring Boot와 함께 Kotlin을 사용할 수 있음
출처 : ChatGPT
'BE > Kotlin' 카테고리의 다른 글
[Kotlin] 코틀린 문법 6 (open, 상속, 인터페이스) (0) | 2025.02.20 |
---|---|
[Kotlin] 코틀린 문법 5 (lateinit, lazy, companion object) (0) | 2025.02.19 |
[Kotlin] 코틀린 문법 4 (apply, let, also, run, with) (0) | 2025.02.18 |
[Kotlin] 코틀린 문법 3 (filter, forEach, ?:, map, is, as) (0) | 2025.02.17 |
[Kotlin] 코틀린 문법 2 (0) | 2025.02.16 |