코틀린(Kotlin)/TIL

[Kotlin 문법] 기초 - 단축키 및 기초지식

초보왕보초 2023. 11. 27. 20:20
728x90
  • 유용한 단축키
  • 자료형
  • 변수와 상수
  • 연산자의 종류
  • 조건식
  • 반복문
  • 실습

 

 

초보자를 위한 유용한 단축키(Window기준)

// 라인 드래그
Shift + 방향키<상, 하, 좌, 우>

// 라인 지우기
Ctrl + Y

// 주석 처리
Ctrl + /

// 자동 포커싱 - 소스코드 작성 중, 다른 작업 때문에 작업하던 라인을 찾기 힘들 때
ESC

// 프로젝트 내부에서 사용중인 모든 단어들의 위치 탐색
Ctrl + Shift + F

// 복사, 붙여넣기
Ctrl + C [복사]
Ctrl + V [붙여넣기]
Ctrl + D [라인 복사 후 생성]

// [최상단 이동]
Home

// [최하단 이동]
End

 

 

 

자료형

  • 프로그램의 모든 정보를 데이터 또는 자료라고 한다
  • 자료를 저장할 수 있는 적절한 형태를 자료형이라고 정의한다
타입 크기 특징
Long 64비트 정수
Int 32비트 정수
Short 16비트 정수
Byte 8비트 정수
Double 64비트 실수(소수)
Float 32비트 실수(소수)
Char 16비트 하나의 문자
Boolean 8비트 논리(참 or 거짓)
String X 문자열

 

자료형이 중요한 이유

컴퓨터의 제한적인 하드웨어 사양을 효율적으로 사용하기 위해서 중요하다

  • 몸무게를 소수점까지 표현하고 싶은데 Int로는 할 수 없으니 적절하게 Double 사용하기
  • 32비트(Int)로도 충분한데 64비트(Long)에 정수형을 저장한 경우(낭비)
  • 8비트(Byte)로도 충분한데 32비트(Int)에 정수를 저장한 경우(낭비)

 

 

 

변수와 상수

변수(var) - 변할 수 있는 수

// var num1:Int = 1
// var 변수이름:자료형(생략가능) = 값
// 값을 특정 자료형을 저장할 수 있는 변수이름에 대입한다

var num1 = 1
println("num1 변수에는 ${num1}이 들어있다")

num1 = 5
println("변경한 num1 변수에는 ${num1}이 들어있다")

// 출력
num1 변수에는 1이 들어있다
변경한 num1 변수에는 5이 들어있다

 

상수(val) - 변할 수 없는 수

val num1 = 1
println("내 첫변수 num1 변수에는 ${num1}이 들어있어")

// num1은 var이 아니라 val이기때문에 들어있는 값을 변경하지 못함
num1 = 5

println("변경한 num1 변수에는 ${num1}이 들어있다")

// 출력X 에러 발생
// Val cannot be reassigned 에러 발생!!

 

 

 

연산자의 종류

  • 산술 연산자

덧셈, 뺄셈, 곱셉, 나눗셈, 그리고 나머지 연산을 가능하게 하는 연산자

    var num1 = 30
    var num2 = 10
    
    // 덧셈 연산자(+)사용해서 num1과 num2를 더한후에 plusResult에 대입
    var plusResult = num1 + num2
    println("num1 + num2 = ${plusResult}")

    // 뺄셈 연산자(-)사용해서 num1에서 num2를 뺀후에 minusResult에 대입함
    var minusResult = num1 - num2
    println("num1 - num2 = ${minusResult}")

    // 곱셈 연산자(*)사용해서 num1과 num2를 곱한후에 multipleResult에 대입
    var multipleResult = num1 * num2
    println("num1 * num2 = ${multipleResult}")

    // 나눗셈 연산자(/)사용해서 num1에서 num2를 나눈후에 divideResult에 대입
    var divideResult = num1 / num2
    println("num1 / num2 = ${divideResult}")
    
    // num2를 10에서 7로 변경
    num2 = 7

    // 나머지 연산자(%)사용해서 num1에서 num2를 나눈 나머지를 modResult에 대입
    var modResult = num1 % num2
    println("num1 % num2는 정수로 ${modResult}")
    
    
    
    // 출력
    num1 + num2 = 40
    num1 - num2 = 20
    num1 * num2 = 300
    num1 / num2 = 3
    num1 % num2는 정수로 2

 

 

  • 대입 연산자

변수나 상수를 만들 때 사용한 =를 대입연산자라고 한다

=을 기준으로 오른쪽에 있는 값을 왼쪽의 변수명 또는 상수명에 대입한다고 한다

    // = 기준으로
    // 오른쪽: "참새"
    // 왼쪽의 이름: name
    // 즉, "참새"를 name변수에 대입한다
    var name = "참새"
    println("내 이름은 ${name}")

    // = 기준으로
    // 오른쪽: 10
    // 왼쪽의 이름: age
    // 즉, 10을 age상수에 대입한다
    val age = 10
    println("내 나이는 ${age}")
    
    
    
    // 출력
    내 이름은 참새
    내 나이는 10

 

 

  • 복합대입 연산자

산술연산자와 대입연산자를 한번에 사용할 수 있는 연산자

    var num1 = 30
    var num2 = 10

    // 산술연산자와 대입연산자를 따로 사용
    // num1의 값을 10 증가시켜서 40을 만들고 싶다면?
    num1 = num1 + 10
    println("산술, 대입 따로 적용한 결과 ${num1}")

    // 복합대입연산자를 사용
    // num2의 값을 10 증가시켜서 20을 만들고 싶다면?
    num2 += 10
    println("산술, 대입 따로 적용한 결과 ${num2}")
    
    // 뺄셈, 곱셈, 나눗셈, 나머지연산도 동일하게 사용가능
    // 뺄셈: a-=b
    // 곱셈: a*=b
    // 나눗셈: a/=b
    // 나머지: a%=b
    
    
    
    // 출력
    산술, 대입 따로 적용한 결과 40
    산술, 대입 따로 적용한 결과 20

 

 

  • 증감 연산자

1을 더하거나 빼는 특수한 경우에 사용할 수 있는 연산자

    var num1 = 30
    var num2 = 10

    // num1의 값을 1 증가시키고 싶다면?

    // 1) 산술연산자, 대입연산자 따로 사용
    num1 = num1 + 1
    println("(num1_1): 산술, 대입 연산자 따로 사용해서 1증가 ${num1}")

    // 2) 복합대입연산자 사용
    num1 += 1
    println("(num1_2): 복합대입연산자 사용해서 1증가 ${num1}")

    // 3) 증감 연산자
    num1++
    println("(num1_3): 증가연산자 사용해서 1증가 ${num1}")

    println("====================================================")

    // num2의 값을 1 감소시키고 싶다면?

    // 1) 산술연산자, 대입연산자 따로 사용
    num2 = num2 - 1
    println("(num2_1): 산술, 대입 연산자 따로 사용해서 1감소 ${num2}")

    // 2) 복합대입연산자 사용
    num2 -= 1
    println("(num2_2): 복합대입연산자 사용해서 1감소 ${num2}")

    // 3) 증감 연산자
    num2--
    println("(num2_3): 증가연산자 사용해서 1감소 ${num2}")
    
    
    
    // 출력
    (num1_1): 산술,대입 연산자 따로 사용해서 1증가 31
    (num1_2): 복합대입연산자 사용해서 1증가 32
    (num1_3): 증가연산자 사용해서 1증가 33
    ====================================================
    (num2_1): 산술,대입 연산자 따로 사용해서 1감소 9
    (num2_2): 복합대입연산자 사용해서 1감소 8
    (num2_3): 증가연산자 사용해서 1감소 7

 

  • 증감연산자는 변수의 왼쪽이나 오른쪽에 위치할 수 있다
  • 변수의 왼쪽에 위치하면 전위연산자
  • 변수의 오른쪽에 위치하면 후위연산자
  • 단독적으로 사용하면 결과값을 동일한다
  • 다른 연산과 같이 사용했을 때 차이가 발생한다
    var num1 = 10
    var num2 = 20
    var num3 = 30
    
    // 후위연산자는 println연산을 실행후에 증감한다
    println(num1++)
    println(num1)
    
    // 전위연산자는 println연산 실행전에 증감한다
    println(++num2)
    println(num2)
    
    num3++
    println(num3)
    
    ++num3
    println(num3)
    
    
    
    // 출력
    10
    11
    21
    21
    31
    32

 

 

  • 비교 연산자

두 개의 변수 또는 상수의 관계나 값을 비교할 때 사용하는 연산자

로직 연산자라고도 하며 결과는 or 거짓이므로 boolean자료형과 함께 사용된다

대표적으로 >, >=, <, <= , ==, != 가 있다

    // 수학은 94점
    var mathScore = 94

    // 수학점수가 90점 초과인지 판단
    var isMathHighRank = mathScore > 90

    // 90점 초과라면 true (참)
    // 90점 이하라면 false (거짓)
    println("내 수학점수는 고등급? ${isMathHighRank}")
    
    
    
    // 출력
    내 수학점수는 고등급? true
    
    
    
    ========================================================================================
    	
        
            
    // 영어는 60점
    var englishScore = 60

    // 국어점수가 60점 이상인지 판단
    var isEnglishMiddleRank = englishScore >= 60

    // 60점 이상이라면 true (참)
    // 60점 미만이라면 false (거짓)
    println("내 영어점수는 턱걸이로 중위권? ${isEnglishMiddleRank}")
    
    
    
    // 출력
    내 영어점수는 턱걸이로 중위권? true
    
    
    
    ========================================================================================
    
    
    
    var baseAge = 20
    var myAge = 20
    var teacherAge = 50
    var babyAge = 7

	// myAge와 baseAge가 같은지 판단 -> true
    var isMyAgePass = myAge == baseAge
    
    // teachAge와 baseAge가 같은지 판단 -> false
    var isTeacherAgePass = teacherAge == baseAge
    
    // babyAge와 baseAge가 다른지 판단 -> true
    var isBabyAgeNoPass = babyAge != baseAge

    println("어서오세요")
    println("이번 이벤트는 ${baseAge}살만 참여할 수 있습니다!")

    println("================신분증 검사중================")

    println("내 나이는 ${myAge}이니까 ${isMyAgePass}다!")
    println("선생님 연세는 ${teacherAge}니까 ${isTeacherAgePass}네요.. 미안해요!")
    println("${babyAge}살은 참여할수 없는게 맞아요! ${isBabyAgeNoPass}")
    
    
    
    // 출력
    어서오세요
    이번 이벤트는 20살만 참여할 수 있습니다!
    ================신분증 검사중================
    내 나이는 20이니까 true다!
    선생님 연세는 50니까 false네요.. 미안해요!
    7살은 참여할수 없는게 맞아요! true

 

 

 

조건식

코틀린에서는 조건에 따라 프로그램을 실행한다

if, else, when 키워드를 활용해서 조건을 관리하며 연산자들과 함께 사용한다

  • if, else의 구조
// 조건식은 앞에서 배운 비교 연산자를 사용한다
// 즉, 조건식 자리에는 true 또는 false의 결과가 들어갑니다
// 조건식이 true일때 중괄호 안의 코드를 실행합니다

if(조건식) {
// 실행할 코드
}

// 둘 중 한개의 코드만 실행된다
if(조건식) {
// 조건식이 true일때 실행할 코드
} else {
// 조건식이 false일때 실행할 코드
}

 

  • when의 구조
when(변수 또는 상수){
	값1 ->{
	// 실행할 코드
    	}
	값2 ->{
	// 실행할 코드
    	}
    	else ->{
	// 실행할 코드
	}
}

- else if 가 많아질 때는 when을 사용하는게 가독성이 좋다

- if는 최악의 경우에 모든 조건을 비교한다는 단점을 고려해야 한다

 

 

 

반복문

논리에 맞게 코드를 반복해서 실행한다

코틀린에서는 for, while 키워드를 활용해서 반복적인 로직을 관리하며 연산자와 함께 사용한다

  • for의 구조
// 코틀린의 for 반복문은 다양한 형태가 존재한다

// 리스트(묶음)에서 하나의 요소들을 반복해서 가져오는 경우입니다
for(요소 in 리스트){
	소스코드 (로직)
}

// 숫자의 범위를 기준으로 반복하는 경우
// 시작값이 0이고, 마지막값이 5라면 인덱스는 0,1,2,3,4이므로 총 5번 반복한다
// until을 생략해서 시작값..마지막값으로 사용할수도 있다
for(인덱스 in 시작값 until 마지막값){
	소스코드 (로직)
}

 

 

  • while의 구조
// 코틀린의 while 반복문은 조건식, 증감식을 이용한다

while(조건식){
	소스코드 (로직)
	증감식
}

 

  • break는 가장 가까운 반복문에서 탈출하고 다음 블록으로 넘어간다
  • continue는 이후의 코드를 실행하지 않는다
    var infos = arrayOf("꿩", "닭", "참새", "오목눈이", "공작새")

    for(info in infos) {

        if(info == "참새"){
            println("찾았다 참새!")
            break
        } else{
            continue
        }
    }
    
    
    
    // 출력
    찾았다 참새!
728x90