20240502 kotlin

Leafy·2024년 5월 2일
1

중앙_자바

목록 보기
73/76

ㅇㄹㅇㄹ

코틀린

타입 추론이 일어나서 변수 선언이 간단.
변수 2개

자바는 선언할 때 null 타입 선언이 가능했음.

String str = null;

근데 이러면 출력하려고 할 때 안됐다.
데이터가 안 찍히거나 프로그램이 강제 종료

그래서 코틀린은 아예 null을 허용 안함.
아예 null 선언을 못 하게 한 것.
(null은 없다)

자바보다 안전하다.

null을 완벽히 선언할 수 없나? 그건 아님.
대신

?

IntelliJ에서 GitHub Copilot 쓰기

변수 선언

세미콜론도 없다.

val a:Int = 7 // 타입을 뒤에 써줌
val b = 100 // 추론 타입
val c:Int  // int c; <- 메모리에 Int 타입 c를 그냥 넣은 거

println(a)
println(b)
println(c) // c는 출력 못함. 자바에서도 못함.

상수 선언 val

val은 상수 선언. 변경 못함.

val a:Int = 7 // 타입을 뒤에 써줌
val b = 100 // 추론 타입
val c:Int  // int c; <- 메모리에 Int 타입 c를 그냥 넣은 거
c = 100
b = 10 // 안됨

println(a)
println(b)
println(c) // c는 출력 못함. 자바에서도 못함.

변수 선언 var

var d:Int = 3

자료형

C++ 자료형...
u(unsigned?) u붙은 애들
0부터. 음수 부분은 없다.
(나머지는 자바랑 같음)

byte, ubyte
이런거 있다

코틀린의 타입(래퍼클래스 안씀)
https://nosorae.tistory.com/entry/Kotlin-%ED%9D%A5%EB%AF%B8%EB%8F%8B%EB%8A%94-%EC%BD%94%ED%8B%80%EB%A6%B0%EC%9D%98-%ED%83%80%EC%9E%85%EC%9D%84-%EC%A0%95%EB%A6%AC%ED%95%B4%EB%B3%B4%EC%9E%90

자바에서 long과 float 타입의 표식자가 있었다. (숫자F, 숫자L)

""" """ <- 자바스크립트처럼 이런거 있다.

var str:String = "가나다라마바사"
    str = """
       자동 줄바꿈
        줄바꿈
        이래.
    """

배열~

fun main() {
    //자료형
    //배열
    var arr = arrayOf("서울", "부산", "인천", "경기")

    println(arr.toList())
    println(arr.size)
    println(arr[0])
    println(arr[1])
    println(arr[2])
    println(arr[3])
    println(arr[arr.size - 1])

    println("-----------------------------")
    // for (반복자 in 집합) { 반복자 }
    for (lulu in arr) {
        println(lulu)
    }

    println("-----------------------------")
    var arrInt:IntArray = intArrayOf(10, 20, 30)
    arrInt.set(0, 100)
    println(arrInt.size)
    println(arrInt[0])

    var temp:Int = arrInt.get(arrInt.size - 1)
    println(temp)
    println("이제부터 for문")
    for(temp in arrInt) {
        println(temp)
    }
//    println("이 for문은?") -> 안된다고 한다
//    for(var i=0; i < arrInt.size; i++) {
//        println(i)
//
//    }

    println("여기는 forEach")
    arrInt.forEach { print(it) }
}

메서드..?

for문
for (반복자 in 0 .. i) <- 일케 쓰게 된다.

fun print1(i:Int) {
    for (i2:Int in 0 .. i)
    println("$i2 print1 함수 입니다.")
}

출력문 심화

println("$i2 print1 함수 입니다.") $로 출력 string에 변수 넣기 된다

fun print2(num1:Int, num2:Int) {
    println("$num1 + $num2 = ${num1 + num2}")
}

코틀린 삼항연산자 없음

객체지향

코틀린 키워드 정리

open 키워드를 붙여야 상속이 열림. 클래스와 메서드는 기본적으로 final

fun main() {
    // 객체 생성
    var human = Human()
    human.name = "쟝원영"
    human.age = 150

    var human2 = Human2("신류진", 29)
    
}
class Korean : Human { // Human이 open이 아니면 상속할 수 없음
    
}

class Human2(var name:String, var age:Int) {

}

open class Human {
    var name: String = ""
    var age: Int = 0
}

이렇게...

fun main() {
    // 객체 생성
    var human = Human()
    human.name = "쟝원영"
    human.age = 150

    var human2 = Human2(name = "신류진", age = 29)

    var korean2 = Korean2(name = "하니", age = 39)
    println(korean2.name)
    println(korean2.age)
}
class Korean : Human() {

}

class Korean2(name:String, age:Int) : Human2(name, age) {

}

open class Human2(var name:String, var age:Int) {

}

open class Human {
    var name: String = ""
    var age: Int = 0
}

pdf p89 꼭 읽기 (람다식?인듯) -> 읽어야 내일 할 Svelte에서 편할것

컬렉션

4개의 댓글

comment-user-thumbnail
2024년 5월 2일

오늘도 역시 일등이십니다 어쩜 이렇게 빠르게 정리를 해주시는지요... 저랑 뇌를 바꾸실 생각이 있으신가요?????❤️‍🔥

1개의 답글
comment-user-thumbnail
2024년 5월 3일

우왕 이거보고 공부해야겠다

1개의 답글