코틀린 - 상수 val과 const val의 차이
val myName = "코틀린"
var age: Int
age = 31
myName = "자바"
위 코드를 실행하면 에러가 발생한다
이유는 첫번째 줄 코드인 val myName = "코틀린"을 val가 상수임으로 값을 변경할 수 없는데,
마지막 myName = "자바"라고 재할당을 시켰다.
Val cannot be reassigned
그랬더니 아주 아주 친절하게 Val은 재할당 할 수 없다고 알려준다.
그리고 초보자에게 어려운 상황이 있는데.... 그건 바로~
val 그리고 const
코틀린에서 Val과 Const는 둘 다 상수이다.
나도 궁금해서 찾아봤다. 무슨 차이가 있는 것인지
val은 런타임시 할당이 되는 상수라고 하며, 읽기 전용 상수라고도 불리고 불완전한 상수라고도 한다.
런타임시에 결정되는 상수로 프로그램 작동시에 값이 변경이 될 수 있다고 한다.
const val은 컴파일시에 할당이 되는 상수로 클래스나 함수 내의 지역변수에 선언할 수 없다.
오로지 String이나 기본 자료형에만 선언할 수 있으며, 상수명을 짓을 땐 카멜케이스가 아닌 스네이크 케이스를 적용하고 모두 대문자로 지어야한다.
한번 더 짚고 넘어가보자.
기본형 자료이 무엇이 있었나??
| 구분 | 타입 |
| 숫자형 | byte |
| short | |
| int | |
| long | |
| 실수형 | float |
| double | |
| 문자형 | char |
| 부울형 | boolean |
위 기본형 자료가 아닌 것은 전부 참조형 자료라고 부른다.
대표적으로 String이 참조형 자료이다.
이젠 마지막 궁금증이 있을 것 같다. 카멜케이스와 스네이크 케이스!
카멜케이스는 myName, kotlinAppProgramming 등 첫문자는 소문자 새로운 단어가 연결되는 문자는 대문자로 표시하는 방법이다. 중간 단어의 첫문자를 대문자로 표기하면서 낙타 등의 모양과 비슷하다고 해서 카멜케이스라고 부른다.
스네이크 케이스는 my_name, kotlin_app_programming 등 단어 사이에 언더바(_)를 넣어서 표시하는 방법입니다.
근무하고 있는 회사에 맞는 코딩 컨벤션를 따르면 될 것 같습니다.