Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- regex_search
- c3 축 없애기
- telegraf
- semanage
- python os
- InfluxDB
- 정규식 문자열 출력
- gcc regex
- c++ 정규식
- python subprocess
- c3 초
- 백준
- CentOS7
- python popen
- c3 step graph
- 1697
- c3 second
- snmp
- selinux port 등록
- c3 축 가리기
- gcc 업데이트
- grafana dashboard
- linux시간으로 변경
- centos pyhon 설치
- influxdb 설치
- 정규식 컴파일
- snmp test
- subporcess path
- g++ 업데이트
- 정규식 활용
Archives
- Today
- Total
리셋 되지 말자
클래스 멤머 메서드의 정적화 본문
소스 코드
분명 펭귄 클래스를 인스턴스화 하여 객체참조변수인 뽀로로로 test() 메서드를 실행했는데 디버그의 스택 정보를 보면 실행이 '펭귄.test()'로 되어있는것을 확인할 수 있다.
JVM의 정적화
만약 펭귄 배열 100칸을 만든다고 하면 힙 메모리 영역에 똑같은 test()메서드를 100개 만드는 것은 메모리 낭비라고 할 수 있다. 그래서 JVM은 지능적으로 객체 멤버 메서드 test()를 스태틱 영역에 단 하나만 보유한다.
그리고 눈에 보이지 않지만 test() 메서드를 호출할 때 객체 자신을 나타내는 this 객체 참조 변수를 넘긴다.
즉, 위의 코드는 JVM에 의하여 아래의 코드로 변경된다고 생각하면 된다.
package stack01;
class 펭귄 {
static void test(펭귄 펭귄참조변수) {
System.out.println("Test");
}
}
public class Driver{
public static void main(String[] args) {
펭귄 뽀로로 = new 펭귄();
펭귄.test(뽀로로);
}
}
맞는건지 확실하지 않음. 펭귄참조변수 자리에 this 키워드를 쓰면 에러가 남.
(애초에 test() 메서드가 static으로 변경되는데 this 키워드를 못 쓰는게 맞는듯. 그냥 이런식으로 생각해라인 코드임!)
'Java(폐지) > Java 공부' 카테고리의 다른 글
super 키워드 (0) | 2020.07.20 |
---|---|
this 키워드 (0) | 2020.07.20 |
java 8 람다 (0) | 2020.07.20 |
interface 키워드와 implements 키워드 (0) | 2020.07.20 |
package 키워드 (0) | 2020.07.20 |
Comments