[kotlin] 코틀린

너스레:)·2023년 2월 28일
1

Android_Kotlin

목록 보기
1/2

본 포스팅은 '코틀린' 프로그래밍 언어를 학습한 내용을 개인적으로 복습하는 목적의 포스팅입니다.

1. 코틀린 (Basic)

1-1. 코틀린에 대하여..

01 코틀린의 등장 배경

▶ 코틀린의 이점 (↔ JAVA)

  • 표현력 & 간결함
  • 안전한 코드 ☞ 널 안전성
  • 상호운용성
  • 구조화 동시성 ☞ 코루틴

02 코틀린 파일 구성

  • 확장자 : .kt
  • 구성 : 패키지 / 임포트 / 변수 / 함수 / 클래스
  • 패키지 경로
    • 같다면 ⇒ 다른 코틀린 파일에서 import 없이 멤버(변수, 함수, 클래스) 사용 가능
    • 다르다면 ⇒ 사용할 멤버를 import 구문으로 지정 必
  • 최상위 멤버
    • JAVA : only 클래스 (∵ 객체지향언어 ☞ 모든 것을 '클래스'로 묶어야 함)
    • 코틀린 : 클래스 + 변수, 함수 (∵ 객체지향만을 목적으로 하지 않음)
      • 파일명 <--(상관없음; 일치 안해도 됨)--> 클래스명
      • 코틀린 ---> JAVA
        ☞ 코틀린의 최상위 변수 및 함수
           ⇒ JAVA의 '파일명+Kt'라는 이름의 클래스 (자동 생성)
        ☞ 코틀린의 최상위 클래스
           ⇒ JAVA의 클래스

03 코틀린 소스의 테스트 방법

▶ main() 함수

1-2. 변수 & 함수

01 변수 선언하기

☞ val(불변) & val(가변)

val/var 변수명 : 타입 =

ⓐ 타입 지정 & 타입 추론

val data1 : Int = 10
val data2 = 10

ⓑ 초기값 할당

  • 최상위 변수 ⇒ 선언 + 초기값 설정 必
  • 함수 내 변수 ⇒ 선언 / 초기값 설정

ⓒ 초기화 미루기

☞ lateinit 또는 lazy 키워드

▶ lateinit 키워드

  • : "나중에" 초기값을 할당할 것임을 명시적으로 선언
  • 규칙 (2가지)
    • (1) lateinit var ☞ val로는 선언 불가
    • (2) 기초 타입 객체(Int, Long, Short, Double, Float, Boolean, Byte)에는 사용 불가
lateinit var data3 : String

▶ lazy 키워드

  • : 변수가 최초로 이용되는 순간 by lazy {}의 중괄호로 묶은 부분이 자동으로 실행되어 그 결과값이 변수의 초기값으로 할당됨
val data4 : Int by lazy {
	println("lazy 중괄호 내부입니다~~")
    10	// 결과값
}

02 데이터 타입

  • 코틀린의 모든 변수 ☞ "객체"
  • 객체
    • '기초 데이터 타입' X
    • null 대입 가능, 메서드 호출 가능
      • null : 객체가 선언만 되고, 메모리 할당이 되지 않았음을 의미

ⓐ 기초 타입 객체 : Int, Long, Short, Double, Float, Byte, Boolean

  • <정수> : Int, Long, Short
  • <실수> : Double, Float
  • <이진수> : Byte
  • <true/false> : Boolean

ⓑ 문자 & 문자열 : Char, String

  • Char(''), String("" 또는 """""")
  • ▶ .trimIndent()
  • ▶ 문자열 템플릿 ☞ $ 기호

ⓒ 모든 타입 가능 : Any

ⓓ 반환문 無 : Unit

ⓔ null 또는 예외 반환 함수 : Nothing

ⓕ 널 허용/불허용 : ?

03 함수 선언하기

☞ fun 키워드

fun 함수명(매개변수명 : 타입) : 반환타입 {
	...
}
  • ▶ 매개변수
    • val/var 키워드 X ☞ val로 자동 적용 ⇒ 함수 안에서 매개변수 값 변경 불가
    • 기본값(default value) 선언 가능
    • 명명된 매개변수

04 컬렉션 타입

  • : 여러 개의 데이터를 표현하는 방법
  • : Array, List, Set, Map

ⓐ Array

☞ Array 클래스 / arrayOf() 함수

  • ▶ 선언 방법 (2가지)
    • i) <기본> : Array<T> / arrayOf<T>()
    • ii) <기초 타입의 배열> : 타입Array<T> / 타입ArrayOf<T>()
// <기본> Array 클래스 ver.
val 변수명 : Array<T> = Array(배열의 크기, 초기값 설정 함수)
val data1 : Array<Int> = Array(3, { 0 })

// <기본> arrayOf() 함수 ver.
val 변수명 = arrayOf<T>(초기값들)
val data2 = arrayOf<Int>(10, 20, 30)
// <기초 타입의 배열> Array 클래스 ver.
val 변수명 : 타입Array = 타입Array(배열의 크기, 초기값 설정 함수)
val data1 : IntArray = IntArray(3, { 0 })

// <기초 타입의 배열> arrayOf() 함수 ver.
val 변수명 = 타입ArrayOf(초기값들)
val data2 = intarrayOf(10, 20, 30)
  • ▶ 데이터 접근 방법 ☞ [ ] (대괄호) / set( ) / get( )

ⓑ Collection 타입의 클래스 : List, Set, Map

  • Map 객체의 키 & 값 ☞ Pair 객체 / 키 to 값
var map = mapOf<String, String>(Pair("one", "hello"), "two" to "world")

1-3. 조건문 & 반복문

01 조건문

02 반복문

2. 코틀린 (Advanced): OOP(객체지향 프로그래밍)

3. 코틀린 (Extra)

profile
💻 (CSE) Computer Science and Engineering

0개의 댓글