본문 바로가기
개발/안드로이드

코틀린 문법

by 세크레투스 2025. 1. 7.
반응형
SMALL

변수란?

: 값을 담을 수 없는 그릇 (값을 가지고 있는 특정한 그릇)

값을 다른 값으로 바꿀 수 있으며, 초기값이 필요하지 않음. var 로 선언함.

  • 숫자(Number)
    • Byte(8Bit) : -128 ~ 127 까지
    • Short(16Bit) : -32,768 ~ 32,767
    • Int(32Bit) : -2147483648 ~ 2147483647
    • Long(64Bit) : -21억 ~ 21억 이상의 수
    • Float(32Bit) : 소수점 7자리
    • Double(64Bit) :  소수점 14자리
  • 글자(Character) : 'A', 'B', 'C'
    • 글자 한 개만 남음
    • Char 입력해서 선언
    • '(작은 따옴표)' 를 이용해서 입력
    • 예 (var c : Char = 'A')
  • 논리값(Boolean)
    • true, false 값만 담을 수 있음
    • Boolean 입력해서 선언
    • 예 (var b : Boolean = true)
  • 문자열(String) : "Apple", "Banana", "Character"
    • 여러 개의 문자를 담을 수 있음
    • String 입력해서 선언
    • "(큰따옴표)" 를 이용해서 입력
    • 예 (var s : String = "My name is howl")
  • 배열(Array) : [Apple, Banana, Character]
    • 1차원 데이터
    • 선언방식 : Array<데이터형식>
    • 데이터형식 : 숫자(Int, Long), 글자(Char), 문자열(String), 논리값(Boolean) ...
    • 예 ( var a : Array<Int> = arrayOf(1,2,3) )

상수란?

: 값을 담을 수 있는 그릇 (수정 불가능한 그릇)

값을 바꿀 수 없으며, 초기값이 필요하다(초기값을 반드시 넣어줘야 함), val로 선언할 수 있다.

예( val [변수명] : [변수형식] = [입력할값] )

NULL

: 그릇(변수)안에 값이 존재하지 않는 상태.

공백이나 0과는 개념이 다르며, 그릇 안에 데이터가 배치되기 전 상태라고 보면 됨.

연산자

  • 대입연산자
    • =
    • [데이터를 받을 변수] = [데이터를 입력한 값]
    • 수학에서 쓰는 같다 의 의미의 연산자는 "==" 이다.
    • 예(
      var i = 0
      i = i + 1 -> i = 0 + 1
      )
  • 산술연산자
    • + (더하기)
      • x + y
    • - (빼기)
      • x - y
    • * (곱하기)
      • x * y
    • / (나누기)
      • x / y
    • % (나머지)
      • x % y
  • 범위연산자
    • [비교변수] in [시작값..마지막값]
      • x in 1..10
        • [1..10]은 1부터 10까지의 수, 즉 [1,2,3,4,5,6,7,8,9,10]을 의미함.
      • x !in 1..10
        • 1 >= x, x <= 10
  • 비교연산자
    • x > y
      • x가 y보다 클 때 true, 아닐 때 false
    • x < y
      • x가 y보다 작을 때 true, 아닐 때 false
    • x >= y
      • x가 y보다 크거나 같을 때 true, 아닐 때 false
    • x <= y
      • x가 y보다 작거나 같을 때 true, 아닐 때 false
    • x == y
      • x와 y가 같을 때 true, 아닐 때 false
    • x != y
      • x와 y가 다를 때 true, 아닐 때 false

제어문 (Control Flow)

  • If~Else 문
    • if(조건) { ... } //조건이 참일 경우 실행
    • else if(조건) { ... } //조건이 참일 경우 실행
    • else { ... } //위 2개의 조건문이 둘 다 거짓일 경우 실행
  • When 문
when(x) {
	print("x값은 1입니다.") //x가 1일 때 작동
    print("x값은 2입니다.") //x가 2일 때 작동
    else { //x가 1과 2가 아닐 때 작동
    	print("x값은 1또는 2가 아닙니다.")
    }
}
  • For 문
// Range For 문
for (x in 1..10 step 2) { //step2는 2씩 커진다는 의미임. step이 없으면 default로 1씩 커짐.
	print(x)
}
// Collection For 문 (데이터가 배열로 담겨짐)
var collection = [1, 10, 100]
for (item in collection) {
	print(item)
}
  • While 문 (특별한 상황에서만 써야 함. 반복문으로 for문도 쓸 수 있다면 차라리 for문을 쓰는게 낫다고 함.)
while(조건문) {
//조건문이 참일 경우 계속해서 반복함.
}

CLASS( == Object == 객체화 )

  • 개발자가 거대한 우주를 만든다고 했을 때, 은하계가 CLASS일 것이다.
  • 은하계가 태양계에서도 어떠한 기준에 의해서 물질을 나눌 수 있는데, 빛이 나는 것을 행성, 빛이 나지 않는 것을 항성이라고 한다. 이러한 기준을 통해서 "지구"라는 Class를 만들 수 있다.
  • 지구의 물질(정보)를 어떤 기준으로 나눌 때 하나하나씩 쪼개서 만드는 것을 "객체화"라고 하며, 객체는 class를 의미한다. 특정 정보에 의해서 나누는 것을 의미한다.
  • 구조 :
class (클래스명) {
	var name : String //Property
    //var height : Int
    //var weight : Int
    fun printHumanInfo {
    	//Functions
    }
}

FUNCTIONS

fun 이름 (입력값) : 리턴타입 { //리턴타입(Int, String, Boolean)
	//프로세서 처리
    return 가공값
}

CLASS (상속 - Inheritance)

  • 상속(Inheritance)이란?
    • 상속받은 재산, 유산; 상속
    • (강사님이 보기에는 유전(?유산), 상속의 의미에 더 가깝다고 하심)
open class (클래스명) { //나중에 override할 때 open을 해줘야 할 수 있다.
	open var name : String
    open fun printHumanInfo {
    	...
    }
}

OVERRIDE ? (올라탄다라는 )

: 상속받은 변수, 기능 재구축 (강사님은 함수를 재정의 하는 것을 의미한다고 하심.)

open class Human {
	open val name = "하울"
}
class Person: Human() { //Person 클래스는 Human 클래스를 상속받음.
	override val name = "유명식" //상속받은 Person 클래스의 변수 name의 값을 변경해줌.
}
class Person2: Human() { //Person에서 고쳐진 name의 정보는 Person2에 아무런 영향을 미치지 않음.
	...
}
반응형
LIST