본문 바로가기
수업내용

20230801 Kotlin

by titlejjk 2023. 8. 1.

하위패키지에 Sender라는 Class를 만들어 send라는 메서드를 만들어주고 Step08_UseJava.kt에서

send메서드를 호출하여 사용해 보았다.

Kotlin 파일에서 Java를 사용할 수 있는 것을 배울 수 있었다.

 

//키보드로 부터 입력 받을 수 있는 객체 생성
    val scan = Scanner(System.`in`)

Kotlin에서는 Scanner Class를 사용할 때 (System.`in`)을 사용해야 한다.

in을 문자열로 인식하기 때문에 백틱으로 in을 감싸서 사용해주면된다.

 //키보드로 부터 입력 받을 수 있는 객체 생성
    val scan = Scanner(System.`in`)
    print("입력:")
    val msg=scan.nextLine()
    println("입력 받은 내용 : $msg")

 

 

이번에는 자바 패키지에 MemberDto Class를 만들고  Kotlin에서 MemberDto 객체를 생성해보겠다.

package com.example.hellokotlin.java;

public class MemberDto {

    private int num;
    private String name;
    private String addr;

    public MemberDto(){}

    public MemberDto(int num, String name, String addr) {
        this.num = num;
        this.name = name;
        this.addr = addr;
    }

    public int getNum() {
        return num;
    }

    public void setNum(int num) {
        this.num = num;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAddr() {
        return addr;
    }

    public void setAddr(String addr) {
        this.addr = addr;
    }
}

 

기본생성자와 getter, setter도 만들어주었다.

 

이상하게 Kotlin 에서는 getter, setter가 보이지 않는다. 객체를 생성해서 정리해 보겠다.

//MemberDto 객체를 생성해서
    val mem1 = MemberDto()
    mem1.num=1
    mem1.name="뉴진스"
    mem1.addr="서울"
    //getter 메서드 호출
    val a = mem1.num
    val b = mem1.name
    val c = mem1.addr

쉽게 얘기해보면 

.getText.toString()

이 아닌

.text.toStirng()

이런 식으로 get을 사용하지 않는다.

 

입출력 관련된 부분은 java의 util을 가져다 사용하고 있다.

 

getter setter관련해서 더 알아보겠다.

package com.example.hellokotlin

class StarBucks {

    //null이 가능한 String type필드
    var location:String? = null
        set(value) {
            field=value + " 지점"
        }
}

fun main(){
    val s1=StarBucks()
    s1.location="갱냄"
    println(s1.location)
}

//null이 가능한 String type필드
    var location:String? = null
        set(value) { //필드에 값을 넣어줄 때 실행되는 블럭
            //field는 location을 가리키고 value는 넣을 값을 가리킨다.
            field=value + " 지점"
        }
        get(){
            if(field==null){
                return "지점명 없음"
            }else{
                return field
            }
        }

 

 

반복문(Loop)

package com.example.hellokotlin

fun main(){
    // 수정 불가능한 String 목록 (ReadOnly)
    val names= listOf<String>("김구라","해골","원숭이","주뎅이","덩어리")
    //모든 아이템을 순서대로 참조
    for(item in names){
        println(item)
    }
    //index 가 필요하다면
    for(index in names.indices){ // names 목록의 방번호로만 이루어진 목록
        println("$index 번째 인덱스 : ${names[index]}")
    }
    //1 부터 10 까지 출력
    for(num in 1..10){
        println(num)
    }
    println("-----")
    //1 부터 10 까지 홀수만 출력
    for(num in 1..10 step 2){
        println(num)
    }
    println("-----")
    //10 부터 1까지 출력
    for(num in 10 downTo 1){
        println(num)
    }
    println("-----")
    //names 배열의 아이템을 역순으로 참조
    for(index in names.size-1 downTo 0){
        println("$index 번째 인덱스 : ${names[index]}")
    }
}

 

If

import java.util.Scanner

fun main(){
    //Scanner 객체를 생성해서
    val scan = Scanner(System.`in`)
    //숫자를 하나 입력 받는다
    print("숫자입력:")
    val inputNum=scan.nextInt()

    var result:String
    //입력한 숫자가 홀수인지 짝수인지 판별 해서 결과를 변수에 담는다.
    if(inputNum%2 == 1){
        result = "$inputNum 은 홀수 입니다"
    }else{
        result = "$inputNum 은 짝수 입니다."
    }

    val result2 = if(inputNum%2 == 1){
        "$inputNum 은 홀수 입니다"
    }else{
        "$inputNum 은 짝수 입니다"
    }
    //좀더 간략히 표현하면
    val result3 = if(inputNum%2 == 1) "$inputNum 은 홀수 입니다" else "$inputNum 은 짝수 입니다."
    println(result)
}

 

 

When

package com.example.hellokotlin

import java.util.Scanner

fun main(){
    val scan = Scanner(System.`in`)
    println("Gun: 1, Sword: 2")
    print("무기를 선택하세요(1 or 2): ")
    val weapon = scan.nextInt()
    when(weapon){
        1 -> println("총")
        2 -> println("칼")
        else -> println("주먹")
    }

    //when 구문도 리턴값을 가질 수 있다.
    val selectedWeapon = when(weapon){
        1 -> "총"
        2 -> "칼"
        else -> "주먹"
    }
}

when 구문에서 else는 꼭 들어가주어야한다.

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

20230807 Kotlin Constructor  (0) 2023.08.07
20230803 Kotlin  (0) 2023.08.03
20230731 Kotlin  (0) 2023.08.01
20230731 Kotlin  (0) 2023.07.31
20230728 Kotlin  (0) 2023.07.28

댓글