TopGun
238
2019-02-19 00:27:55
5
579

Null 넣는 이유는 무엇일까요?


소켓 공부를 하는데 null을 왜 넣는지 잘 모르겟습니다.

TcpClient clientSocket = null;

clientSocket를 초기화 시켜준다라고 이해를 하면될까요 ?

0
0
  • 답변 5

  • ONLINE
    331
    2019-02-19 00:59:11
    아직 초기화를 한건 아니구요. 내가 원하는 위치에 초기화를 할수 있도록 미리 공간을 비워두는 행위라고 보면 되겠죠.
    주로 클래스 내에서 객체를 어느 위치에서 사용할 수 있도록 멤버변수에 미리 선언할때 사용됩니다.
    특정 메소드가 호출되면 초기화를 진행하여 실제 주소값을 할당 받겠죠.

    1
  • 라이언포제이
    134
    2019-02-19 07:53:15

    자바에서 지역변수가 실제 메모리에 할당되는 시점은 지역변수가 초기화될때입니다.

    null도 하나의 데이터로 취급하므로 메모리에 할당되겠죠.

    0
  • LichKing
    14k
    2019-02-19 09:35:22

    변수 선언과 동시에 넣는 값을 초기화라고 하죠.

    null로 초기화를 한게 맞습니다.

    지금 단순히 변수선언하는구문만 딱 들고오셨는데 코드 전문을 보면 저 코드는 메서드내에 선언된 지역변수일 가능성이 높아보입니다.

    자바에서 지역변수는 반드시 명시적 초기화를 해줘야하기때문에 null로 하기도합니다. 아마 try-catch랑 묶여있을것같은데.. 코드를 저것만 들고오셔서 더 말씀드리긴 힘들고 여튼 이렇습니다.

    0
  • 앙앙이
    3k
    2019-02-19 09:43:09

      (1) 아마도 선언부 객체 초기 값으로 null 을 넣는것이 습관화 되어 있어서 일겁니다. 제 경우에는 대부분 습관입니다. 객체 생성할때 에러를 던지지 않는다면 선언부에서 객체를 바로 생성하여 값으로 직접 넣지만 습관이 무섭습니다.


    (2) 객체 생성할때 에러를 던질 수 있는 경우 예외 잡아 로그를 남기기 위해서

    선언부에서 null 로 초기화 한후 생성자에서 값을 넣을 수 있습니다.


    (3) null 을 활용하는 특수한 경우가 있을 수 있습니다.

    null 포인트 에러 때문에 최근에 사용한적이 없어 잘 기억나지 않지만

    초짜 시절에는 사용한적이 있습니다. 저 같은 경우 null 포인트에 호되게 당해서 그런지 사용을 권장하고 싶지 않네요. 하지만 절대적인것이 없으니 잘 판단해서 조심스럽게 잘 사용하시기 바랍니다.

    0
  • TopGun
    238
    2019-02-19 23:11:49

    @라이언포제이 @LichKing @앙앙이 님 감사합니다 ! 덕분에 좋은 공부가 되었습니다.

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.