Java의 정석 공부 본문

Programming/Java

Java의 정석 공부

쩡호 2018. 1. 13. 23:08

Java의 정석을 구입하시고도 만족스럽게 공부하지 못하신다는 분들이 있어서 공부하는 방법에 대해서 좀더 자세히

알려드리고자 합니다.

 먼저 책을 보시고 이해가 안가시면... 좀더 반복해서 읽어보시고요. 동영상이 있는 부분은 동영상도 참고하세요.

 동영상강좌와 연습문제 풀이는 웹하드(webhard.co.kr)에서 다운 받으세요.(castello/javachobo)

그래도 이해가 안가면 카페에 질문 올리세요. 답변 열심히 해드리고 있습니다.

질문 한번도 안하면서 어렵다...고 하시는 분들은 인정할 수 없습니다. ^^;


0. Java를 처음 시작하려는 분들에게

'쉽다더니 어렵기만 하다...'는 분들이 계신데... 원래 프로그래밍이 그리 쉬운 것만은 아닙니다.

그렇게 쉬우면 프로그래머라는 직업은 존재하지 않겠죠. ^^;

기본적으로 최소한 중학교 수준의 수학은 잘이해하셔야하고요. 컴퓨터 용어 및 기본적인 원리나 개념은 있으셔야합니다.

(중학교 졸업했다고 중학교 수준의 수학을 다 이해하는 것은 아니라는거 아시죠? ^^;)

그리고 최소한 1년은 꾸준히 하셔야 어느정도 성과를 보실 수 있습니다.

Java의 정석도 제가 쉽다고는 하는데... '어렵다. 나하고는 안맞는다'는 분들이 계십니다. 진심으로 이해하고요...

책을 구입하기전에 반드시 필수자바강좌 게시판에 공개된 책의 내용을 꼭 보시기 바랍니다.


1. 요약집으로 가볍게 1독을 마치세요.
Java를 공부하기 전에 일단 부록인 요약집을... 이해가 안가더라도 가볍게 눈으로 한번 훑어보셔서

'이러한 내용들이 있구나.'라는 것을 파악하는 것이 좋습니다.


2. 처음으로 1장 자바시작 ~ 5장 배열을 공부할 때
그 다음에는 책의 순서대로 차근차근 공부하시면 되는데요.

Java외에 다른 프로그래밍 언어를 공부한 경험이 있으신 분들은

1장~5장에서 자바의 기본 문법만 잘 확인하고 6장,7장 객체지향개념으로 바로 넘어가세요.


프로그래밍의 경험이 전혀 없으신 분들은 1장과 5장사이를 익숙해질때까지 반복하시기 바랍니다.

그러나 너무 오래하시면 안되고요, 책에 나오는 기본 예제들을 이해할 수 있을 정도면 충분합니다.


몇번씩이나 봤는데도 이해가 안간다면, 카페에 질문 올리세요. 그래도 잘모르겠다면 무조건 외우세요.

예제를 안보고도 연필로 종이에 쓸 수 있을 정도로 외우시기 바랍니다.

몇 개의 예제만 외워도 이해의 깊이가 달라질 겁니다.


응용문제를 못푸니까... 부족하다고 생각해서 이 부분에 계속 머물면 안됩니다.

지금 단계에서 응용문제를 못푸는 것은 당연한 것입니다. 못풀어도 괜찮습니다.

그리고...절대 다른 사람하고 비교하지 마세요. 자신의 진도를 착실히 나가는 것이 제일 중요합니다.


3. 객체지향개념 공부하는 방법

많은 책들이 객체지향개념을 비교적 소홀히 다루고 있습니다. 
(객체지향개념이 제일 중요한데 비중이 낮습니다.)

기본 적인 내용만 설명하고 응용 및 활용법은 기본서의 범위를 넘어선다고 판단하는 것 같습니다. 
(객체지향개념을 잘 설명하기란 정말 어렵고 시간이 많이 걸리는 일이지요. 그래도 피하면 안되겠죠.)

그러나 이 정도의 내용으로는 앞으로의 진도인 안드로이드, JSP, EJB등을 학습하는데 부족합니다.

그렇다고 해서 더 높은 수준의 객체지향개념 책을 보는 것은 많은 시간과 노력을 필요로 합니다.


Java의 정석에서는 여러분들이 객체지향개념에 관한한 다른 책을 또 보지 않아도 실무에서 별 어려움이 없을 정도를

 

목표로 다른 책들보다 깊이 있게 설명했습니다. (그렇다고 불필요한 내용을 넣지는 않았습니다.)

그래서 Java의 정석이 다른 책에 비해 어렵다는 얘기를 듣는 것 같습니다. 그러나 같은 내용을 어렵게 설명한 것이 아니라

 다른 책에서는 설명하지 않는 어려운 내용을 쉽게 설명한 것이니까요.

동영상강좌와 함께 완전히 이해될때까지 계속 반복하시기 바랍니다. 
(동영상 강좌는 처음에는 정상속도로 그 다음 부터는 1.5~2배속으로 돌려가면서 보시면 좋습니다.)

 

이 때 역시 응용이 안되어도 괜찮습니다. 책의 예제들을 충분히 이해할 정도면 다음 진도를 나가시면 되겠습니다.


참고로 저는 객체지향개념 이해하는데만 몇 년걸렸습니다. 한두번에 이해하면 천재입니다. 천재...

대부분의 경우 Java의 정석과 동영상으로 10번 정도 반복하면 다 이해하실 수 있을 것이고요.

10번 봤는데도 이해가 안가면 10번 더보세요. 이해가 안간다고 이 책 저 책보면 더 헷갈립니다.

4. 8장 예외처리, 9장 java.lang패키지, 10장 내부클래스
7장까지 무사히 마치셨다면 Java기본과정의 8부 능선은 넘으신 겁니다. 8장과 9장은 가벼운 마음으로 보시고요.


9장에서는 Object클래스와 String, StringBuffer클래스의 특징과 메서드들에 대해서 잘봐두셔야합니다.

10장은 이해안가는 부분이 있더라도 기본 내용만 확인하고 넘어가세요. 12장 Thread나 13장 AWT에서 나오면


그 때 다시 찾아가면서 공부하면 실제로 어떻게 사용되는지 이해하게 되실 겁니다.


 

5. 11장 컬렉션 프레임웍
Java의 정석에서 객체지향개념 다음으로 난이도가 있는 단원입니다. 앞단원에서 배운 내용들을 종합적으로 활용한 예를

보여주도록 노력했습니다. 그리고 나중에 자료구조를 학습할 때 도움이 되도록 자료구조의 기본원리를 설명했습니다.

예제의 난이도를 좀더 높였기 때문에... 일단 언제 어떤 클래스를 사용해야하고, 어떤 결과를 얻을 수 있는지만

알고 넘어가세요. 반복하면서 좀더 깊이있게 공부해나가시기 바랍니다.

나중에는 예제를 보지 않고, 로직만으로 예제와 같은 코드를 스스로 작성할 수 있을 정도까지 공부하셔야 합니다.

단순히 예제를 이해한 수준만으로 Java의 정석을 다 공부했다고 할 수는 없습니다.


6. 12장 Thread, 13장 AWT, 15장 네트워킹
실무에서 잘 쓰이지 않는 부분입니다. Java의 기본과정에 포함되기 때문에 넣긴 했지만... 일단 넘어가시고

나중에 시간날때 또는 필요할 때 공부하세요. 채팅 프로그램이나 메신저 이런거 만들기 보다는 JSP나 JDBC등을

먼저 학습하시는 것이 취업과 실무에 도움이 됩니다. 그러나 요즘 안드로이드 때문에 얘기가 달라졌습니다.

안드로이드 프로그래밍 하시는 분들은 12장, 13장을 꼭 보시기 바랍니다.


7. 14장 입출력
입출력은 실무에서 자주 쓰이기 때문에 잘 공부해두세요. 기본적인 읽기와 쓰기, 바이트기반과 문자기반의 스트림의 차이

등 기본적인 내용을 이해하시고요.

실무에서 자주 사용되는 예제를 많이 소개하도록 노력했습니다.

11장과 마찬가지로 처음에는 어떻게 사용하는지를 이해하는데 중점을 두세요.


8. 10독이란?
제가 말하는 10독이라는 것은 눈으로만 10번 보라는게 아닙니다. 10번을 몰아서 보라는 것도 아닙니다.

1번은 부록인 요약집을 눈으로 가볍게 전체적 구성을 보고, 2독부터 5독 정도 까지는 직접 실습해보면서 자세히 반복해서 보고...

책의 내용을 충분히 이해했다고 생각되면 Java의 기본 다음 단계인 JSP와 JDBC를 공부하면서...

눈으로 Java의 정석을 매일 30분 정도 꾸준히 가볍게 복습하시라는 겁니다.

 여러번 반복해서 다 아는 것 같지만... 아는 만큼 보인다고... 여러분들의 실력이 향상될 수록 전보다 더 많은 내용이

눈에 들어올 겁니다. 점점 이해의 깊이가 깊어지고 활용능력이 높아집니다.

처음부터 모든 부분을 완전히 이해하고 다음으로 넘어간다고 생각하지 마시고... 그림을 그리듯이 밑그림을 그리고

반복을 통해서 점점 그림이 전체적으로 구체적이고 세부적으로 채워져 나가도록 공부하시는 게 좋습니다.

 
9.카더라'에 흔들리지 않는다.

이렇게 하는게 좋다더라 저렇게 하는게 좋다더라... 주위에서 별의 별 얘기를 다 듣습니다. 공부를 해나가면서

잘안되다보면... 주변의 얘기에 많이 현혹되기 마련이죠. 제가 들어본, 저로써는 납득하기 힘든 몇가지 얘기들을 소개하면...

'씨언어부터 공부하지 않으면 기초가 없다.' '포인터 모르고 자바시작하지마라' '실무에서는 입출력(IO)만 쓴다더라.'

'Java마스터 하려면 기본책 최소한 5권 이상은 봐야한다.' '객체지향개념 이해하지못하고는 Java API보지도 마라'

'자바기본서는 한번 이상 보지마라' '백날 개념공부만 해서뭐하냐 간단한 것도 못하면서...'

이런 얘기들은 주로 같은반 친구들 부터 시작해서... 학교선배, 학원강사님, 교수님까지... 다양합니다.

여기에 휘둘리지 마시고요. 쉬운 길 찾지마시고... 힘들어도 올바른 길을 꿋꿋이 가는 것이 중요합니다.

그냥 될때까지 수도 없이 Java의 정석을 반복 또 반복하세요. 그 것이 늦는 것 같아도 제일 빠른 길입니다.

다시 말씀드리지만... 모르는 건 질문하세요.

 

10 . Java의 정석' 그 다음은?

Java의 정석 다음으로 뭘 공부해야하냐고 묻는 분들이 많으십니다. 일단 취업하고자하는 방향이나 흥미있으신 분야를

계속 공부해 나가시면 될 것 같고요.(그 동안에도 하루에 약간의 시간을 내셔서 가볍게 복습하세요.)

자신이 공부한 내용을 남에게 가르쳐보는 것도 자신의 지식을 정리하는데 많은 도움이 됩니다. 남에게 설명하다보면

자신이 부족한 부분을 스스로 깨닫게 되고, 알고 있던 것은 더욱 이해가 깊어집니다.

앞서도 말씀드렸지만, 코딩 실력을 보다 향상시키려면... 책의 예제를 이해한 다음에 예제의 로직을 정리합니다.

그 다음에 책을 보지 않고 그 로직만으로 다시 예제와 똑같이 작성하는 연습을 하셔야합니다.

책의 예제9-18을 예로 들면... 이 예제를 보고 아래와 같은 방식으로 분석합니다.

(정해진 형식은 없고요. 자신이 알아볼 수 있게 편하게 적으시면 될 것 같습니다. 좀더 자세히 적으셔도 좋고요.)

1. 작업할 문자열(source)과 작업에 사용할 StringBuffer를 멤버변수로 선언하는 StringReplace클래스를 만들고,

2. 작업할 문자열을 입력받는 생성자 StringReplace(String source)를 작성한다.

3. 작업을 시작할 위치와 두 개의 문자열 A와 B를 입력받아서 A를 B로 치환하는 replace(String old, String nw, int pos)를

   아래와 같이 만든다.

    3.1 입력받은 값이 유효한지 체크한다.

    3.2 source에서 치환할 문자열을 찾으면  새로운 문자열로 치환하고,

    3.3 그 위치에서 다시 문자열을 찾기 시작한다.(재귀호출 사용할 것)

    3.4 더이상 치환할 문자열을 찾지 못하면 나머지 문자열을 작업결과의 마지막에 붙인다.

4. 문자열의 처음부터 치환을 하는 replace(String old, String nw)를 작성한다.

    (replace(String old, String nw, int pos)를 사용할 것)

5. StringReplace의 기능을 테스트할 코드를 작성한다.

그 다음에 위의 내용만으로 예제와 같은 코드를 작성하는 연습을 해보세요. 코딩 실력이 많이 향상됩니다.

그리고, 기존의 예제에 새로운 기능을 넣는다던가, 여러 예제를 조합해서 새로운 예제를 만드는 것도 좋습니다.

그 후에는 좋은 예제를 많이 보는 것이 좋은데요. Java API의 소스나 JDK의 demo폴더에 있는 예제들을 하나씩 분석해나가세요.

잘 작성된 좋은 소스코드를 많이 보는 것이 중요합니다.

(1일 1소스 분석하기 - 아침에 소스하나 출력해서 공부하고 정리해서 파일철에 꽂아두기)

보다 다양하고 향상된 예제를 원하시는 분들을 위해서 Java예제집(제목미정)을 집필중에 있습니다.

2009년 상반기 출시가 목표인데 언제 출시될지는 아무도 모릅니다. *^^*

 

11. 많은 열매를 맺으려면 뿌리가 튼튼해야한다.
무슨일이든 기본기가 중요하다는 것은 두말하면 잔소리겠죠. 특히 프로그래밍 처음배우는 분들 학원진도도 빠르고

남들은 저만큼 앞서가는 것 같고... 시간은 빨리 지나가고... 답답하시겠죠.

그러나... 기본기만 잘되어 있으면 나머지는 금새 따라잡습니다.Java의 정석이 그냥 처음 배울때 한번 보고 넘어갈 책이 아닌...

여러분들이 프로그래머로써 성장하는데 기반이 되는 뿌리가 되길 바라는 마음으로 정성을 들여 만들었습니다.


책안사셔도 좋으니까 카페에 공개된 강좌와 동영상을 봐주세요.


 Java의 정석 열심히 보시고요. 제가 말씀드린 방법대로 믿고 한번 따라보시기 바랍니다.


 저도 Java의 정석을 앞으로도 계속 보완해나가서 더 좋은 책이 되도록 노력하겠습니다.


'Programming > Java' 카테고리의 다른 글

다형성 예제3 (Vector 추가)  (0) 2018.01.19
다형성 예제 2 (객체 배열 추가)  (0) 2018.01.19
polymorphism (다형성) Example  (0) 2018.01.19
피보나치  (1) 2018.01.17
단축키  (0) 2018.01.13
Comments