Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
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 31
Archives
Today
Total
관리 메뉴

우주코딩

레퍼런스 리턴하기, 재귀 호출, 메인 메서드와 아규먼트 본문

자바 본 강의

레퍼런스 리턴하기, 재귀 호출, 메인 메서드와 아규먼트

우주코딩 2021. 7. 16. 17:44

레퍼런스 리턴하기

리턴하는 경우 swap메서드 결과를 MyObject 값으로 리턴하도록 만든다
main() 함수의 변수 값을 아규먼트로 받는 swap메서드를 호출하고 swap메서드는 MyObject 값으로 리턴하도록 구현한다.

main(String[] args){
    int a = 100;
    int b = 100;

    MyObject ref = swap(a,b);
}
static MyObject swap(int a, int b){
    MyObject ref = new MyObject();
    ref.a =b; // 파라미터로 받은 int b값을 MyObject 명령으로 생성한 int a의 값에 넣어라.
    ref.b =a; // 파라미터로 받은 int a 값을 MyObject 명령으로 생성한 int b의 값에 넣어라.
    return ref; // 이 MyObject 설계도의 명령으로 생성한 ref 주소를 main 함수로 리턴한다.
}
static class MyObject{
    int a;
    int b;
}

재귀호출

메서드 안에서 같은 메서드를 호출하는 것.
수학식을 코드를 표현하기가 편하다.
코드가 간결하다.
그러나 반복문을 사용하는 경우보다 메모리를 많이 사용한다.
-> 스택오버플로우가 일어날 가능성이 있다.

  • 스택오버플로우
    JVM 스택 메모리가 꽉 차서 더이상 메서드 실행을 위해 로컬 변수를 만들 수 없는 상태이다.
    호출하는 메서드의 로컬 변수가 클 때는 스택 메모리가 빨리 찬다.
    메서드의 호출 횟수가 아닌 로컬변수의 크기가 영향을 준다.

main() 메서드

메인 메서드는 반드시 public static void main 으로 String 주소 값을 저장해야한다. 파라미터 변수명은 어떤 것으로 설정해도 상관없다.

프로그램 아규먼트

프로그램을 실행할 때 넘겨주는 값

스트링 배열에 담겨서 main()를 호출할 때 넘어온다.
프로그램 아규먼트는 공백 (space, tab, newLine)을 기준으로 문자열을 잘라서 String 배열에 담는다.
아규먼트가 없으면 빈 배열이 넘어온다.

JVM은 아규먼트의 개수만큼 문자열 배열을 만들어 저장한다.

JVM 아규먼트

-JVM 에게 전달하는 값
형식 : java -D이름=값 -D이름=값 -D이름=값 ... class명

이름과 값을 지정하는 구간을 JVM 아규먼트라고한다.
이름, 값 = PROPERTY
이 값을 꺼낼 땐 
System.getProperty(이름)

값을 리턴한다.

jvm에 저장된 전체 프로퍼티 목록 가져오기

  • JVM의 전체 프로퍼티 목록 가져오기
    java.util.Properties props = System.getProperties();
Comments