[Kotlin] 코틀린 기본 문법 (1)

2022. 8. 9. 16:58· Android

 

 

코틀린 변수 선언

 

선언할 데이터의 값이 변경되지 않을 경우 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
'Android' 카테고리의 다른 글
  • [Kotlin] 코틀린 기본 문법 (3)
  • [Kotlin] 코틀린 기본 문법 (2)
  • [Android] Activity란?
  • [Android] BottomNavigation + ViewPager2
YOONJELLY
YOONJELLY
YOONJELLY
JELLYJELLY
YOONJELLY
전체
오늘
어제
  • 분류 전체보기 (153)
    • Springboot (2)
    • Android (15)
    • Algorithm (126)
      • 개념 (8)
      • BOJ (91)
      • Programmers (15)
      • SWEA (4)
    • 경험_기록 (1)
    • RIM_TIP (4)
    • Github (2)
    • CS (1)
      • 운영체제 (1)
      • 컴퓨터네트워크 (0)
      • 정보처리기사 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 문자열
  • 알고리즘
  • DFS
  • 이진탐색
  • 스택
  • 그리디
  • 다이나믹프로그래밍
  • 딕셔너리
  • DP
  • 코틀린
  • 프로그래머스
  • programmers
  • 코딩테스트
  • 안드로이드
  • kotlin
  • SWEA
  • 소프티어
  • 완전탐색
  • 큐
  • Android
  • 자료구조
  • 백준
  • 정렬
  • 파이썬
  • 액티비티컴포넌트
  • BOJ
  • 이것이코딩테스트다
  • Python
  • BFS
  • softeer

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
YOONJELLY
[Kotlin] 코틀린 기본 문법 (1)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.