class Box<T>(t: T) { // 제네릭을 사용해 형식 매개변수를 받아 name에 저장
var name = t
}
fun main() {
val box1: Box<Int> = Box<Int<(1)
val box2: Box<String> = Box<String>("Hello")
println(box1.name) // 1
println(box2.name) // Hello
}
class Box<T>(val size: Int)
fun main(args: Array<String>) {
val anys: Box<Any> = Box<Int>(10) // 자료형 불일치 오류!
val nothings: Box<Nothing> = Box<Int>(20) // 자료형 불일치 오류!
}
class Box<out T>(val size: Int)
fun main(args: Array<String>) {
val anys: Box<Any> = Box<Int>(10) // 관계성립으로 객체 생성 가능 Any > Int
val nothings: Box<Nothing> = Box<Int>(20) // 오류 자료형 불일치 Int > Noting
}
class Box<T>(val size: Int)
fun main(args: Array<String>) {
val anys: Box<Any> = Box<Int>(10) // 자료형 불일치 오류! Any > Int
val nothings: Box<Nothing> = Box<Int>(20) // 관계 성립으로 객체 생성 가능 Int > Noting
}
val numbers = arrayOf(4,5,7,3) // 정수형으로 초기화된 배열
val arr2d = arrayOf(arrayOf(1,2,3),arrayOf(4,5,6)) // 다차원 배열
val mixArr = arrayOf(4,5,7,3,"Chike", false) // 다양한 자료형 혼합 배열
val arr1 = arrayOf<Int>(1,2,3) // Int 자료형으로 제한
val arr2 = intArrayOf(1,2,3) // 위와 똑같음 자료형이름+ArrayOf()로 자료형 제한
arr1.get(2) // arr1에 2번 요소 3을 나타냄
arr1[2] // 이런식으로 사용 가능
arr1.set(2,7) // arr1 2번 요소를 값 7로 교체
println(Arrays.toString(arr1) // toString()을 사용하여 배열 내용 출력
println(Arrays.deepToString(arr2d)) // 다차원 배열은 이렇게 [[1,2,3],[4,5,6]]
val arr3 = Arrays(5, {i -> i*2 }) // 람다식으로 정의 가능
var a = arrayOfNulls <Int>(1000) // 1000개의 null로 채워진 정수 배열
var a = Array(1000,{0}) // 0으로 채워진 배열
var a = ARray(1000, {i -> myClass(i)} // 특정 클래스 객체로 배열 생성
val arr2 = arr.plus(6) // 하나의 요소를 추가한 새 배열 생성
val arr3 = arr.sliceArray(0..2) //필요한 범위를 잘라내 새 배열 생성
arr.first() // 첫번째 요소
arr.last() // 마지막 요소
arr.indexOf(3) // 요소 3의 인덱스 출력
arr.average() // 배열의 평균 값 출력
arr.count() // 배열의 요소 개수 출력
arr.contains(4) // arr에 4가 포함되어있으면 true 아니면 false
4 in arr // 위와 기능 같음
arr.forEach { element -> print("$element ") { // forEach에 의한 요소 순환
arr.forEachIndexed({i, e -> println("arr[$i] = $e")}) /// forEachIndexed에 의한 요소 순환
// Iterator의 이용
val iter: Iterator<Int> = arr.iterator()
while(iter.hasNext()) {
val e = iter.next()
print("$e ")
}
val sortedNums = arr.sortedArray() // 오름차순으로 정렬된 배열을 반환
val sortedNums = arr.sortedArrayDescending() // 내림차순으로 정렬된 배열을 반환
arr.sort(1,3) // sort(FromIndex, toIndex + 1) 요소 1 ~ 2만 정렬
arr.sortDescending() // 내림차순 정렬
val listSorted: List<Int> = arr.sorted() // List 으로 반환
val listDesc: List<Int> = arr.sortedDescending()
val items = arrayOf<String>("Dog", "Cat", "Lion", "Kangaroo", "Po")
items.sortBy { item -> item.length } // sortBy를 이용한 특정 표현식에 따른 정렬
val arr = arrayOf(1, -2, 3, 4, -5, 0)
arr.filter { e -> e > 0 }.forEach { e -> print("$e ")}
products.minBy { it.price } // 작은 값 골라내기
products.maxBy { it.price } // 큰 값 골라내기
val numbers = arrayOf(1,2,3)
val stars = arrayOf("one", "two", "three")
val simpleArray = arrayOf(numbers, strs)
val flattenSimpleArray = simpleARray.flatten() // 단일 배열로 반환하기
// [1, 2, 3, "one", "two", "three"]로 출력
val hello: String = "Hello World!"
println(hello[0]) // H
hello[0' = 'K' // 오류!
var s = "abcdef"
s = "xyz" // 새로운 메모리 공간이 생성된다. 기존 문자열은 GC에 의해 제거됨
var s = StringBuilder("Hello")
s[2] = 'x'
s.append("World") // 문자열이 추가되어 HexloWorld
s.insert(10,"Added") // 인덱스 10부터 추가되어 HexloWorldAdded
s.delete(5,10) // 인덱스 5에서부터 10 전까지 삭제되어 HexloAdded
부스트코스 코틀린강좌를 참고하였습니다.