코틀린 변수 선언
선언할 데이터의 값이 변경되지 않을 경우 val,
변경될 수 있을 경우 var로 선언
상수는 const로 선언
// 변수 선언 시 초기화 -> 타입 생략 O (타입 추론 가능)
var name = "림"
val age = 24
// 초기화 없이 변수 선언만 -> 타입 생략 X
var name:String
val age:Int
// 상수
const val PI = 3.141592
val과 const val의 차이
val : 불완전한 불변성
- 값이 런타임 시에 결정되는 상수
- 독립적인 프로그램 수행 중 프로그램 수행에 따라 값이 바뀔 수 있음
- 두 숫자를 더한 값을 반환하는 함수를 사용해 val의 값을 정할 때,
파라미터에 따라 값이 다르게 나타날 수 있음
const val : 불변성
- 값이 컴파일 시에 결정되는 상수
- 클래스의 생성자에 할당될 수 없으며, 기본 자료형으로만 선언 가능
- 함수 내 지역변수나 클래스의 속성으로 사용 불가능
- const val을 함수나 클래스 내에서 사용하려면 companion object에 선언해야 함
- 변수명은 대문자와 _를 사용
- 컴파일 시 데이터가 메모리에 존재하기 때문에 사용 시 객체를 생성해서 접근하지 않고
클래스명.상수명의 형태를 사용해서 직접 접근
val과 var의 특성
val
- 한 번만 초기화 가능하지만 초기화 후보가 여럿이 될 수 있음
- val 자체는 변경이 어렵지만 val이 가리키는 객체 내부값은 변경 가능
var
- var은 값 변경이 가능하지만 선언시 사용한 타입으로만 변경 가능
자료형
코틀린은 모두 객체로 이루어져 있음
자바의 자료형
1) 원시 타입
short, int, long, float, double 등 기본 자료형으로 값 자체를 저장하는 자료형
언어 자체에 내장되어 있음
2) 참조 타입
String, Date, ArrayList 등 객체를 생성하고 메모리 영역을 할당한 후
이를 참조하는 자료형
반면, 코틀린에서는 내부적으로 모든 자료형은
클래스로 만들어지고 객체로 표현됨.
- 그 중에서도 숫자로 표현하는 모든 자료형은 Number 클래스를 상속받음- 기본 자료형을 객체로 사용하기 위해 클래스로 포장하는 것을 래퍼 클래스라 하는데,자바에서의 원시 타입과 래퍼 클래스를 코틀린에서는 하나의 자료형으로 처리- 따라서, 코틀린으로 코드를 작성하는 시점에서는 원시 타입과 래퍼 클래스를구분하지 않지만 컴파일을 통해 둘 중 더 효율적인 타입으로 변환됨
숫자형
Byte, Double, Float, Int, Long, Short
# 명시적 형변환
형변환 함수는 "to + 자료형()"의 형태로 사용할 수 있음
fun main() {
val a : Int = 1
val b : Long = a.toLong()
}
# 타입 추론
"변수명 is 자료형"의 형태로 변수의 자료형을 검사할 수 있음
fun main() {
val a = 127
val aa = 9876543210
if (a is Int) println("a is Int")
if (aa is Long) println("aa is Long")
}
// a is Int
// aa is Long
# 스마트 캐스트와 Any 자료형
스마트 캐스트는 컴파일러가 자동으로 형변환을 해주는 것을 말함
대표적으로 모든 숫자 자료형의 슈퍼 클래스인 Number 클래스가 있음
Number형으로 선언된 변수는 저장되는 값에 따라 자동으로
정수형이나 실수형으로 변환됨
fun main() {
var a : Number = 1
a = 10.5
a = 9876543210
}
Any는 모든 자료형의 슈퍼클래스로 어느 자료형과도 호환이 되는 최상위 자료형
어떠한 자료형이라도 언제나 변환 가능 (묵시적 형변환)
fun main() {
var a : Any = 10
a = "123"
}
문자 자료형
단 하나의 문자를 표현
자바는 문자에 해당하는 아스키코드인 정수를 문자 자료형에 대입할 수 있었지만,
코틀린에서는 오로지 문자만 문자 자료형에 대입 가능 (정수 대입시 컴파일 에러)
문자 자료형에 아스키코드 정수값 대입하려면
val num = 65
val numToChar = num.toChar()
논리 자료형
val isTrue: Boolean = true
val isFalse: Boolean = false
문자열 자료형
val name = "림"
문자열 템플릿
문자열 내부에 $가 있으면 해당 영역이 문자가 아닌 코드임을 알려줌
$변수 뒤 이어지는 문자가 있으면 공백으로 구분
val age = 23
val myage = "제 나이는 ${age + 3} 입니다"
함수
기본 형태 : 디폴트 값 X, 반환값 O
fun 함수명(변수: 변수타입, 변수: 변수타입): 반환타입 {
함수내용
return 반환값
}
반환 타입 중 자바의 void와 동일한 Unit은 생략 가능
코틀린에서는 타입 추론이 가능하므로 반환 타입을 적지 않아도 컴파일 시 타입을 정해줌
vararg 파라미터
전달받는 값이 정해져 있지 않은 상황에서 사용하기 좋은 한정자
파라미터에서 가장 뒤에 선언해서 사용해야 함
단일 표현식 함수
fun getName(): String = "리미"
// when 조건 결과를 반환하는 단일 표현식 함수
fun getName(name: String) : String = when(name) {
"리미" -> "나는 리미야"
"길동" -> "나는 길동이야"
else -> "나는 누구지"
}
fun main() {
var name = getName("dd")
println(name)
}
// 나는 누구지
'Android' 카테고리의 다른 글
[Kotlin] 코틀린 기본 문법 (3) (0) | 2022.08.12 |
---|---|
[Kotlin] 코틀린 기본 문법 (2) (0) | 2022.08.10 |
[Android] Activity란? (0) | 2022.08.09 |
[Android] BottomNavigation + ViewPager2 (0) | 2022.04.06 |
[Android] 코루틴 Coroutine (0) | 2022.04.01 |
코틀린 변수 선언
선언할 데이터의 값이 변경되지 않을 경우 val,
변경될 수 있을 경우 var로 선언
상수는 const로 선언
// 변수 선언 시 초기화 -> 타입 생략 O (타입 추론 가능)
var name = "림"
val age = 24
// 초기화 없이 변수 선언만 -> 타입 생략 X
var name:String
val age:Int
// 상수
const val PI = 3.141592
val과 const val의 차이
val : 불완전한 불변성
- 값이 런타임 시에 결정되는 상수
- 독립적인 프로그램 수행 중 프로그램 수행에 따라 값이 바뀔 수 있음
- 두 숫자를 더한 값을 반환하는 함수를 사용해 val의 값을 정할 때,
파라미터에 따라 값이 다르게 나타날 수 있음
const val : 불변성
- 값이 컴파일 시에 결정되는 상수
- 클래스의 생성자에 할당될 수 없으며, 기본 자료형으로만 선언 가능
- 함수 내 지역변수나 클래스의 속성으로 사용 불가능
- const val을 함수나 클래스 내에서 사용하려면 companion object에 선언해야 함
- 변수명은 대문자와 _를 사용
- 컴파일 시 데이터가 메모리에 존재하기 때문에 사용 시 객체를 생성해서 접근하지 않고
클래스명.상수명의 형태를 사용해서 직접 접근
val과 var의 특성
val
- 한 번만 초기화 가능하지만 초기화 후보가 여럿이 될 수 있음
- val 자체는 변경이 어렵지만 val이 가리키는 객체 내부값은 변경 가능
var
- var은 값 변경이 가능하지만 선언시 사용한 타입으로만 변경 가능
자료형
코틀린은 모두 객체로 이루어져 있음
자바의 자료형
1) 원시 타입
short, int, long, float, double 등 기본 자료형으로 값 자체를 저장하는 자료형
언어 자체에 내장되어 있음
2) 참조 타입
String, Date, ArrayList 등 객체를 생성하고 메모리 영역을 할당한 후
이를 참조하는 자료형
반면, 코틀린에서는 내부적으로 모든 자료형은
클래스로 만들어지고 객체로 표현됨.
- 그 중에서도 숫자로 표현하는 모든 자료형은 Number 클래스를 상속받음- 기본 자료형을 객체로 사용하기 위해 클래스로 포장하는 것을 래퍼 클래스라 하는데,자바에서의 원시 타입과 래퍼 클래스를 코틀린에서는 하나의 자료형으로 처리- 따라서, 코틀린으로 코드를 작성하는 시점에서는 원시 타입과 래퍼 클래스를구분하지 않지만 컴파일을 통해 둘 중 더 효율적인 타입으로 변환됨
숫자형
Byte, Double, Float, Int, Long, Short
# 명시적 형변환
형변환 함수는 "to + 자료형()"의 형태로 사용할 수 있음
fun main() {
val a : Int = 1
val b : Long = a.toLong()
}
# 타입 추론
"변수명 is 자료형"의 형태로 변수의 자료형을 검사할 수 있음
fun main() {
val a = 127
val aa = 9876543210
if (a is Int) println("a is Int")
if (aa is Long) println("aa is Long")
}
// a is Int
// aa is Long
# 스마트 캐스트와 Any 자료형
스마트 캐스트는 컴파일러가 자동으로 형변환을 해주는 것을 말함
대표적으로 모든 숫자 자료형의 슈퍼 클래스인 Number 클래스가 있음
Number형으로 선언된 변수는 저장되는 값에 따라 자동으로
정수형이나 실수형으로 변환됨
fun main() {
var a : Number = 1
a = 10.5
a = 9876543210
}
Any는 모든 자료형의 슈퍼클래스로 어느 자료형과도 호환이 되는 최상위 자료형
어떠한 자료형이라도 언제나 변환 가능 (묵시적 형변환)
fun main() {
var a : Any = 10
a = "123"
}
문자 자료형
단 하나의 문자를 표현
자바는 문자에 해당하는 아스키코드인 정수를 문자 자료형에 대입할 수 있었지만,
코틀린에서는 오로지 문자만 문자 자료형에 대입 가능 (정수 대입시 컴파일 에러)
문자 자료형에 아스키코드 정수값 대입하려면
val num = 65
val numToChar = num.toChar()
논리 자료형
val isTrue: Boolean = true
val isFalse: Boolean = false
문자열 자료형
val name = "림"
문자열 템플릿
문자열 내부에 $가 있으면 해당 영역이 문자가 아닌 코드임을 알려줌
$변수 뒤 이어지는 문자가 있으면 공백으로 구분
val age = 23
val myage = "제 나이는 ${age + 3} 입니다"
함수
기본 형태 : 디폴트 값 X, 반환값 O
fun 함수명(변수: 변수타입, 변수: 변수타입): 반환타입 {
함수내용
return 반환값
}
반환 타입 중 자바의 void와 동일한 Unit은 생략 가능
코틀린에서는 타입 추론이 가능하므로 반환 타입을 적지 않아도 컴파일 시 타입을 정해줌
vararg 파라미터
전달받는 값이 정해져 있지 않은 상황에서 사용하기 좋은 한정자
파라미터에서 가장 뒤에 선언해서 사용해야 함
단일 표현식 함수
fun getName(): String = "리미"
// when 조건 결과를 반환하는 단일 표현식 함수
fun getName(name: String) : String = when(name) {
"리미" -> "나는 리미야"
"길동" -> "나는 길동이야"
else -> "나는 누구지"
}
fun main() {
var name = getName("dd")
println(name)
}
// 나는 누구지
'Android' 카테고리의 다른 글
[Kotlin] 코틀린 기본 문법 (3) (0) | 2022.08.12 |
---|---|
[Kotlin] 코틀린 기본 문법 (2) (0) | 2022.08.10 |
[Android] Activity란? (0) | 2022.08.09 |
[Android] BottomNavigation + ViewPager2 (0) | 2022.04.06 |
[Android] 코루틴 Coroutine (0) | 2022.04.01 |