임경화
2006-06-13 12:38:31.0
7
8112

(string) 과 ToString()의 차이점은 먼가요?


안녕하세요.. 또 다시 이렇게 질문을 ...... *^^*

 

세션에 session.getAttribute("user_name") 이러한 값이 있다고 했을때요...

이걸 특정 변수에 넣어둔후 모든 페이지에서 사용하려고 하는데요...

타입이 객체기 때문에 형변환을 해야 하잖아요... 방법은 두개가 있는데..

 

1. String user_name = session.getAttribute("user_name").toString();

2. String user_name = (String)session.getAttribute("user_name");

 

이렇게 두개가 있는데 둘의 차이점을 모르겠습니다...

그런데 한가지 틀린거는 만약에 세션값이 null 일경우 1번은 NullPointerExcep

tion이 발생하고 2번은 그냥 null 그대로 값을 받더라구요...

만약 제대로 값이 있을때는 둘다 같은 결과를 가져오고요...

 

세션값을 가져오는 부분이라 로그인 하지 않는 이상 null이 들어가 있기

때문에 1번을 썼을경우 NullPointerException이 발생해서 1번을 쓰는것은

안될것 같고...... 2번을 써야 할것 같은데.... 둘의 차이점을 모르겠습니다..

 

자세한 설명좀 부탁드리겠습니다...

항상 고수님들의 많은 도움을 받는데.. 감사 드립니다...

0
0
  • 답변 7

  • 0~0
    2006-06-13 13:08:58.0
    1번의 경우는 String객체에 toString()메소드를 사용해서 다시 String객체를 가져오는 격이되어 낭비가 됩니다. 어차피 가져오는 객체는 String객체이므로 그냥 2번을 사용하세요.
    2번은 가져오는 객체가 String객체임을 컴파일러에 명시하는 것 뿐입니다. 코딩상의 낭비가 없죠. 자바입문서에서 타입캐스팅부분을 한번 읽어보세요...
    0
  • 0~0
    2006-06-13 13:15:06.0
    사족.
    session.getAttribute("user_name")메소드는 어떤 클래스타입의 객체도 전달할 수 있도록 최상위 클래스인 Object클래스타입으로 객체를 돌려줍니다. 그래서 컴파일러에게 이놈이 사실은 'String객체야' 라고 알려주어야지 String객체로 사용할 수 있습니다. 이걸 타입캐스트라고 합니다.
    0
  • 임경화
    2006-06-13 14:00:20.0
    0~0 님 정말 자세하고도 쉬운설명 감사 드립니당... *^^*
    한가지만 더요...

    그러면 1번은 String객체의 toString() 메소드를 통해 String객체를 반환을 받는 거고...
    즉, 해당객체를 String객체로 변환에서 받는 것이고..
    2번은 단순히 String 객체임을 컴파일러에게만 명시해 주는거라는 말씀 이신가요?

    그리고,
    그러면 String.valueOf()와의 차이점은 어떻게 되는지요??
    0
  • 0~0
    2006-06-13 14:20:10.0
    1번
    Object obj = session.getAttribute("user_name");
    String user_name = obj.toString();

    2번
    Object obj = session.getAttribute("user_name");
    String user_name = (String)obj;

    위와 같이 일단 Object타입으로 객체를 받습니다.
    그 뒤에 다시 toString()메소드를 사용하느냐, 아니면 타입캐스트만 하느냐의 차이입니다.
    실제 타입은 String인 경우에, String타입의 객체에 toString()을 해봤자 다시 String객체를 받을 뿐이므로 toString()을 사용할 필요가 없습니다. 그냥 컴파일러에게 '얘가 사실은 String객체야' 라고 알려주면 그만이죠.^^;

    Object obj = ... 에서
    String.valueOf(obj)는 'obj.toString()'의 값을 리턴합니다. 뻘짓이죠.하하;;
    0
  • 임경화
    2006-06-13 14:42:04.0
    아~~ 그렇군요...
    0~0 님 정말정말 감사드립니다... 정말 자세하고 쉽게 설명해 주셨네염... *^^*
    다시한번 감사 드립니다.. (--)(__)(--) 꾸~~~ 우벅 *^^*
    0
  • 자바공부
    2006-06-13 15:42:26.0
    자바 공부가 필요하실듯.....
    0
  • 세류
    2006-06-13 16:09:26.0
    맞아여 =ㅅ= 자바공부가!!
    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.