Kotlin 문법 정리 1, 2

kkomin·2023년 7월 17일

Kotlin

목록 보기
1/7

1. Kotlin 특징

  • 구글에서 안드로이드 앱 개발 시 권장하는 언어
  • Java 단점 개선 및 보완
    • 자료형 명시하지 않아도 추론 가능한 기능 제공
    • 간결한 코드 작성
      (예) Java : 100줄, Kotlin : 50줄
    • null 에외를 컴파일 시점에 방지가 가능해서 안정적인 프로그램 제작 가능
  • JVM 언어와 100% 호환되는 프로그래밍 언어이며, 직관적이고 간결한 문법으로 Null 처리에 높은 안정성을 가진다.

2. 안드로이드 개발에서의 Kotlin 선호 이유

  • 적은 노력으로 많은 작업을 할 수 있어서 표현력이 높고 간결하다.
  • 일반적인 프로그래밍 실수를 방지하고 kotlin코드가 포함된 Android 앱은 다운될 가능성이 20% 낮다.
  • Java 언어와 100% 호환으로 높은 호환성을 보인다.
  • 비동기 코드를 차단코드처럼 구조화된 동시 실행이 가능하다.

3. 안드로이드 스튜디오 단축키

안드로이드 스튜디오를 사용할 때 유용할 단축키 정리

  • 한 줄 지우기 : Ctrl + X
  • 주석 처리 : Ctrl + /
    (이건 다른 언어들에서도 많이 쓰이는 단축키)
  • 자동 포커싱 : ESC
    (오 이건 처음 배우는 단축키)
  • 전체 찾기 : Ctrl + Shift + F
    (한 파일에서 찾기는 Ctrl + F 였던 것 같음)
  • 라인 드래그 : Shift + 상, 하, 좌, 우
    (꿀팁🍯 한 줄 드래그 : Home키 + Shft + End키)

4. 코딩 컨벤션

(1) 필요성🤔

코딩 컨벤션은 다른 사람들도 이해하기 쉽게 코드를 작성하는 규칙으로 프로그래밍 언어마다 서로 다르다. 그럼, 이 코딩 컨벤션이 왜 필요할까? 코드의 가독성이 증가해 나중에 코드를 보더라도 쉽게 이해할 수 있어 유지보수가 쉽고, 효율적으로 협업이 가능하기 떄문에 필요하다.

(2) 표기법✅

  • camel 표기법
    낙타 표기법이라고도 불리는 카멜 표기법은 낙타 혹처럼 맨 첫 글자를 제외한 각 합성어의 첫 글자만 대문자로 표기하고, 주로 변수나 메소드 이름을 지정할 때 사용한다.
    ex) seoulCity, fingerFood 등

  • snake 표기법
    프로그래밍에서 파일, 변수, 함수 등 대상의 이름의 띄어쓰기를 언더바(_)로 표기하고, 주로 상수의 이름을 지정할 때 사용한다.

  • Pascal 표기법
    파스칼 표기법은 카멜 표기법과 비슷하지만, 첫글자도 대문자로 표기한다는 차이가 있다. 주로 클래스의 이름을 지정할 때 사용한다.

5. 출력과 입력

  • 출력
    출력은 다른 언어들에서도 쓰이는 print와 println 이 두가지를 모두 사용할 수 있다. (println은 줄바꿈 출력이고 print는 기본 출력)

  • 입력
    키보드에서 입력한 내용을 불러오는 것은 다른 언어들과는 다르다. 기존 scanf_s를 자주사용해서 그런가나도 익숙해지는데 조금 시간이 걸렸다. 코틀린에서의 입력은 readLine()을 사용한다.

    // 키보드로 입력
    var data = readLine()
    
    // 입력한 내용 출력
    println("데이터는 ${data} 입니다.")
    

문자열 안에서 변수를 바로 사용할 때는 ${변수}를 사용해 주어야 한다.

6. 변수 및 상수

(1) 자료형

코틀린의 자료형(자료를 저장할 수 있는 적절한 형태)은 다른 언어들과 동일하게 정수, 실수, 문자, 문자열 등에 대한 기본적인 것으로 이루어져 있다.

  • 코틀린은 자바와 달리 자료형을 명시하지 않아도 알아서 추론한다 !!

(2) 변수

변수는 데이터를 저장하기 위해 프로그램의 의해 이름이 할당받은 메모리 공간으로 var이라는 키워드를 사용하고 이 변수는 자료형과 함께 사용한다.

숫자 변수에서 num1이 이미 10으로 초기화 및 선언되어 있기 때문에 num1을 5로 지정할 때는 다시 선언할 필요가 없다.

(3) 상수

상수는 변하지 않는 값을 지정할 때 사용해준다. ❗불변하는 값❗
val 키워드를 사용해주면 된다.

num은 이미 변수가 아닌 상수로 지정했기 때문에 불변하는 값을 변경하려고 하면 에러가 발생한다.

7. 연산자의 종류

다양한 연산자들

(1) 산술 연산자

  • 합 : +
  • 빼기 : -
  • 곱하기 : *
  • 나누기 : /
  • 나머지 : %

(2) 대입 연산자

  • =

(3) 복합 대입 연산자

산술연산자와 대입 연산자를 같이 사용하는 복합 대입 연산자도 있다.

  • +=
  • -=
  • *=
  • \=
  • %=

이 연산자들은 어떻게 사용해야 하는가? a라는 변수 값이 10이고 이 변수를 10 더해서 a 변수 값을 20으로 만들고 싶다고 예를 들어보자. 이럴 경우에는 산술연산자도 사용이 가능하지만 위의 연산자는 다음과 같이 사용할 수 있다.

  var a = 10
  a += 10

이럴 경우 a += 10은 a = a + 10 과 동일하다.

(4) 증감연산자

  • 전위연산자
    • 증가 : ++변수
    • 감소 : --변수
  • 후위연산자
    • 증가 : 변수++
    • 감소 : 변수--

a++은 a = a + 1과 같다고 생각하면 되고, 후위연산자이기 때문에 실행 후 연산한다. 반대로 전위연산자는 b = b + 1과 같다고 생각하는 것은 전위연산자와 동일하나, 실행 전에 증가하게 된다.

(5) 로직 연산자

로직 연산자는 두 개의 변수나 상수의 관계나 값을 비교할 때 사용하며, 결과가 참인지 거짓인지를 판단하는 것으로 bool형인 자료형과 같이 사용한다. >, >=, <, <=, ==, != 등을 사용한다.

8. 조건식

if, else, when 사용

조건식은 연산자들과 함께 사용해야 한다는 것을 잊어서는 안된다.

  • if, else의 구조
  if(조건식) {
      // 조건이 참일 때 실행할 코드
  }
  else {
      // 조건이 거짓일때 실행할 코드
  }
  • when의 구조
  when (변수 또는 상수) {
      value1 -> {
          //변수 또는 상수가 value1일 때 실행할 코드
      }
      value2 -> {
          //변수 또는 상수가 value2일 때 실행할 코드
      }
      in value3..value9 {
          //변수 또는 상수가 value3 ~ value 9 사이일 떄 실행할 코드
      }
      else {
          //변수 또는 상수가 위 조건에 해당되지 않을 때 실행할 코드
      }
  }

else if가 많을 경우에는 when을 사용하는 것이 가독성이 좋고, if는 최악의 경우에 모든 조건을 비교한다는 단점을 꼭 생각하고 사용해야 한다!!!

9. 반복문

(1) for문

for문은 반복문 중 하나로 리스트에서 하나의 요소들을 반복해서 가져오는 경우에 사용한다.

  // Kotlin for 반복문
  for(요소 in 리스트) {
      소스코드 (로직)
  }
  
  // 다른 언어 for 반복문 예시
  for(int i = 0; i <= 10; i++) {
  	print(i);
  }
  

(2) until문

until문도 for문과 마찬가지로 반복문 중 하나로 숫자의 범위를 기준으로 반복하는 경우에 사용한다. 참고로 unitl을 생략해서 시작값부터 마지막 값으로 사용할 수 있다.
until은 영어로 ~까지라는 뜻이므로 시작값부터 마지막 값까지 소스코드를 반복한다로 생각하면 암기하기 쉽다.

// Kotlin until 반복문
  for(인덱스 in 시작값 until 마지막값) {
      소스코드 (로직)
  }

(3) while 문

반복문 중 하나인 while문은 조건식 및 증감식을 이용한다.

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

(4) break & continue

그냥 쉽게 생각해서 break는 가까운 반복문에서 탈출하고 다음 블록으로 넘어가는 것이고 continue는 continue 이후의 코드를 실행하지 않는다고 이해하면 된다.

profile
소소한 코딩 일기

2개의 댓글

comment-user-thumbnail
2023년 7월 17일

잘봤습니다. 좋은 글 감사합니다.

답글 달기
comment-user-thumbnail
2023년 7월 17일

저도 개발자인데 같이 교류 많이 해봐요 ㅎㅎ! 서로 화이팅합시다!

답글 달기