[Java]참조타입

박진우·2022년 9월 6일
0

[Java]자바의 기초

목록 보기
5/16

참조타입

메소드

위 사진을 풀어 말하면 다음과 같다

public static return_type 메소드_이름(formal parameter){
	실행할 코드
    return; void 일 경우에는 return이 없다
}
int z = 메소드_이름(actual parameter);

생소 할 만한 단어인 formal parameter , actual parameter 는 각각 함수 안에서 사용되는 파라미터, 함수를 호출할때 사용되는 실제 값을 가진 파라미터이다.

또한 [메소드_이름(formal parameter)] 이것들을 메소드 시그니쳐 라고한다.

Method 사용 Flow(흐름도)

사용 흐름도의 사진은 메소드가 호출되고 호출된 시점에서 메소드 내부에서 연산뒤에 결과값을 return하는 과정을 보여준다.

Activation Record (Activation Framework)

method를 호출핛 때 마다 JVM이 메모리에서 stack 영역에 생성하 는 정보 (메소드에서 선언핚 변수 젂체 정보)
Stack 영역을 call stack, execution stack, runtime stack, machine stack등으로 부름
Stack 의미 : LIFO(Last In First Out),
나중에 입력된 것을 맨 처음으로 읽음(삭제)
Method내 선언된 변수들 중 마지막에 선언된 변수가 stack 상단에 위치

위 사진은 사용 흐름도의 사진과 같이 보면 좋은데 스택에 메인 메소드가 올라가고 그 후에 메소드를 호출하면 호출된 메소드에서의 결과 값이 메인 메소드로 return되고 호출된 메소드는 사라진다. 그리고 메인 메소드가 실행이 끝나면 메인메소드 또한 마찬가지로 스택에서 사라진다.

데이터 타입의 분류

각 변수의 메모리 사용

위의 사진처럼 기본 타입의 변수는 스택영역에 그대로 변수값이 저장되지만 참조타입의 변수의 경우에는 힙 영역에 변수값이 저장되며 메모리에는 해당 힙 영역의 주소값이 저장된다.

String 타입

  1. 문자열 리터럴 동일하다면 String 객체 공유
  2. new 연산자를 이용핚 String 객체 생성 힙 영역에 새로운 String 객체 생성 String 객체를 생성한 후 번지 리턴

				 String name1 = new String("신용권");
				 String name2 = new String("신용권");
                //각기 다른 객체를 생성
				
                 System.out.println(name1 == name2);
                 //각기 다른 객체를 가지고 있기 때문에 false를 출력
                 System.out.println(name1.equals (name2));
                 //힙메모리에 있는 값을 비교하기 때문에 true출력
				 String name3 = "신용권";
                 String name4 = "신용권";
                //문자열 리터럴이 같아 객체를 공유 
                   System.out.println(name3 == name4);
                 //객채를 공유하기 때문에 true 출력
                 System.out.println(name3.equals (name4));
                 //힙메모리에 있는 값을 비교하기 때문에 true출력

Array 타입

특정 타입의 원소가 연속적으로 메모리에 할당된 데이터 타입을 말함
int arr[] =>
1) int [] : 배열 타입(배열 원소의 데이터 타입이 정수인 배열)
2) arr : 변수명
3) {10,20,30,40} : 배열의 초기값, 각각의 데이터를 배열 원소의 데이터로 설정한다는 의미
4) arr[index] => index는 0부터 시작한다.

	//배열 선언의 방법 1
    int[] arr = {10,20,30,40};
    //벼열 선언의 방법 2
    int[] arr4 = new int[4];	
		arr4[0] = 10;
		arr4[1] = 20;
		arr4[2] = 30;
		arr4[3] = 40;
    //향상된 for문이나 일반적인 for문을 통해 출력가능
    for(int element : arr) {
				System.out.println(element);
			}
     for(int i = 0;i < arr.length; i++) {
				System.out.println(arr[i]);
			}

2차원 배열

	//2차원 배열의 선언
	String[][] gPerson = {
				{"1","박철호","서울","회사원"},
				{"2","김의실","경기","공무원"},
				{"3","오수철","수원","연예인"},
				{"4","수철","수원"}
		};
   //2차원 배열 또한 마찬가지로 향상된 for문을 통해 출력 가능
   	for(int[]i: gPerson) {
			for(int j:i) {
				System.out.println(j+" ");
			}
			System.out.println();
		}

강의를 듣을후 느낀점

이번 강의는 실습이 많아 중요하다고 생각한 것들만 포스팅을 하였다.
추후의 포스트에서 더 각각을 더 자세히 포스팅 할 예정이다.

profile
개발자를 꿈꾸는 사람입니다

0개의 댓글