언어/Kotlin

[Kotlin1-7] 변수선언 & 식별자

연나연 2023. 12. 27. 17:51
▶ 변수
: 프로그램 실행 중에 변화되는 값을 저장하는 기억공간
변수의 용도와 크기는 개발자가 자료형을 이용해 결정한다.
변수의 위치는 VM이 알아서 정해준다.
변수가 생성되는 위치는 VM 알아서 정해주기 때문에 개발자는 변수가 어디에 있는지 알 수 없다.
이에, 변수의 접근을 위해 변수의 이름을 사용한다.
변수의 이름은 개발자가 정해주며 개발자는 변수의 이름을 통해 변수에 접근하여 변수에 값을 저장하거나가져다 사용할 수 있다.

 

변수선언

- Kotlin은 변수 선언 시 val, var 두 가지 키워드를 사용한다.
- var : 선언 이후 값을 다시 저장할 수 있다.
- val : 선언 이후 값을 다시 저장할 수 없다.
- var/val 변수명:타입 = 값
- 타입을 생략 시 저장하는 값에 따라 자료형이 자동으로 결정된다.

 

null 허용 변수

- Kotlin은 변수를 선언 할 때 null 허용 여부를 설정할 수 있다.
- var/val 변수명:자료형 = 값 – null을 허용하지 않는 변수
- var/val 변수명:자료형? = 값 – null을 허용하는 변수
▶식별자
변수, 함수, 클래스, 메서드 등과 같이 개발자가 정의해서 사용하는 요소들을 구분하기 위해 지어주는 이름
식별자 규칙은 자바언어와 동일하다

<문법적으로 지켜야 하는 규칙>
    ▩지키지 않으면 오류 발생▩
[1] 길이의 제한은 없다.
[2] 첫 글자는 문자,_, $만 가능하다. ($는 다른 곳에서 의미가 있을 수 있기 때문에 사용안하는 것을 지양함)
[3] 두 번째 글자 부터는 문자, 숫자, _, $를 사용할 수 있다.
[4] 자바언어에서 식별자를 한글로 지어주는 것이 허용되기 때문에 코틀린도 식별자는 한글로 해도 된다.

<권장사항>  <---그냥 관례느낌,, 자바언어 공식문서에 나와있슴 ㅇㅇ
[1] 변수의 이름은 첫 글자를 소문자로
[2] 함수나 메서드의 이름은 첫 글자를 소문자로
[3] 클래스의 이름은 첫 글자를 대문자로
[4] 상수를 의미하는 것들은 모두 대문자로

<표기기법>
[EX] 잘못된 표기 예
  (1) koreanpointaverage : 여러 단어를 조합했지만 가독성이 떨어진다.
  (2) korean point average : 문법 오류. 이름은 띄어쓰기를 지원하지 않는다.
[1] 파스칼 표기 기법 
    -단어와 단어사이에 언더바(_)를 두는 표기 기법
    ex) korean_point_average / car_count /
[2]. 카멜 표기 기법
    -각 단어의 첫 글자를 대문자로 작성하는 표기 기법 
    ex) koreanPointAverage / carCount /

**자바에서는 카멜 표기 기법을 주로 사용한다.**

https://www.curioustore.com/   <--이름짓기가 얼마나 어려우면 이렇게 변수명 지어주는 사이트도 있다는 ㅎㅎ,,,,

 

" 아래 코드를 보며 익혀보자 ! "
fun main(){a
    //변수를 정의한다
    //var/val 변수의 이름: 자료형
    //Int 타입(정수형, 4byte)의  a1이라는 이름의 변수를 선언한다.
    //변수는 선언과 동시에 메모리에 기억장소가 만들어진다.
    var a1:Int

    // 변수에 값을 저장한다.
    // 변수에는 값 하나만 저장할 수 있다.
    // 값을 다시 저장하면 기존의 저장된 값을 삭제되어 덮어씌워 진다.
    // = : 대입연산자. 우측의 값을 좌측의 변수에 저장한다.
    a1 = 100
    //변수의 이릉만 작성하면 변수에 저장되어 있는 값을 가져와 사용할 수 있따.
    println("a1 : " + a1)

    //변수에 새로운 값을 저장하면 기존에 저장되어 있는 값은 소멸된다.
    a1 = 200
    println("바뀐 a1 : " + a1)

    //변수에 선언과 동시에 변수에 값을 저장할 수 있다 (=변수를 초기화 한다)
    var a2:Int = 300
    println("a2 : " + a2)

    //변수 선언시 값을 저장할 때는 자료형을 생각해도 된다.
    //변수에 저장하는 값을 보고 변수의 자료형이 결정된다.
    var a3 = 400
    println("a3 : " + a3)
    println("a3 's type : " + a3.javaClass.name)

    var a4 = 11.11
    println("a4 : " + a4)
    println("a4 's type : " + a4.javaClass.name)
    
    //변수를 선언할 때 저장할 값이 없을 경우 자료형을 생략하면 오류가 발생한다.
    //  EX) var a5
    
    //자료형이 결정된 변수는 자료형을 변경할 수 없다.
    //  EX) a4 = "안녕하세요"
}

 

" 그렇다면 자료형 별 모든 출력을 해보자 ! "

fun main(){
   
    var a10:Byte = 100
    var a11:Short = 200
    var a12:Int = 300
    var a13:Long = 400

    var a14:Double = 11.11
    var a15:Float = 22.22F

    var a16:Char = '너'

    var a17:Boolean = true

    var a18:String = "나연이뿌니"

    println("a10 : " + a10)
    println("a11 : " + a11)
    println("a12 : " + a12)
    println("a13 : " + a13)
    println("a14 : " + a14)
    println("a15 : " + a15)
    println("a16 : " + a16)
    println("a17 : " + a17)
    println("a18 : " + a18)
}​

 

출력값

 

 

문자열 결함

// 문자열 결합
    // 문자열 + 문자열 : 문자열 들을 합친 새로운 문자열을 만진다.
    var a20 = "안녕하세요 " + "반갑습니다"
    println("a20 : " + a20)

    // 문자열 + 문자열이 아닌 것 : 문자열이 아닌 것이 문자열로 변환된 다음 문자열 합치기를 한다.
    var a21 = "나이는 : " + 24
    println("a21 : " + a21)​

 

출력값

 

문자열 결합시 연산자 대신 ${} 사용
// ${ } 를 사용하면 + 연산자를 사용할 필요가 없다.
    var a22 = "오늘 저녁 칼로리는: ${0}"
    println("a22 : ${a22}")

    // 만약 ${ } 안에 들어가는 것이 변수 하나라면 { }는 생략이 가능하다.
    var a23 = 20
    var a24 = "나이는 $a23"
    println("a24 : $a24")​

 

출력값

 

val 변수
▶변수의 값 변경할 수 없음
    //val 키워드를 사용하면 변수의 값을 변경할 수 없다.
    val a30 = 100
    println("a30 : $a30")​

-다른값을 a30에 대입하여도 변경안됨

출력값

 

Kotlin은 모든 기본 타입 값을 객체로 만들어 관리한다.

Kotlinnull을 허용하는 변수와 허용하지 않는 변수를 제공한다.