연습장/이론

Kotlin_ 1-2. 전역변수, 지역변수

아이른 2024. 4. 11. 12:30

1. 전역변수

  • 전역적으로 사용할 수 있는 변수 (Global Variable)
  • 어디에서나 접근할 수 있는 변수
  • 지양 : 가독성이 떨어지고, 어떤 변수를 어느 위치에 적절하게 사용해야 되는지 알 수 없는 경우 발생 

 

2. 지역변수

  • 지역적으로 사용할 수 있는 변수 (Local Variable)
  • 정한 영역(Scope)에서만 사용할 수 있는 변수

 

3. 가변성(Mutability)

  • 변할 수 있는 (var)
  • 어디에서나 접근 가능하기 때문에 printHelloWorld() 에서도 쉽게 접근
var hello = "hello"
//전역변수

fun main() {
    printHelloWorld()
}//hello world

private fun printHelloWorld(){
    hello += " world"
    println(hello)
}
  • 한 메서드에서 값을 변경하게 되면 다른 메서드에서도 반영이 되어버려 추후에 변경점이 일어난 메서드를 찾기 힘듦 
var hello = "hello"

fun main() {
    printHelloWorld()
    printHello()
}
/*
hello world
hello world
첫 함수에서 변수의 값을 바꾸었기 때문에 두번째 함수도 hello world 출력
*/

private fun printHelloWorld(){
    hello += " world"
    println(hello)
}

private fun printHello(){
    println(hello)
}//원하는 출력 : hello >> 실제 출력 hello world
  • 변경 된 값을 지정하고 싶지 않을 때, 해당 메서드에서 지역 변수로 값을 변경 
var hello = "hello"

fun main() {
    printHelloWorld()
    printHello()
}
/*
hello world
hello
*/

private fun printHelloWorld(){
    hello += " world"
    println(hello)
}

private fun printHello(){
    hello = "hello" //지역변수
    println(hello)
}
  • 전역 변수를 변경 할 때, 지역 변수로 지정한 메서드는 변경이 되지 않음
var hello = "안녕"

fun main() {
    printHelloWorld()
    printHello()
}
/*
안녕 world
hello
*/

private fun printHelloWorld(){
    hello += " world"
    println(hello)
}

private fun printHello(){
    hello = "hello" 
    println(hello)
}

 

4. 불변성(Immutability)

  • 변할 수 없는 (val)
fun main() {
    printHelloWorld()
    printHello()
}
/*
Hello world
hello
*/

private fun printHelloWorld() {
    val helloWorld = "Hello world"
    println(helloWorld)
}

private fun printHello() {
    val hello = "hello"
    println(hello)
}