[Kotlin] 기본 문법 (1)
들어가기 전
코틀린 기본 문법을 설명하면서 이해를 쉽게 할 수 있도록 자바 문법과 비교해 가면서 설명할 것입니다.
var, val 이란?
코틀린에서는 변수나 상수를 선언을 할 때 var와 val을 사용하여 선언을 합니다.
var : 가변의 속성을 가진 것에 선언을 합니다.
val : 불변의 속성을 가진 것에 선언을 합니다.
var num1 = 1 // 가변의 속성을 가졌을 경우
val num2 = 1 // 불변의 속성을 가졌을 경우
그럼 자바에서는 어떻게 변수와 상수를 나타내는지에 대해 알아보겠습니다.
int num1 = 1 // 가변의 속성을 가졌을 경우
final int num2 = 2 // 불변의 속성을 가졌을 경우
속성 | Java | Kotlin |
가변 속성 | int num1 = 1 | var num1 = 1 |
불변 속성 | final int num2 = 1 | val num2 = 1 |
코틀린 타입 명시하는 법
Java
int numInt;
long numLong;
float numFloat;
double numDouble;
String str;
Kotlin
var numInt : Int
var numLong : Long
var numFloat : Float
var numDouble : Double
var str : String
자바에서는 정수, 실수에 대한 데이터 타입이 primitive type과 reference type으로 타입을 명시해 줍니다. 그러나 코틀린에서는 대문자로 타입을 선언을 했다고 reference type라고 착각할 수 있지만 primitive type만 존재합니다.
그럼 여기서 잠깐!
자바에서는 reference type로 값에 Null이 들어올 수 있었습니다.
그럼 코틀린에서는 reference type가 없으니 값에 Null에 대해 안 다루나?!라고 생각을 하실 수 있습니다.
그거에 대해선 바로 밑에서 설명드리겠습니다.
코틀린 Safe Call
Safe Call이란 Null이 들어올 수 있는 변수를 안전하게 다루는 기능입니다.
Null을 다루는 방법에 대해 Java와 Kotlin 각각 알아보겠습니다.
Java
1. 자바 8에서 지원하는 Optional을 이용해서 Null을 안전하게 다룰 수 있습니다.
class Person {
String name;
int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public int getAge() {
return age;
}
public String getName() {
return name;
}
}
public static void main(String[] args) {
Optional<Person> person = Optional.ofNullable(
Optional.of(new Person("정", 25))
.orElseThrow(IllegalStateException::new));
}
2. 조건문을 이용하여 값이 null인지를 체크합니다.
class Person {
String name;
int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public int getAge() {
return age;
}
public String getName() {
return name;
}
public boolean nullCheck(String name) {
if(name == null) {
return false;
return true;
}
Kotlin
fun nullCheck(str : String?) : Boolean {
return str?.contains("정") ?: false
}
- 코틀린에서는 Null에 대해 안전하게 다룰 때 위에 코드 String?처럼 null을 안전하게 다룰 수 있습니다.
- ? <- 이것을 Safe Call이라고 합니다.
- ?: <- Elvis Operation이라고 부릅니다.
- str?.contains("정") ?: false :
- ? : null을 안전하게 다루기 위한 Safe Call
- ?: 결과값 : 만약 str이 null이 들어오면 ?: 뒤에 정한 결과값을 return 합니다.
- 만약 null이 안 들어올 경우 제대로 연산된 결과값을 return 합니다.'
형 변환
자바에서는 형 변환은 명시적 형변환과 묵시적 형변환이 있습니다.
그러나 코틀린에서는 명시적 형변환만 존재합니다.
Java
// 묵시적 형변환
int numInt = 1;
long numLong = numInt;
// 명시적 형변환
double numDouble = 3.5;
numLong= (long) numDouble;
Kotlin
// 명시적 형변환
// int -> long
val numInt : Int = 5
var numLong : Long = numInt.toLong()
// String -> long
val str : String = "1234"
numLong = str.toLong()
참고 : 코틀린에서는 자바와 달리 ;(세미콜론)을 생략할 수 있습니다.
'Kotlin' 카테고리의 다른 글
[Kotlin] java.time.* 사용시 발생하는 예외 해결 방법 (0) | 2023.06.19 |
---|---|
[Kotlin] 문자열 대체 메서드(removePrefix, removeSuffix, removeRange, removeSurrounding) (0) | 2023.05.04 |
[Kotlin] 기본 문법 (2) (0) | 2023.04.20 |
[Kotlin] data class VS class (0) | 2023.02.24 |
댓글
이 글 공유하기
다른 글
-
[Kotlin] java.time.* 사용시 발생하는 예외 해결 방법
[Kotlin] java.time.* 사용시 발생하는 예외 해결 방법
2023.06.19 -
[Kotlin] 문자열 대체 메서드(removePrefix, removeSuffix, removeRange, removeSurrounding)
[Kotlin] 문자열 대체 메서드(removePrefix, removeSuffix, removeRange, removeSurrounding)
2023.05.04 -
[Kotlin] 기본 문법 (2)
[Kotlin] 기본 문법 (2)
2023.04.20 -
[Kotlin] data class VS class
[Kotlin] data class VS class
2023.02.24