-
[코틀린 완벽 가이드] 2장 코틀린 언어 기초 (2.1 - 2.2)코틀린 공부/코틀린 2023. 12. 27. 13:12
배우는 내용
- 변수 정의
- 가변과 불변 변수
- 기본 식: 참조, 호출, 단항/이항 연산자
- 기본 타입과 연산: 수, 문자, 불 값
- 문자열 타입: 문자열 리터럴과 템플릿, 기본 문자열 연산
- 배열 타입: 배열 생성과 기본 연산
2.1 기본 문법
2.1.1 주석
1. 한 줄짜리 주석: //
//
2. 여러 줄 주석 /* 여러 줄 주석 */
/* 여러 줄 주석 */
3 KDoc 여러줄 주석: /** KDoc 여러줄 주석 */
/** KDoc 여러줄 주석 */
2.1.2 변수 정의하기
- val 키워드
- 변수 식별자 : 새 변수에 이름을 부여하고, 나중에 이를 가리킬 때 사용한다.
- 변수의 초깃값을 정의하는 식 : = 기호 뒤에 온다.
fun main() { val a = readln().toInt() val b = readln().toInt() println(a + b) }
- readln운 readLine을 실해앟게 하는 호출 식이다. 표준 입력에서 한 줄을 읽어서 문자열 반환
- !!은 null이 아님을 단언으로, readLine()의 결과가 널일 경우 예외 발생. (4장에서 더 자세히)
- toInt는 String이 제공하는 메소드 (문자열 -> 정숫값).
a,b 같은 변수를 지역 변수라고 한다. 자바와는 타르게 타입을 안적는 타입추론이 적용되어있다.
val text: String text = "Hello"
초기값을 생략하고 나중에 다른 문에서 변수를 초기화할 수도 있다. 이 경우 변수 타입을 명시해야 한다.
2.1.3 식별자
식별자는 변수나 함수 등 프로그램에 정의된 대상에 붙은 이름이다. 코틀린 식별자는 두가지로 구분된다.
첫 번째는 자바 식별자와 비슷하며 다음 규칙을 만족하는 임의의 문자열이다
- 식별자는 오직 문자, 숫자, 밑줄 문자(_)만 포함한다. 숫자로 식별자를 시작할 수는 없다.
- 밑줄로만 이뤄질 수도 있다. 하지만 이런 식별자(_, __, ___ 등)는 모두 미리 예약된 식별자 이므로 일반적인 식별자로 사용될 수 없다.
- Hard Keyword는 식별자로 쓸 수는 없다.
하드 키워드(val, fun 등)는 코드 어디에 있든 키워드로 간주된다.
반면 소프트 키워드(import)는 특별한 문맥에서만 키워드로 간주되며, 그런 문맥이 아닐경우 사용가능 (목록 링크)
두 번째 형태는 작은따옴표(')로 감싼 식별자로, 두 작은따옴표 사이에는 빈 문자열을 제외한 아무 문자열이나 와도 된다.
2.1.4 가변 변수
불변 변수(val로 정의된 변수)를 사용하면 함수가 부수 효과를 일으키지 못하고, 함수형 스타일 코드를 장려할 수 있으며, 이로 인해 코드에 대한 추론이 쉬워지기 때문에 가능하면 불변 변수 사용 장려.
but 필요한 경우 var 키워드를 사용해 가변 변수 정의 가능!
var sum = 1 sum = sum + 2 println(sum)
2.1.5 식과 연산자
지금까지 사용한 코틀린 식을 다음과 같이 분류 가능 :
- 각 타입에 속하는 구체적인 값을 표현하는 리터럴(12, 3.56)
- 변수/프로퍼티 참조와 함수 호출 (a, readLine(), "abc".length, "12".toInt())
- 전위와 후위 단항 연산 (-a, b++, --c)
- 이항 연산(a+b, x < 1)
모든 식은 정해진 타입이 있다.
자바랑 배슷한 내용이라 생략
2.2 기본 타입
2.2.1 정수 타입
Byte Short Int long
어떤 정수 타입 값을 표현하는 가장 간단한 리터럴은 10진수다.
코틀린 1.1부터는 자바 7+와 마찬가지로 수 리터럴에 _를 넣어서 가독성을 높일 수 있다.
var n = 12345 n = 34_123_123 println(n) //34123123
2.2.2 부동소수점 수
Float, Double
val pi = 3.14 val quarter = .25 }
2.2.3 산술 연산
2.2.4 비트 연산
2.2.5 문자 타입 Char
2.2.6 수 변환
각 수 타입마다 값을 다른 수 타입으로 변환하는 연산이 정의돼 있다.
toByte(), toShort() 등등 앞에 to를 붙힌다.
자바와는 달리 코틀린에서는 범위가 큰 타입이 사용돼야 하는 문맥에 범위가 작은 타입을 쓸 수 없다. 예를 들어 Int 값을 Long 변수에 대입할 수 없다.
val p = 100 // Int val l:Long = p // 타입이 일치하지 않습니다.
2.2.7 불 타입과 논리 연산
- ! : 논리 부정
- or, and, xor : 즉시 계산 방식의 논리합, 논리곱, 논리배타합
- ||, && : 지연 계산 방식의 논리합, 논리곱
자바와 다르게 코틀린은 &와 | 연산자를 제공하지 않는다. 'and' 와 'or' 이 각각 '&' 와 '|' 을 대체한다.
val x = 2 val y = 3 println(x != 1 && y/(x-1) != 1)
위에 예는 지연 계산 필수. x==1 일떄 y/0 오류 발생
순서 : 즉시 계산 > 지연 계산
2.2.8 비교와 동등성
==, !=, <, <=, >, >=
일반적으로 동등성 연산인 ==와 !=은 모든 타입의 값에 적용 가능 그러나 수 타입, Char, Boolean 예외
val a = 1 val b = 2L println(a.toLong()==b)
'코틀린 공부 > 코틀린' 카테고리의 다른 글
[코틀린 완벽 가이드] 3장 함수 정의하기 (3.5 예외 처리) (0) 2023.12.29 [코틀린 완벽 가이드] 3장 함수 정의하기 (3.3 조건문와 3.4 루프) (0) 2023.12.29 [코틀린 완벽 가이드] 3장 함수 정의하기 (3.1 함수) (0) 2023.12.28 [코틀린 완벽 가이드] 2장 코틀린 언어 기초 (2.3 - 2.4) (0) 2023.12.27 [코틀린 완벽 가이드] 1장 강력하고 실용적인 코틀린 (1) 2023.12.27