1. 컬렉션을 다루는 방법이 편리하고 간단하다.
List 는 mutableListOf로 담아버리고
- listOf로 담은 것을 addAll로 그냥 바로 추가 해버린다.
- joinToString으로 , 같은 구분자 넣기도 편리하고
- list에다가 map을 써서 내부 함수처리도 가능하다.
- lsit에서 노가다로 for문 돌려서 해당 값 찾는 것을 그냥
- list.first(id :"10") 하면 해당 값(이경우 10) 을 찾을 수 있어 간단하다.
- map으로 값을 넣을 때도 mapOf, mutableMapOf 로 넣는다.
map[1]= "hi", map[2]="yo" 이런것을 mapOf( (1 to "hi") , 2 to "yo") 방식으로 입력이 된다.
// 컬렉션 (list, map ,set)
fun main(){
var list = mutableListOf(1,2,3,4,5)
list.add(6)
list.addAll(listOf(7,8,9))
// listOf 는 add가 불가능
var list1 = listOf(1,2,3,4,)
println(list)
println(list.joinToString(",") )
// list1.get(0) 보다 그냥 list1[0] 으로 가져옴
list1[0]
// map 의 수에다가 10을 곱해 준다
println(list1.map { it * 10 }.joinToString("/"))
// id 가 10인것을 찾아줘
//list1.first{ id :"10"}
val diverselist = listOf(1,"안녕", 2,"")
val map = mapOf((1 to "안녕"), 2 to "hello")
val map1 = mutableMapOf((1 to "안녕"), 2 to "hello")
map1[3] = "응"
map1[100] = "하이"
}
2. null 타입에 안전하다.
변수 뒤에 : String 이런식으로 타입쓰고 ?를 넣으야만 null 이 입력되게 처리하고
그 뒤에 null 인 경우 건너뛰어 버린다.( nickname?.length ) 에서 에러 안남
// name =null
// null 을 넣을수는 없고 타입뒤에 ?를 넣어야 null 이 들어간다
var nickname : String? = null
// 위와 같은 식으로 쓰지 않고 아래와 같이 변수뒤에 ?: 를 붙여서 null일 경우 처리
var result = nickname?: "값이 없음"
// 변수 뒤에 ?를 붙여 null 이면 length 를 처리 안한다
// 변수에 safe하지 않으면 ?를 한다.
val size = nickname?.length
println(result)
3. 타입체크와 케스팅
모든 타입에 허용되는 Any 라는 타입지정을 하고 return 타입을 String으로 하여 체크 가능하다.
- fun check( a:Any) : String { if( a is String) {}else {} }
- dec() 하면 숫자하나 내려간다
(하기 참고 하면 타입체크, 타입캐스트, 스마트한 타입캐스트)
// 타입 체크와 캐스팅
fun main(){
// 타입체크
println(check("안녕"))
println(check(3))
println(check(true))
// 캐스팅
println(cast("안녕"))
println(cast(3))
println(cast(true))
// 스마트 캐스팅
println(smartcast("안녕"))
println(smartcast(3))
println(smartcast(true))
}
// 타입체크
fun check(a: Any) : String{
return if(a is String){
"문자열"
} else if(a is Int){
"숫자"
}else{
"몰라요"
}
}
// 캐스팅
fun cast(a: Any){
if(a is String){
(a as String).length
}
val result = (a as? String) ?: "실패"
println(result)
}
fun smartcast(a:Any) : Int{
return if(a is String){
a.length
}else if(a is Int){
a.dec()
}else{
-1
}
}
4. " " 문장 안에서 ${}를 쓸수 있다. ( jsp 에서 ` ` 방식과 같다.)
// string template
fun main(){
val a =10
val name = "안녕"
val isHigh = true
println("$a ${name.length} $isHigh")
}
LIST
'4차산업혁명의 일꾼 > Java&Spring웹개발과 서버 컴퓨터' 카테고리의 다른 글
클린코드 - 애자일소프트 장인정신 1 - 5가지 정신 (0) | 2023.02.19 |
---|---|
내 인생 처음이자 마지막 자바 & 객체지향 프로그래밍 정리 (0) | 2023.02.18 |
자바와 코틀린 차이및 코틀린 특징 1(타입지정, 함수호출, 변수타입, 상속, 조건문, 반복문) (2) | 2023.02.05 |
[프로그래밍 언어론] 주요 용어 (0) | 2023.01.05 |
자료구조 (0) | 2023.01.05 |