게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
java에서 final static 사용과 관련하여 사담;;;
게시물ID : programmer_10707짧은주소 복사하기
작성자 : 미친공대생
추천 : 0
조회수 : 525회
댓글수 : 8개
등록시간 : 2015/06/02 10:19:56
옵션
  • 본인삭제금지
일단 자바에서  #define 이 없다 보니 이를 대체해서 final static을 사용합니다.

그런데 아무 생각 없이 쓰다가 든 생각;;;;;;;;;;

어라? 이거 final 이고 static 이잖아? 라는 생각이 들더군요;;;
(뭔 헛소리 하는 거야? 라고 하시겠죠?)


그러니깐 final은 일종의 const를 만드는 녀석으로 알고 있고,
static은 만 그데로 정적 메모리 사용인데...


클래스 A에 final static int a = 1; 만들어 놓고...
클래스 B에 final static int a = 2; 을 만들어 놓아도...

서로의 값에 영향을 안준다는 것이 의아하더군요;;;
(컴파일 에러나 발생이 안되죠.)


일단 static을 사용했기 때문에 a라는 녀석은 같은 메모리 주소에 생성이 되었을 것 같은데...
막상 final로 값의 변화를 막았음에도 아무 문제 없이...
각각의 클래스에선 1과 2로 사용된다는 것이죠.

그래서 든 생각은.... 뭐... 뭐지? 이해가 안되................. ㅠㅠ


역시 뭐라도 하나 제대로 알고 있으면 좋은데...
C도 대충,,, JAVA는 더 대충 알고 있으니...


좀 더 자료 검색해서 찾아봐야 겠습니다.



덧. 경우에 따라선 본삭금 걸수 있습니다.
꼬릿말 보기
전체 추천리스트 보기
[본인삭제]레이즈
2015-06-02 10:21:59추천 0
댓글 0개 ▲
[본인삭제]레이즈
2015-06-02 10:22:42추천 0
댓글 0개 ▲
2015-06-02 10:24:13추천 1
비유를 해 드리자면.. 경기도 평택시 세교동과 경기도 오산시 세교동은 다른 동네죠
댓글 0개 ▲
[본인삭제]뜻발그미
2015-06-02 10:24:30추천 1
댓글 0개 ▲
2015-06-02 10:25:23추천 0
이분 최소 korea 패키지의 President 클래스랑 usa 패키지의 President 클래스가 이름이 겹치는데도 컴파일 에러 안난다고 신기해하실분...
댓글 0개 ▲
2015-06-02 10:32:46추천 0
뜻발그미님//
그 말씀은 클래스 내부에 넣는 순간, static이어도 memory가 다른데 생성된다 이 말씀 이시군요.
대충 검색하면 안 나오더라고요; 이곳저곳 검색을 해봤는데요.

레이즈님,  키리사키치토게님, gwangyi님//
제가 이해가 안되는 부분은 static을 붙임으로서 이해가 안되었던 거에요.
이게 안 붙었다면 말씀 하신데로 다른 것이겠죠.
댓글 0개 ▲
2015-06-02 10:35:41추천 1
static 이라고해서 스택 내부에서 모두 같이 할당되는 것이 아니니까요.
static은 영역 범위를 지정할 뿐 딱 한 곳만 잡아서 이야기 하는 것이 아닙니다.
댓글 0개 ▲
2015-06-02 10:42:41추천 0
이거 댓글 주신 것들이 본삭금 걸어야 겠네요;;;;;;;
우헤헤헤헤님// 역시 제가 얕게 알고 있어서 이해가 안되었던 거네요. static도 잘못 알고 있엇던 것 같습니다.
댓글 0개 ▲
2015-06-02 11:10:32추천 0
변수 네이밍은 컴파일러가 각 Java파일을 컴파일할때만 적용됩니다.
각 java파일이 컴파일 되고 나면 a라는 변수명이 아닌 주소 값만 남게 되니
컴파일러 입장에서는 a파일의 a와 b파일의 a는 같은 주소가 아니게 되는 겁니다.
댓글 0개 ▲
Lisp
2015-06-02 16:09:28추천 0
메모리의 문제가 아니라 NameSpace의 문제입니다.
댓글 0개 ▲
2015-06-04 20:06:22추천 0
Lisp님// C++ 할때 그냥 흘겨 지나간 네임스페이스가 여기서 나오네요. ㅎㅎ 결국 Class가 다르면 NameSpace도 다르다는 말씀 이신거죠?
상상속동물님// 물론 네이밍은 컴파일시에만 적용되는데 전 그동안 우헤헤헤헤님께서 언금해주셨던 내용처럼 알고 있던 것이 아니라 static을 하면 정적 메모리 영역의 지정된 위치에 변수가 만들어 지고 이 주소를 같은 이름을 사용하는 static 변수들이 쉐어한다고 알고 있었습니다. 그래서 이상한 궁금증이 생긴 것입니다.
댓글 0개 ▲
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호