dev-course day55

2rlokr·2025년 5월 23일

dev-course

목록 보기
36/43
post-thumbnail

오늘 배운 것

코틀린

변수와 자료형

변수

선언

var 변수이름 : 자료형
val 변수이름 : 자료형

할당

변수이름[:자료형] =// [ ] 생략 가능
  • 코틀린은 컴파일할 때, 값을 보고 타입 추론을 잘 해준다.
  • 한 번 타입이 확정되면, 다른 자료형을 할당해줄 수 없다.

초기화

var 변수이름 [: 자료형] =val 변수이름 [: 자료형] =// [ ] 생략 가능

자료형 추론 (Type Inference)

val name:String = "애플망고"
val age:Int = 10

변경 가능한 변수

  • var 키워드 : 값이 바뀌거나 다시 할당될 가능성이 있을 때 사용한다.
    즉, 변경 가능한 변수에 사용한다.
var name = "애플망고"
name = "포도"

// name = 100 (X)

변경할 수 없는 변수 (read-only variable)

  • val 키워드 : 최초로 지정한 변수의 값에서 변경될 수 없다.
  • 상수처럼 보이나, 상수는 아니다.
val name:String

name = "애플망고"
// name = "망고" (X)

상수

  • 컴파일 시점에 값이 확정되어 있어야 한다.
  • val 변수는 값을 변경할 수 없다는 것에서 상수처럼 보이지만, 런타임 때 값이 확정되기 때문에 상수가 아니다.
const val NAME:String = "애플망고"
  • 코틀린에서는 const 키워드를 val 앞에 붙여서 상수를 사용한다.
  • const val은 반드시 초기화까지 해야 사용할 수 있다.

자료형 (Data Type)

참조 자료형 (Reference Type)

  • 변수에 null 넣는 걸 허용하지 않는다.
  • 정수, 실수, 문자, 논리자료형을 가지고 있다. 하지만, 참조 자료형으로 가지고 있다.

정수형

val a:Byte = 10
val b:Short = -1
val c: Int = 0b1010 // 2진수 10
val d: Int = 10 // 10진수 10
val e:Int = 0xA // 16진수 10
val f:Int = 1_000_000
val g:Long = 1_000_000_000_000L

실수 자료형

val a:Double = 0.1
val b:Double = .1
val c:Double = 1e-1 // 1 x 10^-1
val d:Double = 1e1 // 1 x -10^-1
  • Double 자료형을 생략했을 땐, Float으로 추론하지 않고 Double로 추론한다.

문자형

val a:Char = 'A'
val b: Char = 65.toChar()

val c:Int = 'A'.code
  • 65를 참조하여 toChar()함수를 호출해서 사용해야 한다.
  • Acode라는 필드 (property)에 접근하여 사용할 수 있다.

문자열

val a:String = "여러 글자"
val b:String = """
		여러줄의
        문자
        """
  • indent를 모두 공백으로 인식하기 때문에 주의해야 한다.
    • trim indent 메서드가 있다.

논리형

val isKotlinFun: Boolean = true
val isKotlinDifficult: Boolean = false

Null 허용형 (Nullable Type)

val name: String = null // 불가
var nickname:String = "노란망고"
nickname = null			// 불가

val age:Int? = null // null 허용
age = 10
  • Int 타입과 Int? 타입은 다르다.
val age:Int? = null
val amount :Int = 10

age = amount // 가능

val age:Int? = null
age = 10
val amount:Int = age // 불가능

val a :Int? = 10 // Int로 인지한다.
  • Int? 변수를 Int 에 할당하는 것 불가능
  • Int 변수를 Int?에 할당하는 것은 가능

메모리

  • 코틀린 코드가 시작되면 JVM이 시작된다. (자바랑 똑같다.)

실습

val NAME = "망고"
var AGE = 10

fun main() {

    println(NAME) // 망고
    println(AGE) // 10
    AGE = 20
    println(AGE) // 20


}
  • 변수를 밖에서 만들면 다른 파일에서 사용할 수 있다. 당연히 값도 바꿀 수 있다.
const val URL = "jdbc:mysql://localhost:3306"

fun genValue():String {
    return "Hello World!"
}

val V_1 :String = genValue()
const val V_2:String = "Hello World!"
  • URL 은 상수이다.
    • val 키워드로 값이 변하지 않는다.
    • 컴파일 타임 때 이미 값이 확정된다. (런타임 x)
  • V_1도 상수처럼 보인다. 하지만, 함수가 호출되는 시점이 런타임이기 때문에 값이 런타임에 확정된다. 때문에 상수가 아니다.
// val a = 10l (x) 
val a = 10L

var b = .1f
b = .1F
  • 코틀린에서는 Long 타입에서 소문자를 인정해주지 않는다.
val desc: String = """
       달콤하고 맛있는 노란색 망고
       오늘도 먹고 내일도 먹고 
       라이즈 대박 너무 잘생김 헉
    """.trimIndent()
    println(desc)
  • trimIndent() 함수를 통해 들여쓰기를 없앨 수 있다.

문자열 템플릿

// 문자열 템플릿
// 1. $변수명
val favorite: String = "Favorite $name"
println("favorite = $favorite")

// 2. ${표현식}
val number: Int = 20
val sentence1 = "nu${number}mber"

println("sentence1 = ${sentence1}")

val price: Int = 20
val amount = 10

val sentence2 = "총 금액은 = ${price * amount}원입니다."
println(sentence2)
  • $변수명 으로 나타낼 수 있다. 하지만, 뒤에 띄어쓰기 없이 문자열이 붙으면 안된다는 점을 유의해야 한다.
  • ${표현식}으로 나타내면, 띄어쓰기 없이도 문자열을 나타낼 수 있다.

느낀 점

벌써 2차 프로젝트를 !! 끝내고 다시 수업으로 돌아왔다. 2차까지 잘 끝내고나니까 기분이 후련하다 ! 1,2차 프로젝트 회고를 써야 하는데..ㅎ 자꾸 미루네 증신차려! 앞으로 코틀린도 잘 배워봐야겠다 !
파이팅 !

0개의 댓글