본문 바로가기
국비지원/JAVA

[JAVA] 12-1. Garbage Collecting와 Package / 기본타입과 참조타입

by cosmog 2022. 10. 6.
반응형
Garbage Collecting (쓰레기 수집기)
  • new로 생성한 객체들을 다 쓰고 이후에 해제시키는 방법이 없기때문에 가비지 컬렉터를 사용해서 자동으로 삭제되도록한다. (마치 2종보통과 같음 auto임)
  • 자바에만 있는 특별한 기능이다.

new pen을 일억번 하게 되어도 에러가 안난다. 자동으로 지워주면서 공간을 확보해 주기 떄문이다.
=> new로 만들기만 하면되고 가비지 컬렉터가 알아서 객체 해제를 해주고 있다.

 

패키지(Package)
  • 패키지는 폴더와 같다.
    • JRE system Library안에 사용할수 있는 엄청난 패키지들이 있다.

다른 패키지에 있는 클래스를 사용할 때에는 아래와 같이 import작업을 해주어야 한다.

다른 패키지에 있는 클래스를 사용시.. import작업 해주어야 한다.

*을 사용해 위에 아래와 같이  Apple과 Banana ...등등 pac.abc 패키지 않에 있는 모든 클래스를 한번에 사용가능하도록 import 해줄 수 있다.

모든 클래스 import

 

기본타입 vs 참조타입
기본타입 - 실제 값을 저장
참조타입 - 주소값을 저장.

stack에는 변수들에 선언한 값들이 저장
heap에는 객체를 선언했을 때 주소값이 저장.

String == 비교가 안되는 이유

=> 주소 값을 비교하기 때문에
값은 같아도 주소값은 다르므로 계속 다르다고 나온다.
따라서 .equals를 사용해서 값을 비교하는 방법을 사용해야한다.

package str_ex;

public class StrEquals {
	
	public static void main(String[] args) {
		
		String str1 = "홍길자";
		String str2 = "홍길자";
		String str3 = new String("홍길자");
		
		System.out.println(str1);
		System.out.println(str2);
		System.out.println(str3);
		
		System.out.println(str1 == str2); // true
		System.out.println(str2 == str3); // false
		
		/*
		 * str1 == str2의 경우,
		 * 같은 클래스 내부에서 문자열을 선언하면 동일한 위치를 참조한다 (동일한 문자일 경우)
		 * 하지만, 다른 클래스에서 넘어오는 String은 다른 위치를 가지게 됩니다.
		 * 
		 * 그래서 문자열 비교시에는 == 대신에 String클래스가 제공해주는 equals()를 사용한다.
		 */
		
		System.out.println(str1.equals(str3)); // true
	}

}

 

반응형