Hello, Android!
코틀린 함수와 변수 본문
1 2 3 | fun main(args: Array<String>){ println("Hello, World!") } | cs |
1. 코틀린 에서 함수 선언의 키워드는 fun이다
2. 파라미터 이름 뒤에 파라미터의 타입을 지정한다
3. 함수를 최상위 수준에 정의할 수 있다. 자바와 다르게 꼭 클래스 안에 함수를 넣어야 할 필요가 없다
4. 줄의 끝에 ; 세미콜론을 붙이지 않아도 된다
1 2 3 | fun max(a: Int, b: Int): Int{ return if(a > b) a else b } |
max함수는 int값 a,b두개를 받아 int타입의 값을 반환해주는 결과값이 있는 함수이다
코틀린에서 반환값이 는 함수는 :type의 형태로 반환 값의 타입을 정해주며
return으로 값을 반환해준다
특이한 점으로 코틀린의 if는 자바처럼 문장 (if문)이 아닌 값을 만들어내는 식이다
1 2 3 | fun max(a: Int, b: Int): Int = if(a > b) a else b fun max(a: Int, b: Int) = if(a > b) a else b | cs |
리턴값이 식인 함수를 더욱 간결하게 줄이면 위와 같이 줄일수 있다
위와 같은 함수를 식이 본문인 함수 라고 하며 더욱 축약하면 반환타입을 생략하고
= 을 이용하여 바로 반환을 할 수 있다
단 반환값을 생략하기 위해서는 식이 본문인 함수에서만 가능하다
코틀린에서 반환값이 생략 가능한 이유는
코틀린이 정적 타입 지정 언어이기 때문이다 컴파일 시점에서 모든 타입을 추론한다
식이 본문인 함수의 경우 리턴 타입을 명시하지 않아도 컴파일러가 함수의 본문 식을 분석해서
결과 타입을 함수 반환타입으로 정해주기 때문이다
코틀린의 변수
자바에서의 변수 선언은 타입 (변수명 = 값;) 의 형식이었다
이와 다르게 코틀린에서는 변수 키워드가 존재하여 (키워드 변수명 : 타입 = 값)
의모습을 하고 있으며 변수 타입의 경우 생략이 가능하다
1 2 | var age : Int = 20 var age = 20 |
함수에서와 마찬가지로 타입을 명시하지 않으면 컴파일러가 분석하여 타입을 지정해준다
1 2 | var age : Int age = 20 | cs |
위와같이 변수 초기화식이 존재하지 않는다면 컴파일러가 타입추론을 할 수 없기때문에
반드시 타입을 지정해야만 한다
코틀린에서 변수의 키워드는 val var 두 가지가 존재한다
val은 변수 값의 변경이 불가능한 변수 이며 자바의 final에 해당한다
var은 변수 값의 변경이 가능한 변수 이며 자바의 일반 변수에 해당한다
※ 접두사, 접미사를 사용하여 2진수, 16진수를 표현할 수 있다
val num1 = 123 // Int형으로 추론
val num2 = 123L // 접미사 L을 통해 Long타입으로 추론
val num3 = 0x012 // 접두사 0x를 통해 16진수 Int로 추론
val num4 = 0v00012 // 접두사 0b를 통해 2진수 Int로 추론
※ 음의 부호가 없는 정수 자료형
일반적인 정수형은 음의 수에서 양의 수 까지 표현이 가능하지만
음의 값을 제한하여 양의 값만 표현할 수 있다
음의 값을 제한하게 되면 양수의 값을 두배 더 많이 표현할 수 있다
val num1: UInt = 123u
val num2: UShort = 123u
val num3: ULong = 123u // ULong의 경우 값의 접미사로 u를 붙여도 되고 uL을 붙여도 된다
val num4: UByte = 123u
※ 언더스코어를 통한 자리 수 구분
변수에 큰 수를 넣으면 자리 값을 읽기 어려울 떄가 있다
코틀린에서는 언더스코어 _ 를 통해 자리값을 구분해도 값에 영향이 없다
var num11: Int = 100_000_000
'Kotlin' 카테고리의 다른 글
스마트 캐스트, 자료형 검사 (0) | 2020.02.22 |
---|---|
코틀린의null (0) | 2020.02.19 |
문자열 String (0) | 2020.02.18 |
import와 확장함수 (0) | 2018.11.26 |
조건분기 when if (0) | 2018.11.22 |