일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- centuryFromYear
- Python
- baekjun
- adjacentElementsProduct
- codesingal
- cpp
- codesignal
- C++
- markdown
- 파이썬 포렌식
- All Longest Strings
- shapeArea
- 10953
- matrixElementsSum
- data_structure
- 백준
- til
- 피보나치 수
- collections.deque
- Numpy
- 파이썬머신러닝완벽가이드
- Counting cells in a blob
- recursion
- flask
- Sequential Search
- 2015 봄학기 알고리즘
- 수 정렬하기
- almostIncreasingSequence
- Daily Commit
- 2750
- Today
- Total
Introfor
다양한 오브젝트 본문
문자열
- 문자열을 표현하는 타입 String은 immutable 속성 가짐
- String 리터럴(""로 둘러친 0개 문자 이상의 문자열)
- 인덱스로 참조 가능 -> 첫 글자 참조 경우, "Kotlin"[0]
String을 위한 편리한 메서드 및 프로퍼티
- length : 문자열의 크기를 반환하는 프로퍼티 -> str.length
- capitalize : 첫번째 문자만 대문자로 변환하는 메서드 -> str.capitalize()
- isBlank : 공백문자 또는 그런 문자로 구성된 문자열에 대해 true 반환 -> str.isBlank()
문자열 처리의 단순한 방법 : + 연산자 사용 -> "Hello, " + name + "!"
문자열 템플릿 처리 : $ 연산자 사용 -> "Hello. ${name}!"(★)
단, 문자열 리터럴과 식 경계 부분에서 추론이 가능하면 중괄호 생략 가능 -> "Hello, $name!"
1
2
3
4
5
6
7
8
9
10
|
fun main(){
val greeting = "hello"
var name: String = "I'm yong"
println(greeting[0])
println(greeting.length)
println(greeting.capitalize())
println(name.isBlank())
println("Hello, ${name}")
println("Hello, $name")
}
|
cs |
raw String의 처리를 위한 """ 사용 -> 내용을 그대로 표시
경우에 따라 문자열 선두 부분에서 | 기호를 이용한 구분 문자 사용
정보 문자열에서 구분 문자를 포함시키지 않게 하는 경우 ->trimMargin()
배열
- 배열은 클래스 Array에 의해 표현
- 배열의 요소에 대한 자료형 타입은 타입 인수로 지정
- 표준 라이브러리 arrayOfNulls 사용
1
2
3
4
5
6
7
|
fun main(){
val ints = arrayOfNulls<Int>(5)
println(ints.size)
println(ints[0])
ints[0] = 123
println(ints[0])
}
|
cs |
var string : String? = null에서 ?는 null 값일 수 있음을 나타내고, !!은 절대 null일 수 없다는 의미
배열을 생성하는 함수 : arrayOf
- 인수로 지정한 값을 여소로 바로 가질 수 있음
- 배열의 요소의 자료형 타입에서 바로 추론 가능할 때는 인수의 자료타입을 생략 가능
1
2
3
4
|
fun main(){
val strs = arrayOf("red", "green", "blue")
println(strs[1])
}
|
cs |
Java의 원시 자료형과 같은 형식에 특화된 배열의 사용 가능
배열의 경우 ${}로 사용(중괄호사용)
1
2
3
4
5
6
7
|
fun main(){
val ints: IntArray = intArrayOf(1, 2, 3)
val chars: CharArray = charArrayOf('a', 'b')
println(ints[1])
println("${chars[0]}, ${chars[1]}")
}
|
cs |
list, set, map의 경우 val로 선언되어도 자료형을 mutable(타입)으로 지정하면 값 변경 가능
리스트
collection : 여러 값을 가지는 컨테이너와 같은 오브젝트
list : 인터페이스 List로 표현되는 순서(★)가 있는 collection
함수 listOf()를 사용하여 오브젝트 생성
1
2
3
4
5
6
|
fun main(){
val ints : List<Int> = listOf<Int>(1, 2, 3)
println(ints)
println(ints.size)
println(ints[0])
}
|
cs |
- 참조 번호 인덱스를 이용하여 배열처럼 내용 참조 가능
★ 단, immutable 속성을 가지므로 ints[0] = 5와 같이 내용 변경은 불가 (컴파일 에러 발생)
- 요소의 값을 변경이 필요한 경우 -> MutableList 인터페이스 사용
함수 mutableListOf()를 사용하여 오브젝트 사용
- '+=. -=' 연산자를 이용하여 추가 삭제 가능.
- removeAt()은 특정 위치의 요소를 삭제
1
2
3
4
5
6
7
8
9
10
11
12
|
fun main(){
val chars: MutableList<Char> = mutableListOf('a', 'b')
println(chars)
chars[0] = 'c'
println(chars)
chars += 'x'
println(chars)
chars -= 'b'
println(chars)
chars.removeAt(0)
println(chars)
}
|
cs |
셋(set)
- 집합을 표현하는 컬렉션
- 순서를 보장하지 않고 중복 요소 제거
- immutable : setOf()
- mutable : mutableSetOf()</p
1
2
3
4
5
6
7
8
|
fun main(){
val ints: Set<Int> = setOf(1, 2, 1, 3)
val chars: MutableSet<Char> = mutableSetOf('a', 'b', 'c')
println(ints)
println(chars)
chars -= 'b'
println(chars)
}
|
cs |
맵
- map : (Key, Value) 형식으로 Key에 대응하는 Value 값을 하나의 쌍(pair)으로 표현하는 컬렉션
- immutable : mapOf()
- mutable : mutableMapOf()
- 인수로는 하나의 쌍을 표현하는 Pair 오브젝트를 전달할 필요 있음
pair
이 오브젝트를 얻기 위해서 to를 사용
구문 형식 -> "one" to 1 // "one"은 Key, 1은 Value
1
2
3
4
5
6
7
8
9
10
11
|
fun main(){
val numberMap : MutableMap<String, Int> = mutableMapOf("one" to 1, "two" to 2)
println(numberMap)
println(numberMap.size)
println(numberMap["one"])
println(numberMap["three"])
numberMap += "three" to 3
println(numberMap["three"])
numberMap -= "two"
println(numberMap)
}
|
cs |
Range(★)
- 범위를 표현하기 위한 오브젝트
- 1에서 10까지의 범위를 지정하는 1..10, 묵시적으로 1씩 증가 처리
- 오퍼레이터 in과의 협업으로 조작하는 것도 가능, 특정 같이 범위 내에 있는지 확인
1
2
3
4
5
6
|
fun main(){
val range: IntRange =12..15 // IntRange ★
println(5 in 1..10)
println(10 in range)
println(5 !in range)
}
|
cs |
- 메서드 .toList()와 병용하면 리스트 오브젝트로 변환 가능
(1..5).toList() -> [1, 2, 3, 4, 5]
- 5..1 -> 5, 4, 3, 2, 1
- (1..5).reversed().toList() -> [5, 4, 3, 2, 1]
- (5 downTo 1).toList() - > [5, 4, 3, 2, 1]
- (1..5 step 2).toList() -> [1, 3, 5]
- (100 downTo 0 step 25).toList() -> [100, 75, 50, 25, 0]
'Doing > Kotlin' 카테고리의 다른 글
기초문법 (0) | 2020.10.10 |
---|---|
null 안전성 문제 (0) | 2020.09.14 |
코틀린 기본 구조 (1) | 2020.09.13 |