본문 바로가기
코틀린

코틀린(1) - 개요, 변수

by 왈레 2022. 3. 17.

1.코틀린 기본

c언어와 동일 주석은 두가지 방식

// blah blah
/* blah blah */

참고로 코틀린은 문장의 끝에 세미콜론을 붙히지 않아도된다.

 

클래스 이름은 파스칼 표기법(모든 단어를 대문자로 시작 ClassName)

함수와 변수이름은 카멜 표기법(첫단어만 소문자로 시작 funtionName)

 

warning 불필요한 구문이 있거나 잠재적인 문제가 발생할 있는 곳에 표시 된다.

 

2.변수

코틀린의 2가지 변수선언 방법

  1. var : 일반적으로 통용되는 변수, 언제든지 읽기 쓰기가 가능함
  2. val : 선언시에만 초기화 가능, 중간에 값을 변경할 없음(상수)

 

변수는 선언위치에 따른 2가지 이름

  1. 클래스에 선언된 변수 : Property(속성)
  2. Scope 내에 선언된 변수 : Local Variable(로컬변수)

 

kotlin 고전적인 언어들과 크게 다른점중 하나는 고전적인 언어들은 변수가 선언된 초기화되지 않으면

기본값으로 초기화 되거나 값이 할당되지 않았다는 표시로 Null값을 가지게 되는데,

kotlin 기본변수에서 Null 허용하지않으며 또한 변수에 값을 할당하지 않은채로 사용하게되면

문법 에러를 표시하고 컴파일을 막아주므로 의도치 않은 동작이나 Null pointer exception 등을

원천적으로 차단해 준다는 점이 있습니다.

 

변수에 값을 할당하는 것은 반드시 선언시에 필요는 없으며 변수를 참조하여 사용하기전까지만 하면 된다.

그런데 프로그램에 따라서는 변수에 값이 할당되지 않았다는 것을 하나의 정보로 사용하는 경우도 있을 있다.

이런 경우에는 변수 선언시 자료형 뒤에 물음표를 붙이면 null 허용하는 nullable변수 선언해 있다.

(var a:Int? = null)

 

nullable 변수는 값이 null 상태로 연산할 null pointer exception 발생할 있으므로 필요한 경우에 한해 주의해서 사용해야한다.

이외에도 변수의 초기화를 늦추는 lateinit이나 lazy 속성도 있다.

 

기본자료형

정수형 : Byte(8bits), Short(16bits), Int(32bits), Long(64bits)

실수형 : Float(32bits), Double(64bits)

 

정수형의 리터럴(*리터럴 : 코드 내에 값을 표기하는 )

10진수 16진수 2진수

32비트 이내의 10진수 기본형으로 숫자만 표시하면 되며,

64비트인 Long 타입의 10진수 숫자뒤에 L 붙여 메모리를 사용하는 정수임을 표시해야 한다.(1234L)

16진수 경우 '0x' 앞에 붙이면 되고, 2진수 경우 '0b' 앞에 붙이면 된다.

코틀린은 8진수의 표기는 지원하지 않는다.

var intVlaue:Int = 1234

var longValue:Long = 1234L

var intValueByHex:Int = 0x1af

var IntValueByBin:Int = 0b10110

 

실수형의 리터럴

실수의 경우 기본이 double이며 소수점을 포함하여 숫자를 써주거나, 필요시 지수 표기법을 추가하면된다(123.5e10) float형의 경우 뒤에 소문자 또는 대문자 f 붙여주면 32비트의 float형으로 취급한다.

 

문자형

Char

코틀린은 내부적으로 문자열을 유니코드 인코딩 중에 방식인 UTF-16BE 관리한다.

따라서 글자 하나하나가 2bytes(16bits) 메모리 공간을 사용한다.

사용할땐 작음 따옴표로 감싸서 표기한다. 또한 특수문자도 지원한다.(\n, \\, \', \")

 

논리형

Boolean 또는 거짓 true인지 false인지 중에 하나를 저장하는 값.

Boolean 값을 직접 코드에서 표기할때는 직접 true 또는 flase라고 표기하면 된다.

 

문자열

val 변수명 = "문자열" 문자열 변수는 코드에서 표기할 때는 따옴표 내에 문자열을 써주면된다.

만약 여러 문자열을 적을 때는 따옴표 3 사용하면 줄바꿈이나 특수문자까지 그대로 문자열로 사용할 있다.("""여러줄의 문자열""")

댓글