Q&A : for문을 사용해 변수 이름에 접근하는 방법?

NtoZ·2023년 2월 25일
0

Java

목록 보기
7/23
post-thumbnail
  • 💡🤔궁금점 : for문을 이용해서 각각의 변수 자체에 접근할 수 있는 방법은 없을까 궁금해졌다. 예를 들면 str1, str2, str3의 변수에 각각 문자열이 할당되어 있다. 변수명에 각각 규칙이 있으므로 해당 변수에 for문을 사용해서 접근할 수 있을까? chatGPT에 물어보니 이런 답변이 달렸다
  • Q. 참조변수 str1, str2, str3가 있어. for문을 이용해서 각각의 변수 명에 접근할 수는 없을까? 예를들어 System.out.println(str + i)처럼 말이야. (해당 코드가 안된다는 사실은 이미 알고 있었음)
  • A.➡️
    - ① 변수명은 컴파일 시점에 이미 정적으로 결정되어 있기 때문에, str + i와 같이 동적으로 문자열을 만들어서 변수명으로 사용할 수 없습니다.
    - ②즉, str1, str2, str3과 같은 변수명은 컴파일 시점에 이미 결정되어 있으며, 이 변수들은 각각의 고유한 메모리 주소를 가리키고 있습니다. 그러므로 str + i와 같이 변수명을 문자열과 함께 사용하면, 새로운 문자열이 만들어지고, 이 문자열은 이미 존재하는 변수명이 아니기 때문에 컴파일 에러가 발생합니다.
    - ③하지만, 변수명 대신에 배열을 사용하면 str[i]와 같이 인덱스를 사용하여 각 변수에 접근할 수 있습니다. 배열은 런타임 시점에 동적으로 메모리를 할당하기 때문에, 인덱스를 이용하여 변수에 접근할 수 있습니다.

  • 아하, 그래도 혹시 모르니 다시 한 번 물어봤다.
  • Q. 변수가 여러 개 존재한다.
    변수 이름에 일정한 규칙이 있다.
    예를 들면 int A1; int A2; int A3;
    또는 String str1; String str2; String str3;
    변수 이름 사이에 규칙이 있지만 그것을 for문을 통해서 간편하게 접근할 수 있는 방법은 없다.
    배열을 만들어 출력하는 방식을 제외하고는.
    이 말이 맞니?
  • A. 네, 맞습니다. 자바에서는 변수의 이름 자체가 변수를 구분하는 중요한 요소 중 하나입니다. 변수 이름에 따라 변수에 접근할 수 있으며, 변수 이름이 일정한 규칙에 따라 작성되어 있다면, 이 규칙을 이용해 간편하게 접근할 수 있는 방법이 있습니다. 하지만 변수 이름 자체를 동적으로 결정하는 것은 불가능하기 때문에, for문과 같은 반복문에서 변수 이름을 동적으로 결정하는 것은 불가능합니다. 따라서 배열과 같은 다른 자료구조를 사용하거나, 변수 이름을 직접 입력하여 접근해야 합니다.
profile
9에서 0으로, 백엔드 개발블로그

0개의 댓글