c++에 관해서는 조금 공부를 했었는데, Python이나 java등 다른 언어에 대해서는 정말 암것도 모른다 ㅋㅋㅋ
이번에 kotlin이라는 언어를 겁 없이 배워보고 싶어서 조금씩 공부하는 내용을 적어가려고 한다.
잘못된 부분이 있다거나, 추가적으로 알려주고 싶은 내용이 있다면 댓글 달아주시면 감사하겠습니다^_^
1. 변수
Kotlin에서는 변경이 가능한 변수, 변경이 불가능한 변수 2가지로 나뉘게 된다.
변경이 가능한 변수는 variable의 앞 자를 따서 var 키워드로 정의를 하고,
변경이 불가능한 변수는 value의 앞 3자를 따서 val 키워드로 정의를 한다.
var school = "학교" 이런식으로 정의하는 것이다,
school은 var이기 때문에 나중에
school="초등학교"
school="중학교" 이렇게 변화시키는게 가능한데 c++에서는 되지만 Kotlin에서 안되는 것이 하나 있더라.
선언과 할당을 동시에 해주어야 한다는 것인데
var school
school ="학교" 이렇게 처리하는게 안된다는거다. 무조건 같이 해주어야한다.
아마 Type을 체크하지 못해서 메모리 할당을 제대로 못하기 때문이지 않을까 싶다.
그리고 변수를 나타낼 때 일종의 규칙(convention)이 있는데
value의 경우는 대문자로 적고, 단어 단어 사이의 구분을 _ 로
variable 경우 소문자로 적되, 단어의 시작 한 음절만 대문자로 적는 암묵적인 룰이 있다고합니다 ㅋㅋㅋ
phone number를 variable 스타일로 적으면 PhoneNumber 가 되는 것이고, value Style로 적으면
PHONE_NUMBER 이렇게 적어주는 것이다.
// 1. var 변수 선언
var Change = 100
println(Change)
Change=300
println(Change)
// 2. val 변수 선언
val CHANGE_NO = 100
println(CHANGE_NO)
//CHANGE_NO=200 => val can't be reassigned
Change라는 변수에 100 값을 할당하고 출력한다, 100이 나올 것이다.
Change의 값을 300으로 바꾸고, <= 바꾸는데 문제 없다 Variable이기도 하고 Integer Type도 맞기 때문에
2번 째로 val CHANGE_NO에 100을 할당하고 출력해보면 100이 잘 나온다
다만 해당 변수의 값을 200으로 바꾸려고 시도한다면
val의 값을 reassigned 할 수 없다는 Error 메세지가 출력되게 된다.
2. 자료형
정수형 | Byte (1Byte) Short (2 Byte) Int (4 Byte) Long (8 Byte) |
실수형 | Float (4byte) Double (8byte) |
논리형 | boolean (True or False) |
문자형 | Char 하나의 문자열만 포함 |
문자열형 | 여러 글자 |
정수형 (Default = Int)
우선 Byte -> Long으로 갈 수록 표현할 수 있는 정수의 범위가 다르다.
Byte는 ( -128 ~ +127) , Short는 ( -32768 ~ + 32767) Int , Long 은 더 넓은 범위 표현이 가능하다.
여기서 1 Byte는 8 bit 로 8개의 0과 1의 숫자로 표현이 가능하다.
첫 숫자는 + -를 나타내는 부호일 것이고, 그래서 2^7 = 128 , 즉 -128부터 127까지 표현 가능한 것이다.
실수형(Default = Double)
소수점이 있는 수들을 나타낼 때 사용하는 자료형이다.
Float와 Double이 있으면 Type을 지정해주지 않았을 때는 Default로 Double이 선택된다.
논리형(Boolean)
그냥 c++에서 흔히 쓰는 true, false를 나타내는 bool이다. 별 내용이 없다
문자형(Character)
하나의 글자를 담을 수 있는 자료형이다. 문자형과 문자열형은 '' , ""로 구분을 하는데
똑같은 A 문자 하나를 'A'로 표현하면 Type은 문자형이고, "A"로 표현하면 Type은 문자열 형이다.
그리고 Char(문자형)은 하나의 글자만 되기 때문에 'AB' 이런식으로 처리하면 Error 발생한다.
문자열형(String)
여러 글자 혹은 한 글자도 표현 가능하다. 대신 "" 로 처리만 해주면 된다.
여기서 이제 우리가 Compiler한테 Type을 알려주는 형식은 다음과 같다.
[var / val] [변수명] : [자료형] = [값] ex ) var cash : Int = 100 var real : Boolean = true |
그리고 특이한 기능이 하나 더 있는데 바로 숫자 Count할 때이다.
val BigNumber : Int = 1142312321312323
// 이렇게 큰 숫자를 할당하고 싶은데, 도저히 얼만지 가늠이 안된다.
// 그래서 끊어 읽고 싶은 부분에 _ 처리를 해줘도 별 문제 없다.
val BigNumber : Int = 1_142_312_321_312_323
이렇게 해도 아무 문제 없어서 한국인들한테는 가독성이 많이 좋아진다 ㅋㅋㅋㅋ
// 변수를 자료형과 함께 서언하는 방법
// => val/var 변수명 : type = 값
// 타입은 생략할 수 있는데, 코틀린이 마음대로 정함. 아마도 INT로 할거임.
val byteInt: Byte = 10
val shortInt: Short = 10
val integerInt: Int = 10
val LongInt: Long = 10
//val wrongByte:Byte=10000
//the integer literal does not conform to the expected type Byte <== Error 발생
// Byte가 표현할 수 있는 범위보다 큰 수를 넣어버러셔 에러 발생.
//val wrongByte:Byte="안녕하세요?"
//error: type mismatch: inferred type is String but Byte was expected
val floatNumber: Float = 10.0f // float의 경우에는 할당하는 값 뒤에 f를 붙여줘야한다.
//안붙이면 아래 Error 발생
//error: the floating-point literal does not conform to the expected type Float
val DoubleNumber: Double = 10.0 // Double의 경우에는 할당하려는 값 뒤에 아무것도 붙이지 않아도 된다.
//val DoubleNumber1 : Double = 10 // 10과 10.0은 같지만 .을 찍어서 실수형이라는 것을 표현해야한다.
// 타입 추론
val number1 = 10 // 얘는 Int가 된다.
val number2 = 10.0 // 얘는 Default가 Double이 된다.
// 논리형
val yes: Boolean = true
val no: Boolean = false
// 문자형
val text1: Char = 'A'
//val text2:Char = 'AA' => error: too many characters in a character literal ''AA''
//val text3:Char = "A" //error: type mismatch: inferred type is String but Char was expected
// 묹자열형
val text4: String = "안녕하세요"
val text5: String = "안"
// 팁
// 타입을 선택할 때는 가장 작은 타입을 선택하는 것이 좋다.
// 실제로는 대부분 그냥 Int를 사용한다...
// 변수명
// val val : Int =10 -> 코틀린에서 선점해서 사용하고 있는 키워드는 변수명으로 사용할 수 없다.
읽어 주셔서 감사합니다 ~
'Programming > Kotlin' 카테고리의 다른 글
[Kotlin 뿌시기](5) 흐름제어 (0) | 2023.12.27 |
---|---|
[Kotlin 뿌시기](4) 메소드 (1) | 2023.12.27 |
[Kotlin 뿌시기](3) 연산자 (1) | 2023.12.26 |
[Kotlin 뿌시기](2) Null (0) | 2023.12.24 |