2024-06-21
This commit is contained in:
255
Writerside/topics/Type.md
Normal file
255
Writerside/topics/Type.md
Normal file
@@ -0,0 +1,255 @@
|
||||
# 자료형
|
||||
|
||||
> 자바와 달리 원시 자료형이 없으면 모든 자료형이 객체입니다.
|
||||
|
||||
## 숫자형
|
||||
|
||||
### 정수형
|
||||
|
||||
- Byte
|
||||
|
||||
- Short
|
||||
|
||||
- Int
|
||||
|
||||
- Long
|
||||
|
||||
|
||||
### 부동 소수형
|
||||
|
||||
- FLoat
|
||||
|
||||
- Double
|
||||
|
||||
|
||||
### 형 변환
|
||||
|
||||
- toByte()
|
||||
|
||||
- toShort()
|
||||
|
||||
- toInt()
|
||||
|
||||
- toLong
|
||||
|
||||
- toFloat()
|
||||
|
||||
- toDouble()
|
||||
|
||||
|
||||
### 연산자
|
||||
|
||||
#### 산술 연산자
|
||||
|
||||
- +, -, *, /, %
|
||||
|
||||
#### 비트 연산자
|
||||
|
||||
- shl
|
||||
|
||||
- shr
|
||||
|
||||
- ushr
|
||||
|
||||
- and
|
||||
|
||||
- or
|
||||
|
||||
- xor
|
||||
|
||||
- inv
|
||||
|
||||
|
||||
#### 비교 연산자
|
||||
|
||||
- ==, !=
|
||||
|
||||
- <, >, <=, >=
|
||||
|
||||
|
||||
## 부호없는 정수형
|
||||
|
||||
- UByte
|
||||
|
||||
- UShort
|
||||
|
||||
- UInt
|
||||
|
||||
- ULong
|
||||
|
||||
|
||||
```kotlin
|
||||
val a: UShort = 1u
|
||||
val b = 1UL
|
||||
```
|
||||
|
||||
## 부울형
|
||||
|
||||
- Boolean
|
||||
|
||||
#### 연산자
|
||||
|
||||
- ||
|
||||
|
||||
- &&
|
||||
|
||||
- !
|
||||
|
||||
|
||||
## 문자형
|
||||
|
||||
- Char
|
||||
|
||||
```kotlin
|
||||
val a: Char = '\t'
|
||||
```
|
||||
|
||||
## 문자열형
|
||||
|
||||
- String
|
||||
|
||||
```kotlin
|
||||
val s = "abcd"
|
||||
```
|
||||
|
||||
문자열을 구성하는 각 문자는 배열 형태의 첨자(`str[i]')를 통해서 접근할 수 있으며, `for`를 사용해서 반복할 수도 있습니다.
|
||||
|
||||
```kotlin
|
||||
for (ch in str) {
|
||||
println(ch)
|
||||
}
|
||||
```
|
||||
|
||||
### Raw String
|
||||
|
||||
```kotlin
|
||||
val text = """
|
||||
Hello, "World"!
|
||||
This is a raw string.
|
||||
"""
|
||||
```
|
||||
|
||||
각 줄 앞의 공백을 제거하려면, `trimMargin()`을 사용합니다.
|
||||
|
||||
```kotlin
|
||||
val text = """
|
||||
|Hello, "World"!
|
||||
|This is a raw string.
|
||||
""".trimMargin()
|
||||
```
|
||||
|
||||
줄의 시작을 나타내는 기본값인 '|' 대신 다른 문자를 사용하려면, `trimMargin(">")` 같은 형식으로 사용할 수 있습니다.
|
||||
|
||||
### 템플릿
|
||||
|
||||
문자열 템플릿에 변수를 삽입하려는 경우에는 `$`를 사용합니다. 경우에 따라서 `{}`를 사용해서 표현식을 묶어 줄 수 있습니다.
|
||||
|
||||
```kotlin
|
||||
var a = 1
|
||||
val str1 = "a is $a"
|
||||
|
||||
a = 2
|
||||
val str2 = "${str1.replace("is", "was")}, but now is $a"`
|
||||
```
|
||||
|
||||
문자열 템플릿은 Raw String에도 사용할 수 있습니다. Raw String에서 '$' 문자를 표시하려는 경우에는 다음과 같이 사용합니다.
|
||||
|
||||
```kotlin
|
||||
val text = """
|
||||
The price is ${'$'}9.99
|
||||
""".trimMargin()
|
||||
```
|
||||
|
||||
## 배열
|
||||
|
||||
> 코틀린에서 배열은 `Array<T>`로 표현합니다.
|
||||
|
||||
기본적으로 `get()`, `set()` 함수가 있으며 연산자 오버로딩이 되어 첨자 표현(`[]`)을 사용할 수 있습니다.
|
||||
|
||||
### 배열의 생성
|
||||
|
||||
```kotlin
|
||||
val array1 = arrayOf(1, 2, 3, 4) // [1,2,3,4]
|
||||
val array2 = arrayOfNulls(4) // [null,null,null,null]
|
||||
```
|
||||
|
||||
```kotlin
|
||||
val array = Array(5) {i -> (i*i).toString()}
|
||||
```
|
||||
|
||||
### 원시타입 배열
|
||||
|
||||
- ByteArray
|
||||
|
||||
- ShortArray
|
||||
|
||||
- IntArray
|
||||
|
||||
|
||||
```kotlin
|
||||
val array1: IntArray = intArrayOf(1,2,3)
|
||||
val array2 = IntArray(5) // [0,0,0,0,0]
|
||||
val array3 = IntArray(5) {43} // [43,43,43,43,43]
|
||||
```
|
||||
|
||||
## Any
|
||||
|
||||
코틀린에서 모든 클래스의 부모 클래스는 `Any`입니다. 자바에서의 최상위 객체가 `Object`인 것과 마찬가지입니다. `Any`는 다음 메서드를 갖고 있습니다.
|
||||
|
||||
- equals()
|
||||
|
||||
- hashCode()
|
||||
|
||||
- toString()
|
||||
|
||||
|
||||
## 타입 판별 연산자
|
||||
|
||||
- `is`, `!is`
|
||||
|
||||
```kotlin
|
||||
if (obj is String) {}
|
||||
```
|
||||
|
||||
### 자동 형변환
|
||||
|
||||
자료형이 판별된 이후에는 자동으로 형변환이 이루어집니다.
|
||||
|
||||
```kotlin
|
||||
if (x is String && x.length > 0){
|
||||
print(x.length)
|
||||
}
|
||||
```
|
||||
|
||||
## 형변환 연산자
|
||||
|
||||
- `as`
|
||||
|
||||
- `as?`
|
||||
|
||||
|
||||
```kotlin
|
||||
val x: Stirng = y as String // x, y 모두 nullable이 나닌 경우
|
||||
val x: String? = y as String? // x, y 모두 nullable인 경
|
||||
```
|
||||
|
||||
`as?`를 사용하면 형변환이 실패한 경우에 null을 반환합니다.
|
||||
|
||||
```kotlin
|
||||
val x: String? = y as? String
|
||||
```
|
||||
|
||||
## Type alias
|
||||
|
||||
타입 얼라이어스를 사용하면 자료형의 이름을 다른 이름으로 대신 사용할 수 있습니다.
|
||||
|
||||
```kotlin
|
||||
typealias NodeSet = Set<Network.Node>
|
||||
```
|
||||
|
||||
```kotlin
|
||||
class A {
|
||||
inner class Inner
|
||||
}
|
||||
typealias AInner = A.Inner
|
||||
```
|
||||
Reference in New Issue
Block a user