본문 바로가기

개발 노트/Kotlin

[kotlin]변수

변수 (var)

 

# 변수(variable)이란?

- 값을 임시로 메모리(저장공간)에 저장하고 그 저장공간에 이름을 부여한것 [값을 담아주는 그릇이라고 생각하면 쉬움]

- 이름과 값으로 구성되며, 변수에 이름을 부여하고 값을 입력하는 행위

- 변수를 사용하면 소스코드에서 해당값을 사용하고자 할때, 앞에서 붙였던 이름으로 사용할수있음

 

# 변수 선언방식

1) 변수선언과 동시에 값 넣기

- 입력되는 값으로 변수 타입 추론 가능

- 값이 입력되는 순간 해당 값의 형태(String,Int,Boolan 등)으로 변수의 타입이 결정

// 변수명 myName에 문자열 "홍길동"을 입력
var myName = "홍길동"

 

 

2) 값으로 초기화하지 않고 선언만 하여 사용하기

- 선언만 할 경우, 반드시 변수명 옆에 콜론(:) 구분자를 붙여서 타입(자료형)을 지정해야함

var myAge : Int 	// 변수명 myAge를 Int 타입으로 선언
myAge = 27     	// 숫자 '27'을 입력

 

-> 변수는 최초 선언시에 타입이 결정됨

-> 변수는 한번 타입을 결정하면 동일한 타입의 값만 담을수있음

[ Int(정수)타입의 변수에 문자열을 입력한다면 컴파일 에러가 발생함]

 

 

# 데이터 타입

구분 데이터타입 설명
숫자형 Double 64비트 정수
  Float
32비트 정수
  Long 64비트 정수
  Int 32비트 정수
  Short 16비트 정수
  Byte 8비트 정수
문자형 Char 1 개의 문자
  String
여러 개의 문자
 
불리언형 Boolean true, false

 

 

 

# 기본 타입

- 변수에 저장되는 값의 크기가 미리 정해져있는 타입

- Int는 2,147,483,647까지,   Byte는 127까지 저장 / String의 경우는 쌍따옴표(" ") 사이에 몇 글자가 들어가도 상관없기 때문에 값의 크기를 특정할 수 없음

 

# Double

- 소수점이 있는 값을 저장할때 사용

var doubleValue: Double
doubleValue = 3.141592

 

# Float

-  Double과 동일한 용도이지만 더 작은 범위의 숫자를 저장할 때 사용

-  Double과 Float을 구분하기 위해 Float의 경우 숫자 끝에 'F'를 붙여줌

var floatValue: Float
floatValue = 3.141592F

 

# Int

- 소숫점이 없는 정숫값 저장할때 사용

var intValue: Int
intValue = 2147483647

 

- 가독성을 높이기 위해 언더바(_)로 자릿수 구분 가능

var intValue: Int
intValue = 2_147_483_647

 

 

# Long

- Int 보다 큰 범위의 정수 저장할때 사용

- Int와 구분하기 위해서 숫자의 끝에 'L'을 붙여줌

- Long 타입의 경우에는 설정한 글꼴에 따라 숫자 1과 구분이 어려울 수 있기 때문에 대문자를 사용

var longValue: Long
longValue = 2147483647L

 

 

# 정수형 변수에 실수형 값을 입력할 수 있을까?

- 같은 숫자라도 타입이 다르면 입력할 수 없음

예를 들어, 정수형(Int) 숫자 1과 실수형(Double) 숫자 1.0은 서로 다른 타입으로 인식하기 때문에 정수형으로 선언된 변수에 실수형 값을 입력할 수 없음

- 꼭 필요한 경우에는 데이터 타입(자료형)을 변환하는 과정을 거쳐서 입력할 수 있음

 

# Short , Byte

- 정숫값을 저장할 때 사용하는데 입력할 수 있는 값으 크기가 Int보다 작음

var shortValue: Short = 32_767
var byteValue: Byte = 127

 

# 타입을 지정하지 않은 숫자는 어떻게 저장될까?

- 타입을 지정하지 않은 일반 숫자값은 모두 Int타입으로 인식되어 의도치 못한 결과를 가져올수있음

var byteValue: Byte = 127 // 127이 Byte 타입으로 저장됩니다.
var byteValue2 = 127      // 127이 Int 타입으로 저장됩니다.

var floatValue: Float = 3.14F // 3.14가 Float 타입으로 저장됩니다.
var doubleValue = 3.14        // 끝에 F를 붙이지 않으면 Double로 저장됩니다.

 

 

# Char

하나의 글자만 외따옴표('')로 감싸서 저장할 수 있음

-  타입을 특정하지 않아도 외따옴표 안에 하나의 글자만 지정하기 때문에 Char로 저장

var charValue = 'A'

 

# String

-  여러개의 문자 지정

- 기본 타입에는 포함되지 않지만 거의 모든 컴퓨터 언어에서 가장 많이 사용되는 타입

var stringValue: String = "ABCDEF"

 

 

# Boolean

- true, false 둘 중에 1개의 값을 저장할 수 있음

- 주로 조건문에서 의사결정을 하기 위한 용도로 많이 사용

var boolValue = true

 

 

# 문자열

- 코틀린에서는 더하기(+) 연산으로 2개의 문자를 하나로 합칠수있음

- 문자열을 쉽게 다룰수있는 문지열 템플릿도 제공

  -> 문자열 내부에 달러($)기호를 넣으면 해당 영역이 문자가 아닌 코드라는 것을 알려줌

var name="홍길동"
 // 출력: 제 이름은 홍길동 입니다.
Log.d("BasicSyntax", "제 이름은 $name 입니다.")

 

- 주의할점

->  $변수 다음에 이어지는 문자가 있다면 공백으로 구분해야함

// 이어지는 문자열과의 사이에 공백이 없으면 문자열로 인식합니다.
"제 이름은 $name(공백) 입니다."

 

 

# 읽기 전용 변수 Val

- 위의 var과는 다르게 한 번 입력된 값은 변경할 수 없음

- 변하지 않는 값을 미리 입력해둘때 사용

- 상수라고 부르기도 하지만 상수와는 의미가 조금 다름

 

- val 선언방법

- 선언방법은 변수와 동일하며, 이름 앞에 val을 붙이면 읽기 전용 변수가 됨

val 변수명(이름) = 값

 

 

- 변하지 않는 값을 미리 지정해두고 필요에 따라 다른값과 조합해서 사용 가능

// 미리 지정    
val roadName = "국제금융로"        
// 필요할 때 조합해서 사용합니다.
var address = roadName + "8길"

 

 

- val로 정의된 변수는 값을 변경할 수 없으므로 아래와같이 입력하면 에러 발생

val language = "kotlin"
language = "java"    // ERROR, val은 값을 변경할 수 없습니다.

 

 

# 상수 Const

- 상수는 주로 기준이 되는 변하지 않는 값을 입력해둘때 사용

- 읽기 전용 변수인 val 앞에 const 키워드를 붙여서 만듬

const val PI = 3.141592

-> val과 같이 읽기 전용인 것은 동일하지만,

컴파일 시에 값이 결정되기 때문에 Int, Long과 같은 기본형과 문자열인 String만 입력할 수 있음

 

 

# 코딩 컨벤션

- 대부분의 회사에서는 최초 개발자와 유지보수 담당자가 다르기에 각 프로젝트별로 코드를 작성하는 규칙을 만드는데, 이를 코딩 컨벤션이라 함

 

->  클래스명

- 코드를 알아보기 쉽게 하나의 파일에 모아놓은 것

- 클래스 네이밍 규칙은 카멜 케이스 규칙 사용 [첫글자는 대문자, 나머지 글자는 소문자]

- 클래스명은 일반적으로 파일명과 동일(항상 그런것은 아님)

- 클래스는 변수와 함수는 포함

class MainActivity{
    val name = "kotlin"
    var age = 17
    fun getFullName(): String{
        ...
    }
}

 

->  함수명과 변수명

- 카멜 케이스 규칙 사용

// 첫 글자인 o는 소문자, 새로운 단어(Create, Activity)의 첫 글자(C, A)는 대문자
fun onCreateActivity()
// 첫 글자인 i는 소문자, 새로운 단어(Value)의 첫 글자(V)는 대문자
var intValue: Int

 

 

->  상수명

- 상수명은 모두 대문자로 작성

const val HELLO: String = "안녕"

 

- 상수명이 2개의 단어로 이루어져 있다면 다음 예시 코드의 상수명처럼 단어 사이를 언더바(_)로 구분하는 스네이크 케이스(Snake Case)를 사용할 수 있음

const val HOW_ARE_YOU: String = "어떻게 지내?"

 

 

# 개인 선호도에 따라 카멜 케이스, 스네이크 케이스 중 한 가지를 선택할 수 있지만, 하나의 프로젝트를 스네이크 케이스로 시작했다면 모든 코드를 스네이크 케이스로 작성하는 일관성이 있어야함!

 

 

->  들여쓰기

- 새로운 코드 블록이 시작되면 스페이스바 또는 Tab키로 동일한 간격만큼 들여쓰기함

- 코딩 규칙 중 가장 중요한 규칙!!

 

 

 

# 미니 퀴즈

1. 코드 작성 규칙에서 가장 중요한 것은 무엇일까요?

-> 들여쓰기

 

2. 16비트의 정숫값을 저장할 수 있는 타입은 무엇일까요?

-> Short

 

3. 2개의 문자열을 합칠 수 있는 방법은 무엇일까요?

-> 더하기(+) 연산으로 2개의 문자를 하나로 합칠수있음

 

4. 한 번 입력한 값을 바꿀 수 없는 변수를 무엇이라고 할까요?

-> 읽기 전용 변수 (Val)

'개발 노트 > Kotlin' 카테고리의 다른 글

[kotlin]배열과 컬렉션  (0) 2024.01.16
[kotlin]조건문  (0) 2024.01.16
Log, Logcat  (0) 2024.01.16
버튼 눌러서 글자 바꾸기 예제  (0) 2024.01.15
코틀린에 관해  (0) 2024.01.15