본문 바로가기
수업내용

20230726 Kotlin

by titlejjk 2023. 7. 26.

Kotlin도 Class가 존재하고 Kotlin은 컴파일을 통해 JavaScript 또는 Java로 컴파일이 가능하다.\

 

java에서는 public static void main(String[] args){

 

}

는 fun main으로 사용되고

 

println은

System.out.println("Hello, World!");와 비슷하다

 

타겟이 1.7로 되어있는 부분을 build.gradle에서 해당하는 모듈을 찾아서 수정해준다.

VERSION_1_7을 17로 바꿔준다. 여기서 언더바( _ )는 ( . )과 비슷하다.

이렇게 수정하고 Run을 해보면

 

Console창에 Hello, World!가 출력된다!

새로운 파일을 하나더 만들어보겠다.

Class와 File생성의 차이는 처음에 메서드가 정의되어있느냐 안되어있느냐의 차이이다.

 

Kotlin기본 Data type은

Byte, Short, Int, Long

Float, Double

Boolean, Char, String

이렇게 존재한다.

 

###Int는 Integer가 아닌 대문자 I 를 섞은 Int를 사용한다###

 

Kotlin은 모두 import없이 바로 사용할 수 있는 참조 Data type이다.

 

예를 들어서 정수를 담을 수 있는 num이라는 이름의 변수를 만들어서 정수 10을 대입해 보겠다.

//Java의 경우
int num = 10;

//JavaScript의 경우
let num = 10;

//그럼 Kotlin은?

기본적으로 Java에서는 type identifier = value;라는 공식으로 변수를 만들었는데

 

Kotlin은

 

var(변수) or val(상수) identifier : type = value;

 

라는 공식으로 var(변수),val(상수)를 선언한다.

 

상수를 변경해서 Run을 해보면 아래와 같은 오류가 발생된다.

 

 

정리하자면 

변수(var)는 초기값이 할당된 후에도 값을 바꿀 수 있는 변수를 말한다.

var[변수명]:[데이터 타입]=[값]의 형태

 

상수(val)는 초기값이 할당되면 바꿀 수 없는 변수를 말한다.

val[변수명]:[데이터 타입]=[값]의 형태

를 띈다.

값에 따라 데이터 타입을 유추가능 할때 데이터 타입은 생략이 가능하다.

 

//type이 예상이 가능한 경우 type 생략이 가능하다.
    var num3 = 30
    var ourName="엄멈매"

 

그리고 변수를 미리 선언하고 값을 나중에 넣을 수 있다.

 

하지만 변수를 미리 선언할 때 데이터 타입을 무조건 명시해 주어야 한다.

 

//변수를 미리 선언하고
    var num5:Int
    //값을 나중에 넣을 수 있다.
    num5 = 50
    
    //선언이 안됨
    var num6
    num6 = 60

이는 val도 마찬가지 이다.

 

//상수(val)도 미리 만들어 놓고 값을 나중에 대입할 수 있다.
    val PI:Float
    PI=3.14159f

 

새로운 File을 만들어 보겠다 File명은 Step01_Basic2.kt

 

String type의 편리한 기능 활용을 해보겠다.

fun main(){
    val myName="김구라"
    val yourName="해골"
    val result="내 이름 : "+myName
    val result2="너의 이름 : "+yourName
}

 

Kotlin도 Java처럼 연결 연산자를 사용해 문자열을 조합 할 수있다.

그리고 $변수명을 통해 문자열을 연결할 수 있다.

 

//$변수명을 통해 문자열을 연결
    val result3 = "니 이름:$yourName"
    //${ } javascript backtick에서 활용했던 표현식도 가능하다.
    val result4 = "우리의 이름:${myName+yourName}"
    val num1 = 10
    val num2 = 20
    val result5="num1+num2=${num1+num2}"

 

위에 코드는 javascript backtick에서 활용한 표현식도 가능한 예제이다.

 

또 여러줄의 문자열을 편리하게 작성할 수 있도록 도와준다.

 //여러줄의 문자열을 편리하게 작성할 수 있다.
    val html="""
        <div>
            <p>p요소입니다</p>  
        </div>
    """

.trimIndent()

위에 캡쳐본에서 사용한 .trimIndent()는 쓸데없는 들여쓰기를 지워주는 역할을 해준다.

 

 

다음 새로운 File을 만들어서 Kotlin에서의 배열고 반복문에 대해 배워보겠다.

 

Kotlin에서 배열을 생성할 때에는 listOf()메서드를 사용해서 만든다.

 

fun main(){
    
    //수정 불가능한 목록(list)
    val names = listOf("kim","lee","park")
    val animals = listOf<String>("dog","cat","elephant")
    val nums= listOf<Int>(10,20,30)
}

위에 코드를 알다시피 < >안에있는 generic Type도 추론을 통해 생략이 가능하다.

 

 

반복문👉👉👉👉

package com.example.hellokotlin
/*
    Kotlin에서의 배열과 반복문
 */

fun main(){

    //수정 불가능한 목록(list)
    val names = listOf("kim","lee","park")
    val animals = listOf<String>("dog","cat","elephant")
    val nums= listOf<Int>(10,20,30)

    println(names[0])
    println(names[1])
    println(names[2])

    //indices는 index의 복수형 (names배열의 index로 이루어진 배열)
    val result = names.indices


    for(i in names.indices ){
        println(i)
    }
    println("---------------")
    for(i in names.indices){
        println(names[i])
    }
    println("-------------")
    for(i in names.indices){
        println("${i}:${names[i]}")
    }
    println("-------------")
    for(item in names){
        println(item)
    }
}

마지막 캡쳐본은 forEach를 활용한 반복문이다. Java랑 달리 특이하게 it:String에 대해 주목해 보면 될 것 같다.

 

위에 반복문을 살펴보자면 

val names:의 데이터타입은 아래와 같다.

이 때 generic Type을 작성할 때 >=를 붙여서 사용하면 비교연산자로 인식 하기 때문에 반드시 띄어쓰기를 사용해 준다.

 

위에 캡쳐본을 자세히 보면 listOf( )안에 있는 데이터 타입이 추론 가능하기 때문에 이역시도 listOf의 Generic도 생략이 가능한 것을 알수가 있다.

'수업내용' 카테고리의 다른 글

20230727 Kotlin Function  (0) 2023.07.27
20230726 Android Fragment  (0) 2023.07.26
20230725 Android 다른화면으로 넘어가기  (0) 2023.07.25
20230725 Android  (0) 2023.07.25
20230724 Android HttpRequest2  (0) 2023.07.24

댓글