레퍼런스 데이터형

2010. 10. 7. 00:03프로그래밍/Java

public class equalt
{
 public static void main(String[] args)
 {
  String str1="Hello";
  String str2=new String("Hello");
  String str3=str1;
  String str4=str2;

  System.out.println("==관계");
  System.out.println("str1==str1 :" + (str1==str1)); //같은 변수이므로 같은 결과가나옴;
  System.out.println("str1==str2 :" + (str1==str2)); //가리키는 문자열의 내용은 같지만 저장하고 있는 메모리 주소는 다름;
  System.out.println("str1==str3 :" + (str1==str3)); //str3은 str1을 복사한 변수;
  System.out.println("str1==str4 :" + (str1==str4)); //str4는 str2를 복사한 변수;
  System.out.println();

  System.out.println("Equal관계");
  System.out.println("str1 equal str1 :" + (str1.equals(str1))); //같은 변수이므로 같은 결과가나옴;
  System.out.println("str1 equal str2 :" + (str1.equals(str2))); //저장하고 있는 메모리주소는 다르지만 가리키는 문자열은 같음;
  System.out.println("str1 equal str3 :" + (str1.equals(str3))); //str3은 str1을 복사한 변수;
  System.out.println("str1 equal str4 :" + (str1.equals(str4))); //str4는 str2를 복사한 변수;
  System.out.println();
 }
}


' ==은 메모리의 값을 비교한다.; '

' equals는 메모리에저장된 주소가 가리키는 값을 비교한다.; '

*****************************************************************************

기본 데이터형이외의 다른 변수들은 모두 레퍼런스형으로 처리한다.
ex) String, Date,Random,배열 등....

레퍼런스형은 메모리에 값을 지정하는것이 아니라 값을 가리키는 주소값을 지정한다.

기본데이터형은 메모리에 값을 직접 지정한다.


'프로그래밍 > Java' 카테고리의 다른 글

if문  (0) 2010.10.09
키보드로부터 문자 입력받기  (0) 2010.10.07
String 클래스와 메소드  (0) 2010.10.07
Random() - 난수발생  (0) 2010.10.06
Calendar - 시스템에서 시간정보얻어서 출력  (0) 2010.10.06