안녕하세요  
오늘은 객체지향프로그래밍 2번째 를 간단하게 설명 드리겠습니다. 

3-1 JVM 메모리 구조 

1. 메서드 영역 
- 프로그램 실행 중 어떤 클래스가 사용되면 , JVM 은 해당클래스의 클래스파일을 읽어서  
분석하여 클래스에 대한 정보를 이곳에 저장한다.  
이때 , 그 클래스의 클래스 변수도 이영역에 함께생성된다. 


  2  .힙 

- 인스턴스가 생성되는공간, 프로그램 실행 중 생성되는 인스턴스는 모두 이곳에 생성된다. 
즉, 인스턴수 들이 생성되는 공간이다. 

3.호출스택 

 - 호출스택은 메서드의 작업에 필요한 메모리 공간을 제공한다. 메서드가 호출되면, 
 호출스택에 호출된 메서드를 위한 메모리가 할당되며 , 이 메모리는 메서드가 작업을 
 수행하는 동안 지역변수들과 연산 중간결과 등을 저장하는데 사용한다. 
그리고 그 메서드가 작업을 마치면  할당되었던 메모리공간은  
반환되어 비워진다. 


3-1. 기본형 매개변수와 참조형 매개변수 

기본형 매개변수 - 변수값을 읽기만 할 수 있다.(read only) 
참조형 매개변수 - 변수값을 읽고 변경할 수 있다.(read & write) 

4-1. 재귀호출 
 1. 메서드의 내부에서 메서드 자신을 다시 호출하는 것을 '재귀호출' 이라고 하고, 
재귀호출을 하는 메서드를 '재귀 메서드' 라고한다 
~~~~ 
package 삼월이십일일; 

public class FactorialTest { 
public static void main(String args[]) { 
int result = factorial(4); 

System.out.println(result); 

static int factorial(int n){ 
int result =0; 

if(n ==1) { 
result =1; 
}else { 
result = n * factorial(n-1); // 다시 메서드 자신을 호출한다 

return result; 



~~~~ 

~~~~ 
package 삼월이십일일; 

public class FactorialTest2 { 
static long factorial(int n) { 
if(n<=0 || n>20) return -1;  
if(n<=1) return 1; 

return n* factorial(n-1); 


public static void main(String args[]) { 
int n =21; 
long result = 0; 

for(int i =1; i<n; i++){ 
result = factorial(i); 

if(result == -1){ 
System.out.printf("유효하지 않은 값 입니다. +(0<n<=20) :%d%n" ,n); 
break; 

System.out.printf("%2d!=%20d%n",i,result); 



~~~~ 


~~~~ 

package 삼월이십일일; 

public class PowerTest { 
public static void main(String args []) { 
int x= 2; 
int n= 5; 
long result =0; 

for(int i =1; i<=n; i++) { 
result += power(x,i);  

System.out.println(result); 

static long power(int x, int n) { 
if(n==1) return x; 
return x*power(x, n-1); 


//제귀메서드 
~~~~ 
4-1 오버로딩이란 ? 
-한클래스 내에 같은 이름의 메서드를 여러 개 정의하는것을 '메서드 오버로딩'  or '오버로딩' 
 이라고 한다. 

- 오버로딩의 조건? 
1. 메서드 이름이 같아야한다. 
2. 매개변수의 개수 또는 타입이 달라야 한다. 

이상으로 여덞번째 개발일지를 마치겠습니다. 



'Java' 카테고리의 다른 글

10. 열번째 개발 공부  (0) 2018.03.28
9. 아홉번째 개발 공부  (0) 2018.03.28
7. 일곱번째 개발 공부  (0) 2018.03.28
6.여섯번째 개발 공부  (0) 2018.03.28
5. 다섯번째 개발 공부  (0) 2018.03.28

+ Recent posts