자바 포인터에 관한 질문2
두온
public class Test2 {
int a;
public static void main(String[] args)
{
Test2 t = new Test2();
int k;
t.change_num(t);
}
void change_num(Test2 t)
{
t.a = 100;}
void change_num(int k)
{
k = 300;
}
}
//---------------------------------------------------------------------
a라는 전역변수를 설정을 해주고 나서 객체 t을 만들고 이것을 다시
void change_num(Test2 t)
{
t.a = 100;}
을 해주어서 값을 변경을 할수가 있었습니다.
근데 이 방법 말고 변수 k는 보다시피 지역변수 입니다.
지역변수의 주소값을 넘겨서 어떤 함수에서 값을 변경을 할수는 없습니까?
-
아쿠아리우스 2023-04-07
제가 볼때 자바에서는 함수로 넘겨서 한다는 것은 좀 안맞는거 같습니다.
클래스로 넘겨서 한다고 생각해보시지요.
그리고 지역 전역 변수라는 개념도 약간 틀리다고 할수 있는데요.
C개념으로 생각하시지 마시고 Java개념으로 생각해보세요. -
딥자두 2023-04-07
답변 감사합니다.
-
눈꽃 2023-04-07
Java 는 C와 같은 Pointer 개념이 없읍니다. 모든 primitive 변수나 Object Reference 모두 Call by Value로 작동합니다. 단지 Object의 경우는 주소값이 복사돼서 파람으로 넘어가기 때문에 마치 Call by Refrence처럼 작동하는것 처럼 보일 뿐입니다. 위의 경우는 Java에서 불가합니다.
굳이 하시려면 WrraperClass를 사용하여 Object로 Handling 하셔야 할듯....