본문 바로가기
  • Coding & Book
학습단/JAVA 학습단

5. 혼공자 5일차(참조 타입)

by 루이3 2023. 7. 7.

5일차

 

1. 참조 타입이란

  • 번지를 통해 객체를 참조한다는 뜻입니다.

 

2. 메소드 영역

  • JVM 이 실행중인 클래스와 메소드의 정보를 저장하는 영역입니다.
  • JVM이 시작할때 생성되고 스레드가 공유하는 영역입니다.

 

3. 힙영역

  • 동적으로 생성된 객체와 배열이 할당되는 영역입니다.

 

4.JVM스택 영역

  • 메소드를 호출하면 프레임을 추가하고 종료되면 제거하는 영역입니다.

 

5. null

  • 아무런 객체 참조를 가지고 있지 않다는 것 입니다.
  • 객체를 초기화 할때 사용할 수 있습니다.

 

6.String

  • 문자열은 String 객체로 생성되고 변수는 String 객체를 참조합니다.
  • 초기값으로 null 값을 대입할수 있습니다.

 

7. new 연산자

  • 힙 영역에 새로운 객체를 만들때 사용합니다.

 

예시)

package sec05.exam01;

public class StringEqualsExample {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String strVar1 = "전우치";
		String strVar2 = "전우치";
		
		if(strVar1 == strVar2) {
			System.out.println("같다.");
		} else {
			System.out.println("다르다.");
		}
		
		
		String strVar3 = new String("전우치");
		String strVar4 = new String("전우치");
		
		if(strVar3 == strVar4) {
			System.out.println("같다.");
		} else {
			System.out.println("다르다.");
		}
	}

}

 

8. 배열

  • 동일한 데이터 타입을 연속된 공간에 나열하여 각데이터에 인덱스를 사용하여 접근할수 있습니다.
  • 사용하기 위해서는 배열 변수를 선언해야 합니다.
  • 배열 변수는 참조변수에 해당됩니다.
  • 배열을 생성하기 위해 값 목록을 이용하거나 new 연산자를 사용하면 됩니다.

 

package sec05.exam01;

public class ArrayCreateByValueListExample2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int [] scores;
		scores = new int[] { 10,20,100};
		int sum1 = 0;
		for(int i=0; i <3; i++) {
			sum1 += scores[i];
		}
		System.out.println("총합은: " + sum1);
	}
}

 

9. 배열의 길이

  • 배열의 길이를 얻기 위해 length 필드를 읽습니다.
package sec05.exam01;

public class ArrayLengthExample {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int[] scores = { 83, 90 ,97 };
		int sum = 0;
		for(int i=0; i<scores.length; i++) {
			sum += scores[i];
		}
		System.out.println("총합은: " + sum);
	}

}

 

 

10. 다차원 배열

  • 배열 요소가 다시 배열인 배열구조를 가지는 배열입니다.
  • 일반적인 형태로 2차원 배열이 있습니다.
package sec05.exam01;

public class ArrayInArrayExample {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int[][] javaScores = { {95,80},{15,20},{35,40}};
		for(int i=0; i < javaScores.length; i++) {
			for(int j=0; j<javaScores[i].length; j++) {
				System.out.println("javaScores["+i+"]["+j+"]="+javaScores[i][j]);
			}
		}
	}

}

 

 

11. 객초를 참조하는 배열

  • 배열의 각요소가 객체를 참조하기 위한 변수로 사용됩니다,
package sec05.exam01;

public class ArrayReferenceobjectExample {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String[] strArray = new String[3];
		strArray[0] = "java";
		strArray[1] = "java";
		strArray[2] = new String("java");
		
		System.out.println(strArray[0] == strArray[1]);
		System.out.println(strArray[0] == strArray[2]);
		System.out.println(strArray[0].equals(strArray[2]));
	}

}

 

 

12. System.arraycopy()로 복사하기

  • 배열을 복사시키고 복사되지 않는 것은  null 값이 유지됩니다.
package sec05.exam01;

public class ArrayCopyExample {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String[] oldStrArray = {"java","array","copy"};
		String[] newStrArray = new String[5];
		
		System.arraycopy(oldStrArray, 0, newStrArray, 0 ,oldStrArray.length);
		
		for(int i=0; i<newStrArray.length; i++) {
			System.out.print(newStrArray[i] + ", "); 
		}
	}

}

 

 

열거타입

  • 일련의 상수 값을 정의 하는 특별한 데이터 타입 입니다.
  • 예시로 날짜나 요일이 있습니다.
package sec05.exam01;

public enum Week {
	MONDAY,
	TUESDAY,
	WEDNESDAY,
	THURSDAY,
	FRIDAY,
	SATURDAY,
	SUNDAY
}

 

 

 


참조타입부터 난이도가 올라가네요.. 주말에 복습하고 부족한부분 채우겠습니다.