본문 바로가기

전체 글

자바의 정석 - 6.4 JVM의 메모리 구조 6.4.1 JVM 구조 JVM은 메서드 영역, 힙 영역, 호출스택 영역으로 구분할 수 있다. 6.4.2 메서드 영역(method area) 어떤 클래스가 사용되면, JVM은 해당 클래스파일(.class)의 파일을 읽어 분석하여 클래스에대한 정보를 메서드 영역에 저장한다. 이때, 클래스 변수도 메서드 영역에 로딩되어 모든 인스턴스가 클래스 변수를 공유한다. 6.4.3 힙 영역(heap area) 프로그램 실행중 생성되는 인스턴스가 생성되는 공간 인스턴스 변수들이 생성되는 공간 각 인스턴스는 힙 영역안에서 독립적인 공간을 갖는다. 6.3.5 호출스택(call stack, execution stack) 작업에 필요한 메모리 공간제공 지역변수(매개변수 포함)및 중간 연산 결과를 저장하는데 사용 작업을 마치면 메.. 더보기
자바의 정석 - 6.3 메서드 6.3.1 메서드란 특정 작업을 수행하는 일련의 문장을 하나로 묶는 것 수학의 함순와 달리 입력과 출력이 없을 수 있다. 내부적 과정을 몰라도 되기 때문에 '블랙박스(black box)'라 한다. 6.3.2 메서드를 사용하는 이유 높은 재사용성(reusability) 한번 잘 만들어 놓으면 다른 프로그램에서도 사용 가능하다. 중복된 코드 제거 중복된 코드를 하나의 메서드로 묶어 전체적인 코드의 양을 줄일 수 있다. 프로그램의 구조화 메서드를 작업 단위로 하여 프로그램을 구조화 시킨다. 6.3.2 메서드의 선언과 구현 메서드는 선언부와 구현부로 나눌 수 있다. 6.3.3 메서드 선언부(method declaration, method header) 반환 타입, 메서드 이름, 매개변부 선언으로 구성되어 있다... 더보기
자바의 정석 - 6.2 변수 6.2.1 변수의 종류 클래스 변수 멤버변수 중 static이 붙은 변수 인스턴스 변수 멤버변수 중 static이 붙지 않은 변수 지역변수 메서드 내에 정의된 변수 변수의 종료 선언위치 생성 시기 클래스 변수 클래스 영역 클래스가 메모리에 올라갔을 때 인스턴스 변수 클래스 영역 인스턴스가 생성되었을 때 지역변수 메서드 생성자 6.2.2 인스턴스 변수(Instance variable) 클래스의 인스턴스가 새로 생성될 때 마다 만들어진다.(new) 인스턴스는 독립적인 저장공간을 가지므로 서로 다른 값을 가지게 된다. 인스턴스마다 고유한 상태를 유지해야하는 속성의 경우, 인스턴스 변수로 선언한다. 6.2.3 클래스 변수(class variable) 변수 앞에 static을 붙여 선언 참조변수 선언이나 객체의 .. 더보기
자바의 정석 - 6.1 객체지향언어 6.1.1 객체지향언어 '실제 세계는 사물(객체)로 이루어져 있으며, 발생하는 모든 사건은 사물간의 상호작용이다' 관점으로 탄생 코드 간에 서로 관계를 맺어, 유기적인 프로그램을 구성 6.1.2 장점 코드의 재사용성이 높다. 기존 코드를 이용하여 새로운 코드 작성 가능 코드의 관리가 용의하다. 코드간의 유기적 관계로 적은 노력으로 쉽게 코드를 작성할 수 있다. 신뢰성이 높은 프로그래밍을 가능하게 한다. 제어자와 메서드를 통해 데이터를 보호하고 코드의 중복을 제거하여 오류 방지 6.1.3 클래스와 객체 클래스 클래스의 정의 : 클래스란 객체를 정의해 놓은 것이다. 클래스의 용도 : 클래스는 객체를 생성하는데 사용된다. 객체 객체의 정의 : 실제로 존재하는 것. 사물 또는 개념 객체의 용도 : 객체가 가지고.. 더보기
자바의 정석 - 5.3 가변 배열 5.3.1 가변 배열 초기 생성시에 열의 개수를 지정하지 않음 추후에 각기 다른 배열을 생성함으로써 다른 길이의 배열 선언 int[][] score = new int[5][]; socore[0] = new int[4]; socore[1] = new int[3]; socore[2] = new int[2]; socore[3] = new int[2]; socore[4] = new int[3]; int[][] score = { {100, 100, 100, 100} ,{20, 20, 20} ,{30, 30} ,{40, 40} ,{50, 50, 50} } 더보기
자바의 정석 - 5.2 다차원 배열 5.2.1 다차원 배열 2차원 이상 배열 메모리의 용량이 허용하는 한, 차원 제한은 없다. 5.2.2 2차원 배열 선언 타입[][] 변수이름 int[][] score; 타입 변수이름[][] int score[][]; 타입[] 변수이름[] int[] score[]; 예제(4x3 배열 선언) int[][] score = new int[4][3]; /* score[0][0] score[0][1] score[0][2] score[1][0] score[1][1] score[1][2] score[2][0] score[2][1] score[2][2] score[3][0] score[3][1] score[3][2] */ 5.2.3 2차원 배열 초기화 생성과 동시에 초기화 가능 int[][] arr = new int[].. 더보기
자바의 정석 - 5.1 배열 5.1.1 배열 같은 타임의 여러 변수를 하나의 묶음으로 다루는 것 int[] score = new int[5]; 💡 변수 score은 참조 변수일 뿐 값을 저장하기 위한 공간은 아니다. 5.1.2 배열 선언 및 생성 배열 선언 방법 // 방법 1) 타입 뒤에 배열 선언 int[] score; // 방법2) 변수명 뒤에 배열 선언 int score[]; 배열의 생성 = new int[length]; 💡 배열 선언시 타입의 기본값(default)로 초기화됨. int의 경우 기본값 0으로 초기화. 객체의 경우 null로 초기화 5.1.3 배열의 인덱스 생성된 각 저장공간을 '배열요소(element)'라 하며, '배열이름[인덱스]'의 형식으로 접근 인덱스는 상수 대신 변수나 수식도 사용 가능 score[i];.. 더보기
자바의 정석 - 4.7 이름을 붙인 반복문 4.7.1 이름을 붙인 반복문 중첩 반복문에 이름을 붙임 하나 이상의 반복문을 벗어나거나 반복을 건너 뛸 수 있음 Loop_1: for(int i=0;i 더보기