lemonssom
160
2019-06-12 20:05:09
11
592

자바 공부하려면 어떤 책을 보아야할까요?


안녕하세요!

요즘 자바 개발을 하려는 자바 개발자입니다.

자바..를 쓸 줄 알고 이걸로 개발할 줄도 알긴 하는데,

자바에서 string과 stringbuffer의 차이가 뭔지

메모리 관리는 어떻게 되고 있는지 등의 질문을 받으면

말문이 탁 막힙니다.

그래서 자바의 심화적인? 부분을 좀 공부하려고하는데

어떤 책을 읽어야 도움이 될지요?

자바의 신, 자바의 정석 등의 책을 찾아보긴했는데

제가 원하는 내용이 담겨있을지 잘 모르겠어서 개발 선배님들께 질문 드립니다.

감사합니다.

0
0
  • 댓글 11

  • NPE
    514
    2019-06-12 20:10:11

    기본 문법서 정독 후

    이펙티브 자바 읽으시면 궁금한 점들이 해결되실겁니다.

    0
  • Frudy
    2k
    2019-06-12 20:14:52
    원본코드보는것도 재밌어요
    0
  • 이뉴
    440
    2019-06-12 20:25:23

    책은 다 똑같습니다.


    저라면 차라리 java 면접 질문으로 검색해서 질문 리스트에 나온 내용을 토대로

    공부할 거 같네요

    0
  • ccc
    1k
    2019-06-12 22:30:40

    자바에서 string과 stringbuffer의 차이가 뭔지

    메모리 관리는 어떻게 되고 있는지 등의 질문을 받으면


    정말 실무에서 쓸모없는 질문입니다...

    String 인스턴스를 많이 생성한다고 퍼포먼스가 떨어진다는 사람이 있다면 눈앞에서 증명하라고 말하면 됩니다. 메모리 관리 또한 의미없는 질문입니다.



    0
  • 돈까스
    2k
    2019-06-13 01:53:06 작성 2019-06-13 02:04:07 수정됨

    ccc님의 의견에는 반대합니다.

    실무에 쓸모가 없을수 있고, 그거 몰라도 개발하는데 문제 없을 수 있겠지만,

    백번 양보해서 모를수도 있다고 생각하고, 모르는 것 자체는 부끄러운 것이 아니라고 생각합니다만,

    모르는 것을 인지했을 때에는 그것에 대해서 궁금해하고 알려고 노력해야죠.

    몰라도 된다고 하고, 그게 뭐가 중요하냐는 식으로 반응하는건 프로페셔널하지 않다고 생각합니다

    메모리 관리가 의미없는 질문이라는 것도 메모리 관리가 필요없는 일밖에 안해봤다는 말로 들리네요.

    0
  • 돈까스
    2k
    2019-06-13 02:02:22

    그리고 원 글쓴분에게 조언을 드리자면

    책 한권으로 한번에 끝내보겠다고 생각하지 마시고요.

    여러가지 책을 읽어보시는 것이 좋습니다.

    그리고 가능하면 명세서와 실제 소스코드 레벨까지 뜯어 보시는 것이 좋습니다.

    https://docs.oracle.com/javase/specs/

    0
  • satis
    1k
    2019-06-13 09:00:09

    @ccc


    쓸모 없다니요... 

    증명 가능합니다.

    0
  • lemonssom
    160
    2019-06-13 17:00:37

    댓글 달아주신 많은 분들 감사드립니다!

    쓸모없는 지식이라는 의견도 있지만, 저는 제가 매일 쓰는 java에 대해 조금이라도 더 알고 싶어서요 ㅎㅎ

    알아두면 언젠가 쓸모있는 지식이 될 것이라 생각합니다.

    @NPE , @Frudy , @돈까스 님이 알려주신대로 여러책을 읽고 코드도 파봐야겠네요! @이뉴 님 말씀대로 면접 질문들 보고 공부하는 것도 좋겠네요 ㅎㅎ 생각보다 어려운거 많이 물어보더군요 ㅠㅠ

    의견 주셔서 감사합니다! 덕분에 어떻게 공부하면 좋을지 감이 좀 잡혔습니다. ㅎㅎ

    하루이틀만 버티면 주말인데 다들 파이팅하시길 바랍니다!

    0
  • ccc
    1k
    2019-06-14 10:59:51 작성 2019-06-14 11:25:59 수정됨

     

    음... 제가 쓴 글이 오해의 소지가 있네요.

    신입한테 물어볼 질문이 아니라는 겁니다.

    당연히 저도 신입때 궁금해서 String과 StringBuffer 차이가 궁금해서 검색해봤고

    내용을 아니까 신입한테 쓸모 없다고 적은거죠... 모를리가 있나요...

    그리고 jdk1.7 이상을 쓰신다면 String을 리터럴로 초기화 한다고 하더라도

    heap 메모리에 올라가게 되므로 가비지컬렉터가 관리하는걸로 알고 있습니다.

    out of memory도 경험해봤고 jvm 메모리 구조도 알죠...

    저런건 경험이 쌓이면서 스스로 알아보게 될 기회가 오는데 신입 채용에 저런 질문을 할 필요가 있을까요?


    증명하라고 해서 열심히 증명하신다면 그 결과를 놔두고 과연 그 차이가 체감이 되는지 다시 물어보겠습니다.




    0
  • ccc
    1k
    2019-06-14 11:21:41 작성 2019-06-14 11:22:03 수정됨

    satis String 인스턴스를 10만개 생성하고 StringBuffer 인스턴스를 1개 만들고 테스트 했는데 1.3초 정도가 차이 나는군요.

    저 시간을 줄이고자 맨날 StringBuffer stringBuffef = new StringBuffer(); stringBuffer.append(""); 이렇게 작성할바에 저는 String str = ""; 이렇게 쓰겠습니다.

    사람마다 지향하는게 다르니까요 ^^.

    0
  • satis
    1k
    2019-06-14 11:43:30


    어떤걸 개발하냐에 따라 다르니까요

    제가 말씀그리는건 무조건 저렇게 써라가 아닙니다 ㅎㅎ


    상황에 따라 다르고 실제 업무에서 String조합에 20분 걸리는걸 10초 이내로 줄인적이 있습니다.

    단순히 인스턴스가 많은 상황은 아니고요. 볼륨이 큰 경우에 해당됩니다.


    지향의 문제가 아니고 업무 상황의 문제라고 봅니다.


    1
  • 로그인을 하시면 댓글을 등록할 수 있습니다.