[질문]try내에 선언된 변수는 try외부에서 못읽는 이유가 있습니까?
맛깔손
try 구문에다가 그냥 무심결에 변수를 선언하고 try외부에서 변수를 출력할려고 했는데요
자꾸 변수가 없다는 에러가 나서 외부에 선언하니깐 되고
내부에서 선언한것은 내부에서만 실행이 되네요...
class test{
public static void main(String[] args){
try{
int i=0;
// 중간 작업
i = (int)(숫자작업);
}catch(Exception e){
System.out.println(e);
}
System.out.println(test = + i); //여기서 출력
}
}
원래소스는아니고 간단하게 이런식으로 했습니다.
이제 배워서 잘은 모르겠지만 이구문이 될것같은데 안되니깐 너무 난감하네요
try가 예외를 처리하는 블록인것은 알겠지만 거기에 변수 선언이되면 그 블럭 밖에서는 못쓰는 거에요?
이것저것 만지다 가 갑자기 안되서요.... 제가 모르는 먼가가있는 지는.... -.-
자바열공님들에 조언을 부탁드립니다. ㅠ.ㅠ
이것땜시 에러메세지 잘안보고 다른것만 고치다가 에러의 의미를 찾으니깐 쉽게 잡았는데 이유가 불확실해서요....
-
지후 2023-10-28
깔끔한 마무리 한방 ^^
-
나라우람 2023-10-28
호오 전 그냥 그려려니 생각을 했는데 정말 중요하군요... 다시 책장을 처음으로 넘기고
머리말부터 읽어야 겠어요.. ...scope....scope...scope..
진용훈씨의 마무리까지 좋은 정보 감사합니다....... -
별햇님 2023-10-28
쉽게 생각하면 이렇게 비유할수 있겠죠. 지방에 있는 전주시장이 서울에 올라왔다고 합시다. 그리고, 행정기관에 가서 뭐라고 직원들에게 지시를 하면 그게 통할까요? 않통하겠죠. 바로 소스에서도 그와 비슷합니다. 영역이라는게 있죠. 특정 영역에서 생겨난 존재는 그 영역에서만 실효성이 있죠. 물론, 하위영역을 가진다면 그하위영역에서는 통하겠죠. 이도, 대통령이 전주시내 행정기관에 가서 한마디 하면 바로 시정되듯이요. 프로그래밍 세계도 현실이랑 많이 비슷합니다.
-
미라 2023-10-28
그래서 보통 선언은 위쪽에 하고 int i; 이런식으로요.
값을 대입할때는 i = 0; 이렇게 구분해서 코딩하기도 하고...
한가지 주의하셔야 할것은, 이건 씨언어에서 더 중요한건데..
변수 스코프문제가 귀찮다고,혹은 변수값 넘기고 받기 귀찮다고 모조리 전역변수로
선언해버리시면 안됩니다...-_-
되도록 지역변수로 코딩하는게 좋습니다..^^
학교다닐때 레포트하기 귀찮아서 저도 저런식으로 많이 날림코딩해버린 기억이 납니다..^^
(끌려가서 540도 돌 -
징징몬 2023-10-28
scope 라고 합니다. 변수가 안죽고 살아 있는 영역이지요~
변수가.. 살아 갈 수 있는 영역을 벗어 났기 때문에.. 죽어 버린것이지요~ ^_^ -
HotPink 2023-10-28
자바에서는 {} 요놈의 괄호가 중요합니다. 밖에서 선언한것은 안에서 쓸 수 있지만, 안에서 선언한 것은 그 괄호{} 에서만 쓰기 위한 내부 변수이므로, 외부에서는 못 쓰죠.