일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 소스트리
- 보충필요
- 속성 선택자
- 즐거운 자바
- 김성박
- 상속
- 깃헙
- spring
- 다시보자
- vmin
- jsp
- 다시볼 것
- 즐거운자바
- 가상클래스 선택자
- JavaScript
- 복합 선택자
- nth-of-type()
- 서블릿
- optgroup
- datalist
- 자바
- HTML Templating
- 부스트코스
- EDWITH
- ES6
- vmax
- 가상요소 선택자
- nth-child()
- 웹개발
- 부정 선택자
Archives
- Today
- Total
기억의 DataBase
OOP(Object Oriented Programming) - 객체지향과 Memory 본문
- OOP(Object Oriented Programming) - 객체지향과 Memory
객체지향의 객체들은 Memory에 존재 >> 메모리에 존재하는 객체 Instance
Memory에 올라가기 전에 있는 객체의 틀 Class
※자바스크립트: 클래스 없이 객체가 존재
응집도 : 이름에 관련된 것을 가지고 있는 것 >> 이름만 봐도 내용이 파악되는 것(직관)
운영체제, 자료구조, 알고리즘등을 알아야 직관이 생김
- 자바는 메모리 주소가 없다(C와는 다름)
Reference(참조변수)는 Instance(메모리에 존재)의 주소를 담고 있는 개념이 아님
Reference는 그냥 Instance의 리모콘 같은 것일뿐
- Class는 하나지만, 해당 Class 때문에 Memory가 부족해서 Down 될 수 있다
하나의 Class로 복수개의 Instance를 만들면 Memory가 꽉 찬다
- public static void main(String[] args) - 프로그램 시작점
java 프로그램은 CLASSPATH라는 환경변수로 잡힌 경로에서 Hello라는 클래스를 찾음
ex) 만약 CLASSPATH 값으로 c:/tmp라고 경로를 잡는다면 >> c드라이브 tmp에서 찾음
JVM은 Class를 어디서 찾는가? >> CLASSPATH로 잡혀있는 경로로 찾음
※윈도우는 대소문자 구분이 없지만, 리눅스는 있기 때문에 구분을 잘해줘야 함
(CLASSPATH는 의도적으로 대문자로 쓴 것)
- static >> 메소드에 static이 있는 경우(특별 대우)
static이 붙어있는 클래스나 메소드는 실행가능하도록
new 연산자로 Instance화 하지 않아도, Memory에 올려줌(프로그램은 메모리에 올라가야 실행이 됨)
ex) cmd > java Hello
만약 Hello Class가 다른 메소드를 가지고 있고,
해당 메소드에 static이 붙어 있으면 그 메소드도 실행가능하도록 메모리에 올릴 것
JVM은 메모리에 올라간 클래스의 메소드 중에서 main(String[])을 찾음
main 메소드를 찾아서 한줄한줄 실행
- main(String[] args)
JVM이 문자열(String[] args)을 넣어줌
main메소드를 실행할 때 String을 발견
JVM은 String클래스를 찾아서 읽음
String이 static한 것들을 가지고 있는지 봄
>> Instance보다 Static이 먼저 메모리에 올라감(클래스가 발견되자마자 올라가므로)
- System.out.println("Hello");
System을 발견 >> System CLASS의 필드에는 in, out 등이 static으로 되어 있음
class System{
static PrintStream out= new aaa();
public void String println();
}
'Java' 카테고리의 다른 글
생성자 (0) | 2019.01.17 |
---|---|
예외처리(Exception) (0) | 2019.01.17 |
객체지향 (0) | 2019.01.16 |
package(디렉토리)와 중요 package (0) | 2019.01.14 |
JAVA Start (0) | 2019.01.11 |