일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 코딩테스트
- 카카오
- toCharArray
- GoingBus
- 월간코드챌린지
- 고잉버스
- Kotlin
- 리눅스마스터 1급 정리
- Java
- 반복문
- 백준 javascript
- Memoir
- 명령어
- 프로그래머스
- Linux
- map
- java 백준 1차원 배열
- 자바
- 자바스크립트 코딩의 기술
- 스프링 컨테이너
- 리눅스마스터 3과목
- 스프링 빈
- 연습문제
- JavaScript
- 리눅스
- 개발자 회고록
- 리눅스마스터1급
- 문자열
- 코테
- 백준 java
- Today
- Total
hoon's bLog
Kotlin 변수 선언 하기 본문
변수 정의 형태
// 예약어 변수 = 초깃값
val test = 15
- val 키워드 : 값을 뜻하는 value 에서 유래
- 변수 식별자 : 새 변수에 이름을 부여하고, 나중에 이를 가리킬때 사용
- 자바 VS 코틀린 : 코틀린에서는 변수 정의 뒤에 세미콜론(;)은 생략 가능!
예제를 통해 알아보자.
다음 예제는 사용자에게 정수 두개를 입력받아 합을 표시하는 프로그램이다.
fun main() {
val a = readLine()!!.toInt()
val b = readLine()!!.toInt()
println(a + b)
}
readLine()
은 표준입력 에서 한 줄을 읽어 문자열로 반환해 주는 표준 코틀린 함수다.- !! 는 널 아님 단언(not-null assertion)으로, readLine()의 결과가 널(null) 일 경우 예외를 발생
- 코틀린에서는 어떤 타입이 널값이 될수 있는지 추적하고, null이 아닌 것이 확실치 않는 값에 대해 toInt() 함수를 호출하지 못하게 막음으로 null로 인한 오류를 예방한다.
- readLine()의 결과에 대해 toInt() 함수를 호출한다.
toInt()
: String 클래스가 제공하는 메서드로, 메서드가 호출된 대상 문자열을 정숫값으로 변환한다.- 대상 문자열이 올바른 정숫값의 형태가 아니라면 toInt()는 런타임 오류를 내면서 프로그램을 종료시킨다.
- 아래와 같이 한 줄에 "3 2" 로 입력하면 문자열로 인식하면서 아래와 같은
"For input string"
에러를 발생시킨다.
- toInt()를 호출한 결과를 a와 b 변수에 저장한다.
- 마지막으로 a + b의 결과를 println() 함수에 전달해서 표준 출력으로 아래와 같이 출력한다.
타입추론
변수타입을 지정하지 않았는데 컴파일 되고 실행된다.
이는 타입추론 기능 때문이다.
컴파일러가 코드 문맥에서 타입을 도출해 주는 언어의 기능이다.
여기서는 toInt() 메서드가 Int 타입을 반환한다는 사실을 알고 있기에 변수 타입 또한 int로 추론한다.
타입추론 덕분에 코틀린은 강한 타입 지정 언어인 동시에,
개발자가 불필요한 타입 정보를 코드에 추가해서 코드가 지저분해 지는것을 막아준다.
타입명시
필요할 때는 타입을 명시해도 된다.
타입을 명시할때는 변수 이름 뒤에 콜론(:)을 표시하고, 그 뒤에 타입을 적는다.
val n: Int = 100
val text: String = "Hello!"
위 경우 초깃값이 지정한 타입에 속해야 한다.
아래와 같이 선언한 타입과 초기값의 타입이 일치하지 않는 경우 컴파일 오류를 일으킨다.
val n: Int = "Hello!"
IntelliJ에서 컴파일러가 식이나 값에 대해 추론한 타입을 볼 수 있다.
원하는 식을 편집창에서 선택하거나
변수이름에 캐럿(편집기 커서)를 위치시키고 ctrl
+ shift
+ P
(맥에서는 cmd
+ shift
+ P
)를 누른다.
이를 바탕으로 간단한 액션으로 타입을 명시하거나 명시된 타입을 제거할 수도 있다.
아래와 같이 커서를 변수에 위치 시키고, alt
+ enter
(맥에서는 option
+ enter
)를 누른후,
Specify type explicitly(타입명시)나 Remove explicit Type(명시된 타입 제거)를 선택한다.
초깃값 생략
초깃값을 생략하고 나중에 다른 문에서 변수를 초기화 할 수 있다.
이 경우에는 반드시 변수 타입을 명시해야 한다.
하지만 변수를 읽기 전에 초기화 해야 한다.
변수를 사용하기 전에 초기화 했는데 컴파일러가 확실히 알수 없는 경우 컴파일 오류가 발생할 수 있다.
val text: String
text = "Hello!"
이렇게 오늘은 코틀린의 변수 정의 하는 법에 대해서 알아봤다.
코틀린의 api문서도 찬찬히 읽어보면 문법을 다져봐야겠다!
언제나 새로운 정보 공유와 잘못된 정보
비판/지적/태클은 환영입니다!
끝.
Reference
https://kotlinlang.org/docs/basic-syntax.html
'IT > Kotlin' 카테고리의 다른 글
Kotlin char 문자 타입 (0) | 2023.08.24 |
---|---|
Kotlin 정수 타입 (2) | 2023.08.14 |
Kotlin 식별자, 가변변수, 연산 (1) | 2023.08.11 |
Kotlin REPL Playground 코틀린 기능 툴 사용 (5) | 2023.08.03 |
Kotlin Intellij 코틀린 개발 환경 Setting (0) | 2023.06.20 |