Post

[Kotlin] 2. 변수와 자료형, 연산자

※ “Do it! 코틀린 프로그래밍” 을 참고하여 작성하였습니다.

02-1 코틀린 패키지

  • 코틀린 프로젝트의 구성

    [프로젝트 ← 모듈 ← 패키지 ← 파일(클래스)

    • 모듈: 기능을 모듈 단위로 분리하여 관리

    • 패키지

      • default 패키지: 따로 패키지 폴더가 없고 src 폴더 내에 있는 파일들의 패키지

      • 기본 패키지

        → kotlin.*

        → kotlin.text.*

        → kotlin.sequences.*

        → kotlin.ranges.*

        → kotlin.io.*

        → kotlin.collections.*

        → kotlin.annotation.*

        → kotlin.math.*

    • 파일

      • 클래스가 1개: 클래스 이름이 곧 파일 이름
      • 클래스가 2개 이상: 클래스 이름.kt

02-2 변수와 자료형

  • var과 val

    • var: 변경 가능한 변수
    • val: 읽기 전용 변수(불가변)
  • 변수 선언

    • [형식 1] val username: String= “Kildong”

    • [형식 2] val username= “Kildong”

    • [형식 3] var username (X)

      var username: String

      • 선언과 동시에 할당하지 않으려면 자료형을 선언해야 함
  • 자료형

    • 기본형
      • 가공되지 않은 순수한 자료형, 프로그래밍 언어에 내장되어 있음
      • 스택에 값이 저장되며, 값이 저장된 메모리의 크기가 고정되어 있음
    • 참조형
      • 객체를 생성하고 동적 메모리 영역에 데이터를 둔 다음 이것을 참조하는 자료형
      • 코틀린에서는 참조형만 사용!!!
      • 스택에 주소가 저장되며, 힙에 실제 객체가 저장됨
  • 정수 자료형

    • 부호가 있는 정수 자료형: Byte, Short, Int, Long
    • 부호가 없는 정수 자료형: UByte, UShort, UInt, ULong
  • 실수 자료형

    • Double(default), Float

    • 실수 표현 방법: 부동 소수점 방식

      Floating-point 방식: 실수를 가수와 지수로 나누어 표현하는 방식

자료형의 최소, 최댓값 확인: (자료형).MIN_VALUE, (자료형).MAX_VALUE

  • 논리 자료형: true / false

  • 문자 자료형(char)

    • 문자 자료형 변수에 ‘A’를 할당하면 실제로는 아스키코드 값인 65가 저장됨
    • toChar(): 숫자인 아스키코드 값을 문자로 변환해 출력할 수 있는 메소드
  • 문자열 자료형

    • $: 문자열을 출력할 때 변수 값을 활용하고 싶을 때 쓰는 기호
    • : 특수 문자를 쓸 때 앞에 쓰는 기호
    • “””

    “”” : 형식화된 다중 문자열, “”” “”” 안에서 다양한 형태의 문자열이 출력 가능하다

  • typealias: 자료형에 별명 붙이기

    [형식] typealias (별명)= 값

    ex) typealias Username= String

    val user: Username= “Kildong”

    • 이제부터 Username은 String 입니다. 😱

02-3 자료형 검사하고 변환하기

코틀린은 아예 null을 허용하지 않음 !!!

  • null 선언과 할당

    • 변수?= null
    • 선언한 변수 뒤에 ?(물음표 기호)를 붙여서 해당 변수가 null이 할당될 수 있음을 예고
  • null 변수 사용

    • 세이프 콜
      • null이 할당되어 있을 가능성이 있는 변수를 검사하여 안전하게 호출하도록 도와주는 기법
      • str1?.length: 변수가 null이면 null을 출력하고, null이 아니면 length를 출력
    • non-null 단정 기호를 활용
      • 변수가 null이 아님을 단정
      • 변수에 null이 할당되어 있다면 실행 중에 NPE 발생
    • 세이프 콜 + 엘비스 연산자
      • ${str1?.length ?: -1}: str1이 null이면 -1 출력, null이 아니면 length 출력
  • 자료형 변환

    코틀린은 다른 자료형을 가진 변수를 비교 or 연산할 수 없음

    • 변환 메소드 사용: .toDouble(), .toChar() 등
  • 기본형과 참조형 자료형의 비교 원리

    • 값 비교: == (이중등호)- 값만을 비교
    • 참조 주소 비교: === (삼중등로)- 참조 주소만을 비교
  • 스마트 캐스트

    • 컴파일러가 자동으로 형 변환

    • Number형

      • 숫자를 저장하기 위한 특수한 자료형 객체
      • Number형의 변수는 저장되는 값에 따라 자료형이 변환됨
    • as에 의한 스마트 캐스트

      • val x: String?= y as? String

        → y가 null 또는 값을 가질 때, x에게 할당할 수 있음

  • 자료형 검사

    • num is Int: num 변수가 Int 형인지 검사
    • num !is Int: num 변수가 Int 형이 아닌지 검사
  • 묵시적 변환

    • Any형: 최상위 클래스, 어떤 자료형이라도 될 수 있는 특수한 자료형
    • Any형으로 선언한 변수는 어떤 값이 들어와도 그 값의 자료형으로 묵시적 변환이 됨

02-4 코틀린 연산자

코틀린에서 삼항 연산자는 존재하지 않음

  • 기본 연산자

    • 산술 연산자: +, -, *, /, %
    • 대입 연산자: =, +=, -=, *=, /=, %=
    • 증가/감소 연산자: ++, –
    • 비교 연산자: >, <, >=, <=, ==, !=,===, !==
    • 논리 연산자: &&, , !
  • 비트 연산자

    • n.shl(bits), n.shr(bits): n을 표현하는 비트를 bits만큼 왼쪽, 오른쪽으로 이동(부호 있음)

    • n.ushr(bits): n을 표현하는 비트를 bits만큼 오른쪽으로 이동(부호 없음)

    • n.and(bits), n.or(bits), n.xor(bits): n을 표현하는 비트와 bits를 표현하는 비트로 논리곱, 논리합, 배타적 연산

      • xor로 두 숫자를 바꿀 수 있음!

        n1= n1 xor n2

        n2= n1 xor n2

        n1= n1 xor n2

    • n.inv(): n을 표현하는 비트를 모두 뒤집음

This post is licensed under CC BY 4.0 by the author.