하위패키지에 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 |
댓글