Kotlin 입문_Chap02 [코드 제어 및 함수]

JJ Kim·2022년 11월 30일
0

코틀린

목록 보기
2/2

1. 제어문

👉 1) if문

  • if(if-else)문은 자바와 문법이 동일. 하지만 코틀린에서는 문장이 Expression으로 취급이 되어서 return if가 가능.(자바는 단순 Statement) 그렇기에 삼항연산자도 없음.

    1) Statement : 프로그램의 문장. Expression을 포함하나 하나의 값으로 도출이 되지 않는 문장을 주로 의미
    2) Expression : Statement에서 하나의 값으로 도출이 되는 문장. Kotlin에서 if-else문은 Expression이므로 바로 return이 가능하다.


예시
fun ab (n : Int) : String {
	return if (n >= 10) {
    	"a"
    }else{
    	"b"
	}
}
  • in과 ..을 이용하면 좀 더 편하게 기준 범위의 값인지 알 수 있다.
    예 : if(a in 1..50)

👉 2) when문

  • 코틀린에서는 자바의 switch문이 when으로 대체되었다. 더 강력한 기능을 갖는다고 한다.
    따로 break가 필요없고 if문 처럼 값을 바로 반환 받을 수 있다.

예시
when (val) {
	"a" -> println("a")
	"b" -> println("b")
	else -> println("null")
}


2. 반복문

👉 1) for each문

  • 콜론(:)대신 in 을 사용

👉 2) for문

  • 전통적인 for문은 자바와 다르게 in과 .., downTo, step 등을 사용해서 표기
  • downTo, step도 함수(중위 호출 함수). 띄어쓰기로 사용 가능
  • 그 외의 for문 문법은 모두 자바와 동일

예시
/* Java */
//올라가는 경우
for(int i=0; i<=3; i++){
	System.out.println(i);
}
//2칸 이상 씩 올라가는 경우
for(int i=0; i<=10; i+=2){
	System.out.println(i);
}
//내려가는 경우
for(int i=3; i>=1; i--){
	System.out.println(i);
}
/* Kotlin */
//올라가는 경우
for(i in 0..3){
	println(i)
}
//2칸 이상 씩 올라가는 경우
for(i in 1 step 3){
	println(i)
}
//내려가는 경우
for(i in 0..10 step 2){
	println(i)
}

👉 3) while문

  • do while문을 포함해서 자바와 동일



3. 예외처리

👉 1) try-catch문

  • try catch finally 구문은 자바와 동일
  • 차이점은 Expression으로 취급이 되어 return 가능

👉 2) Exception

  • 자바와 달리 Checked Exception이 없고 모두 Unchecked Exception이어서 throws로 처리를 해주지 않아도 된다.

👉 3) try with resources

  • try에 자원 객체를 전달해주면 try구문이 끝났을 때 자동으로 닫아주는 JDK 7부터 지원되는 자바의 성질
  • 코틀린에서는 이러한 try with resources 구문이 없고(코틀린 언어적 특징을 활용해 close를 호출) use라는 인라인 확장함수를 사용해야한다.



4. 함수

👉 1) 함수 선언

  • 접근지시어 public은 생략 가능
  • fun키워드, 함수이름, 매개변수, 반환타입(Unit 생략 가능)으로 구성
  • 하나의 반환하는 값을 가진 함수면 중괄호 대신 =을 써도 된다.

예시
fun ab(a: Int, b: Int) =
	if(a>b) {
    a
  }
    else {
    b
  }
  
//한줄 처리
fun ab(a: Int, b: Int) = if(a>b) a else b

🌟 2) Default Parameter 🌟

  • 함수 파라미터에 기본값을 설정해줄 수 있음
  • 밖에서 파라미터를 넣어주지 않으면 기본값을 사용

🌟 3) Named Argument 🌟

  • 사용할 때 이름을 통해 값을 직접 지정해서 넣는게 가능하다.
  • 지정하지 않은 매개변수는 기본값을 사용하게 됨

👉 4) 가변 인자

  • 가변인자에는 vararg 키워드 사용
  • 가변인자 함수를 배열로 호출할 때는 *를 붙여주어야 함.

예시
/* Default Parameter, Named Argument */
//선언
fun abc(
  a: Boolean, 
  b: Int = 3,
  c: String = "c"
){
  if(a){
  	println(b)
  } else{
  	println(c)
  }
}
//사용 (b: default c: named argument)
abc(true, c="hello") // 3 출력
abc(false, c="bye") // bye 출력


/* 가변 인자 */
fun allPrint(vararg strs : String) {
	for(s in strs){
    	println(s)
    }
}

val arr = arrayOf("a","b","c")
allPrint(*arr)
profile
소확행을 찾는 개발자

0개의 댓글