구)홈페이지 오탈자 보기
Head First Java: 뇌 회로를 자극하는 자바 학습법(개정판)

 

페이지오탈자 내용등록일
서문27

(서문/p.27 아래에서 12줄)

24페이지에 있는 내용은 모두 이렇게 머리 활동을
=> 26페이지에 있는 내용은 모두 이렇게 머리 활동을

2008-03-038
031

(31p 세번째 문단 다섯번째줄)

이 책의 끝부분(16장)
==>이 책의 끝부분(18장)

2006-10-251
137

(p.37 (8쇄))

일단 소스 코드 파일을 입력하고 javac 컴파일러로 컴파일한 다음, 컴파일된 바이트코드를 자바 가상 머신에서 실행시키면 됩니다.
-->일단 소스 코드를 입력하고 javac 컴파일러로 컴파일한 다음, 컴파일된 바이트코드를 자바 가상 머신에서 실행시키면 됩니다. 

2009-07-068
141

(p.41 왼쪽 그림에서 (8쇄))

클래스 파일
--> 클래스 

2009-07-088
143

(p.43 (8쇄))

왼쪽 문서그림안 코드 System.out.print("I Rule!");
-->
System.out.println("I Rule!");
System.out.println("The World"); 

2009-07-068
144

(44p. 3 조건에 따라 뭔가를 하는 것)

if((x<3) & (name.equals("Dirk"))) {

& ==> && 

2009-07-302
144

(p.44 (8쇄))

for(int x - 0; x < 10; x = x + 1){
-->for(int x = 0; x < 10; x = x + 1){ 

2009-07-068
148

(48p 마지막(1장))

//else 문 끝
==> // 클래스 끝

2006-12-284
50

(50p 우측 코드 5번)

// 구문을 출력합니다.
   system.out.println("What we need is a " + phrase);
   
}
==>
// 구문을 출력합니다.
   system.out.println("What we need is a " + phrase);
   }  <==중괄호가 빠져 있습니다.
}

2006-10-251
54

((p 541) 예제 코드의 아래에서 7번째 줄에)

" completes the withdrawl");
==>
" completes the withdrawal");

2006-10-251
56

((p 56) 위에서 6번째 글)

정답은 56페이지에 있습니다.
==>
정답은 60페이지에 있습니다.

2006-10-251
57

((p 57) 문제의 코드 중에서)

"출력 결과:"의 예제와 출력형식을 맞추려면, 다음 코드를 고쳐야 합니다.

System.out.print(x + " " + y +" ");
==>
System.out.print(x + "" + y + " ");

2006-10-251
57

(57p 네째줄)

정답은 56페이지
==>
정답은 60페이지

2006-10-251
158

(4쇄 2006.10.27)

p58/p60
System.out.print("oyster"); 에서 (" oyster")인지 궁금합니다.

p183
맨 마지막에 } 하나가 없네요..

p228
메인에서 _______ b1 - new Boat(); 에서 -가 아니라 =

p272
그림 설명에서 첫줄에 b가 아니라 d 아닌지요.

p540~541
RyanAndMonicaJob 이름이 그림하고 코드하고 설명한데하고 달라요

p541
run 구문에서 makeWithdrawl(10); //a 이부분은 잘못된듯해요

p556
오른쪽 Q 에서 checkBalance() 가 맞나요? p540 에는 없고 getBalance() 가 있던데요

p602
검은상자에서 woid 가 아닌 void 아닌가요?

마지막으로 오버로드 오버로딩 이름이 같은건가요?
또 오버라이딩 오버라이드 같은건가요?
해석할때 잘못한건지 아니면 다른거라 다르게 번역한건지요

==========> 확인 중

2007-01-294
158

(p.58 위에서부터8줄 / p.59 연습문제 B)

p.58 위에서부터 8번째줄
생각보다 어렵습
=> 생각보다 어렵습니다.

p.59 연습문제 B
class Foo{
 public ... {
...
 } // 굵게 되어 있음
} // 일반굵기임
=>
class Foo{
 public ... {
...
 } // 일반 굵기로
} // 굵게 변경

2008-03-036
158

(p.58)

p.58 수영장 안 코드 중에서

System,out,print("an");
==> System.out.print("an");

2008-03-046
58

(58페이지 오른쪽 문제 소스)

문제에서 밑줄이 두군데 빠짐
==>
9번째에 밑줄 추가
18번째에 밑줄 추가

2006-10-251
264

(p.64)

아메바의 회전 중심을 지정하기 위해서 모든 아메바 클래스에서 사용할 속성(attribute)을 추가했습니다.
-->아메바의 회전 중심을 지정하기 위해서 아메바 클래스에서 사용할 모든 속성(attribute)을 추가했습니다.

2009-07-208
284

(p.84 (8쇄))

Giraffe(기린) 레퍼런스를 Rabbit(토끼) 변수에 집어넣는 것과 같이 이상하고 위험한 일은 할 수 없죠.
-->Giraffe(기린) 인스턴스를 Rabbit(토끼) 변수에 집어넣는 것과 같이 이상하고 위험한 일은 할 수 없죠.

2009-07-078
86

((p 86) 마지막 예제들에서)

리터럴 값만 굵은 글자로 표시해야 하는데, 모두 굵은 글씨로 표시했습니다.
==>
리터럴 값만 굵은 글자로 표시해야 하는데, 모두 굵은 글씨로 표시했습니다.

2006-10-251
396

(p.96)

변수에는 원시 변수와 레퍼런스, 이렇게 두 종류가 있습니다.
--> 변수에는 원시 변수와 레퍼런스 변수, 이렇게 두 종류가 있습니다. 

2009-07-061
114

((p 114) 오른쪽 아래 부분의 코드에서)

고양이 키의 최소값을 보장하기 위해서는 다음의 코드를

public void setHeight(int ht) {
     if (height > 9) {
...
==>
아래와 같이 바꿔야 합니다.

public void setHeight(int ht) {
     if (ht > 9) {
...

2006-10-251
4115

(p115)

안 좋은 데이터를 구걸 ->

안 좋은 데이터를 구별

2014-05-1215
5131

(p.131 오른쪽 플로우 차트에서)

오른쪽 플로우 차트에서  
오탈자 내용 닷컴을 제거함 --> 셀을 제거함
셀을 제거함 --> 닷컴을 제거함  
 

2009-07-061
5138

(p.138 (8쇄))

if(guess == Cells) {
-->if(guess == cell) { 

2009-07-068
156

(p156 연습문제 답안)

class Output
{
public static void main(String[] args) 
{
Output o = new Output();
o.go();
}

void go(){
int y = 7;
for(int x = 1; x < 8 ; x++){
                                                y++;
if(x > 4){
System.out.print(++y + " ");
}
if(y > 14){
System.out.println("x = " + x);
break;
}
}
}
}
==>
class Output
{
public static void main(String[] args) 
{
Output o = new Output();
o.go();
}

void go(){
int y = 7;
for(int x = 1; x < 8 ; x++){
if(x > 4){
System.out.print(++y + " ");
}
if(y > 14){
System.out.println("x = " + x);
break;
}
}
}
}

2006-10-251
162

((p 162) 1. 첫번째 옵션의 그림에서)

참(truea)
==>
참(true)

2006-10-251
6164

(p.164(8쇄))

(즉, 작은 배열을 새로 만들고 남아있는 값을 새 배열로 복사하고 레퍼런스를 다시 대입하는 작업을 하지 않아도 된다면)
-->(즉, 작은 배열을 새로 만들고 남아있는 값을 새 배열로 복사하고 레퍼런스에 다시 대입하는 작업을 하지 않아도 된다면) 

2009-07-078
6168

(p.168 (8쇄))

'5'번 셀을 맞췄을 때 나머지 셀 위치만 집어넣을 작은 배열을 새로 만들고 그 배열에 원래의 locationCells 레퍼런스를 대입합니다.
-->'5'번 셀을 맞췄을 때 나머지 셀 위치만 집어넣을 작은 배열을 새로 만들고 그 배열을 원래의 locationCells 레퍼런스에 대입합니다. 

2009-07-078
6176

(p.176 (8쇄))

DotComBust 클래스의 main() 메 소드에서 게임의 모든 것을 책임지는 DotComBust 객체의 인스턴스를 만듭니다.
--> DotComBust 클래스의 main() 메소드에서 게임의 모든 것을 책임지는 DotComBust의 인스턴스를 만듭니다.

2009-07-088
181

(p181 코드중 맨위)

p181 맨위
==>
아래 코드가 빠진
private void checkUserGuess(String userGuess) {

2006-10-251
181

(p181 코드 중)

2번째: miss
5번째: hit
8번째: kill
16번째: All Dot~ worthless.
18번째: It only took you + ~+ guesses.
19번째: You got out before your options sank.
21번째: Took you long enough. +~+ guesses.
22번째: Fish are dancing with your options.
==>
2번째: "miss"
5번째: "hit"
8번째: "kill"
16번째: "All Dot~ worthless."
18번째: "It only took you" + ~ + "guesses."
19번째: "You got out before your options sank."
21번째: "Took you long enough." + ~ + "guesses."
22번째: "Fish are dancing with your options."

2006-10-251
6184

(p.184)

if(locationCells.isEmpty())
--> if(locationCells.isEmpty()){ 

2009-07-098
6198

(6쇄 p.198)

세로18 LIMS -> LIST
가로22 SAPS -> TAPAS

2008-03-076
7203

(p.203 하단 하위클래스 그림안에서 (8쇄))

treatPatien()
--> treatPatient() 

2009-07-088
7209

(p.209 (8쇄))

(정확하게 말하자면 Animal 클래스에 있는 클래스를 Canine 클래스에서 오버라이드한 것)
-->(정확하게 말하자면 Animal 클래스에 있는 메소드를 Canine 클래스에서 오버라이드한 것) 

2009-07-088
7210

(p.210)

어떤 클래스에서 메소드를 상속한다면 그 클래스가 반드시 들어있다는 점을 기억해두세요.
-->어떤 클래스에서 메소드를 상속한다면 그 메소드가 반드시 들어있다는 점을 기억해두세요. 

2009-07-098
7214

(6쇄 p214 밑6번째줄)

Squre는 rotate()와 playSound() 메소드를 상속하는데
=> Square는 rotate()와 playSound() 메소드를 상속하는데

2008-03-076
7218

(p.218 (8쇄))

객체 선언과 대입의 세 가지 단계
--> 객체 생성과 대입의 세 가지 단계

2009-07-088
7224

(p.224, 오른쪽 그림)

p.224, 오른쪽 하단의 그림을

public boolean turnOn()
public boolean turnOn()

에서

public boolean turnOn()
public boolean turnOff()
으로 수정하였씁다.

2011-01-3112
225

((p 225) 오른쪽 상단의 문단에서)

오버로딩된 메소드는 메소드 이름만 다를 뿐
==>
오버로딩된 메소드는 메소드 이름만 같을 뿐

2006-10-251
7225

(p.225 (8쇄))

게다가 리턴 형식이 상위클래스에서 선언된 리턴 유형하고 같거나 그 하위 유형이 아닌 경우에는 컴파일러에서 오류가 날 것입니다.
-->게다가 리턴 형식이 상위클래스에서 선언된 리턴 유형하고 같지 않거나 그 하위클래스 유형이 아닌 경우에는 컴파일러에서 오류가 날 것입니다. 

2009-07-088
8240

(p240 MyDogList)

int nexIndex -> int nextIndex

2014-05-2515
7241

(241쪽)

% java AnimalListUser

→ % java AnimalTestDrive

2009-03-036
8241

(p.241 (8쇄))

(앞에서 배웠듯이 추상 유형의 객체 인스턴스를 새로 만들 수는 없지만 그 유형의 객체를 저장하기 위한 배열 객체를 만드는 것은 가능합니다.)
-->(앞에서 배웠듯이 추상 유형의 인스턴스를 새로 만들 수는 없지만 그 유형의 객체를 저장하기 위한 배열 객체를 만드는 것은 가능합니다.) 

2009-07-098
244

((p 244) 4번째 질문에서)

아, 그렇군요. 그럼 Object 클래스로 돌아가서, 그 클래스가 추상 클래스라고 했는데
==>
아, 그렇군요. 그럼 Object 클래스로 돌아가서, 그 클래스가 구상 클래스라고 했는데

2006-10-251
8244

(p. 244 (8쇄))

자바 5.0 기준으로는 ArrayList<Object>라고 하는 것과 같은 ArrayList 객체만 사용할 수 있었죠.
--> 자바 5.0 기준으로는 ArrayList<Object>라고 하는 것과 같은 Object 객체만 사용할 수 있게 되었죠. 

2009-07-098
246

((p 246) 중간부분의 컴파일 에러에서)

Dog sameDog = takeObjects(aDog);
==>
Dog sameDog = getObject(aDog);

2006-10-251
247

((p 247) 왼쪽 위의 첫번째 문장에서)

이제 Object 유형으로 선언된 변수로 참조되는 객체를 실제 객체의 유형으로 선언된 변수에 대입할 수 있다는 것은 확실히 이해가 됐죠?
==>
이제 Object 유형으로 선언된 변수로 참조되는 객체를 실제 객체의 유형으로 선언된 변수에 대입할 수 없다는 것은 확실히 이해가 됐죠?

2006-10-251
8248

(p.248 (8쇄))

왼쪽 하단 그림안 코드에서
eqoals()
-->equals()
eqoals()
-->equals()

2009-07-098
8249

(p.249 (8쇄))

ArrayList<object>에 객체를 집어넣으면 그 객체는 원래의 유형과는 무관하게 Object로만 처리할 수 있습니다.
-->ArrayList<Object>에 객체를 집어넣으면 그 객체는 원래의 유형과는 무관하게 Object로만 처리할 수 있습니다.

ArrayList<object>로부터 레퍼런스를 받아오면 그 레퍼런스는 항상 Object 유형입니다.
-->ArrayList<Object>로부터 레퍼런스를 받아오면 그 레퍼런스는 항상 Object 유형입니다. 

2009-07-098
250

((p 250) 아래의 주석에서)

Dog인지 잘 모르겠다면 instanceOf 연산자를
==>
Dog인지 잘 모르겠다면 instanceof 연산자를

2006-10-251
250

((p 250) 아래 주석의 예제 코드에서)

if (d instanceOf Dog) {
==>
if (o instanceof Dog) {

2006-10-251
265

(p. 265 연습문제 4, 5번)

몇 개의 클래스는 인터페이스가 되어야 한다.
==>
Foo, Zeta, Beta는 인터페이스로 표기되어야 한다.

2006-10-251
8267

(P267)

public class Tips -> public class Tip

2014-05-2615
7267

(267쪽)

어떻게 선언해야 할까요?

2)
public abstract Tops { } → public abstract class Top { } // class는 추가하고 s는 빼야 함.
public class Tips extents Top { } → public class Tip extends Top { } // s는 빼고 entents의 두번째 t는 d로 바꿔야 함.

3)
public abstract class Fi extents Fee { } → public abstract class Fi extends Fee { } // entents의 두번째 t는 d로 바꿔야 함. 

2009-03-036
270

(p.270 힙을 설명하는 그림 옆 설명)

"가비지컬렉션기능이 있는 힙"이라도 부릅니다.
==>
"가비지컬렉션기능이 있는 힙"이라고 부릅니다.

2006-10-251
9275

(p.275)

즉, 어떤 객체의 인스턴스를 만들 때 실행할 코드가 들어있습니다.
-->즉, 어떤 클래스 유형의 인스턴스를 만들 때 실행할 코드가 들어있습니다. 

2009-07-208
275

(p.275 세번째 문단 두번째 줄)

클래스를 만들지 않더라도 컴파일러에서 알아서...
==>
생성자를 만들지 않더라도...

2006-10-251
9277

(p.277)

즉, 객체의 인스턴스 변수를 만들고 값을 대입하는 작업은 대분분 생성자에서 처리합니다.
-->즉, 객체의 인스턴스 변수에 값을 대입하는 작업은 대분분 생성자에서 처리합니다. 

2009-07-208
281

(p.281 소스부분의 설명 중...)

세번째 생성자에 대한 설명 중...

독버섯인지 아닌지, 그리고 크기를 모두 아는 경우
==>
독버섯인지 아닌지 알고, 크기는 모르는 경우.

2006-10-251
314

(p.314 브레인파워 네번째줄...)

private 생성자를 써서 클래스의 인스턴스를...
==>
private 생성자를 써서 만든 클래스의 인스턴스를...

2006-10-251
317

((p 317) 왼쪽 중간쯤의 코드에서)

// x로 바꿀 수 없습니다.

// z로 바꿀 수 없습니다.
==>
// x도 바꿀 수 없습니다.

// z도 바꿀 수 없습니다.

2006-10-251
320

(p.320 Math.abs() 설명 첫 줄...)

주어진 인자의 절대값을 나타내는 double값을 리턴합니다.
==>
주어진 인자의 절대값을 나타내는 값을 리턴합니다.

2006-10-251
321

((p 321) 왼쪽 아래 부분의 코드에서)

Integer iWrap + new Integer(i);
==>
Integer iWrap = new Integer(i);

2006-10-251
10325

(325p. 중간 대입에 대한 그림)

Double d = x;


int d = x;

로 수정하였습니다.

2011-02-0912
10334

(334페이지 마지막 줄)

varargs를 쓸 일이 거의 없기 때문에 varargs에 대한 내용은 부록에서만 추가로 다룰 예정입니다.

->varargs를 쓸 일이 거의 없다.

2007-03-075
10334

(p.334 (8쇄))

두 변수에 모두 쉼표를 집어넣고, 부동소수점 수(두 번째 인자)는 소수점 아래 둘째자리까지만 출력합니다.
-->두 변수에 모두 쉼표를 집어넣고, 부동소수점 수(세번째 인자)는 소수점 아래 둘째자리까지만 출력합니다.  
 

2009-06-198
10340

(p340)

2시간 .또는 24시간 값 ->

12시간. 또는 24시간 값

2014-05-2915
10348

(p348)

x<60 -> x<3

2014-05-2915
353

(p. 353 다른 사람이 만든 클래스 소스...)

if(servarDown)}
    explode();
}
==>
if(serverDown){
    explode();
}

2006-10-251
366

((p 366) 아래에서 5번째 줄에서)

UniformExcep tion,
==>
UniformException,

2006-10-251
372

(p.372 세번째 줄...)

Midi.getSequencer()
==>
2006년 9월 21일
MidiSystem.getSequencer()

2006-10-251
11374

(p.374)

Sequence에서 실제 정보가 들어었는 부분
-->Sequence에서 실제 정보가 들어있는 부분 

2009-07-208
11375

(p.375)

아, 재생 버튼을 누르는 것을 깜빡했군요. 시퀀서에 대해 Play() 메소드를 호출해야 합니다.
-->아, 재생 버튼을 누르는 것을 깜빡했군요. 시퀀서에 대해 start() 메소드를 호출해야 합니다. 

2009-07-208
380

((p 380) 예제 코드의 main 메소드 첫번째 줄에서)

MiniMiniMusicCmdLine mini = new MiniMiniMusicCmdLine();
==>
MiniMusicCmdLine mini = new MiniMusicCmdLine();

2006-10-251
11382

(p.382)

2. 컴파일러에서 확인하는 예외를 유발할 수 있는 메소드를 만들 때는 반드시 위험한 코드를 try/catch 블록으로 감싸야 합니다.
-->2. 컴파일러에서 확인하는 예외를 유발할 수 있는 메소드를 호출할 때는 반드시 위험한 코드를 try/catch 블록으로 감싸야 합니다. 

2009-07-208
12398

(p.398 (8쇄))

이 메소드는 시스템에서 그 위젯을 화면이 표시하기 위해 호출하는 메소드라고 생각하면 됩니다.
-->이 메소드는 시스템에서 그 위젯을 화면에 표시하기 위해 호출하는 메소드라고 생각하면 됩니다.

그림 패널이 들어있는 프레임에 화면이 표시되면 paintComponent()가 호출되면서 원이 화면에 그려질 것입니다.
-->그림 패널이 들어있는 프레임이 화면에 표시되면 paintComponent()가 호출되면서 원이 화면에 그려질 것입니다. 

2009-06-198
399

((p 399) 'JPEG 파일 표시' 예제 코드의 설명 부분에서)

위쪽 끝에서 두 픽셀 떨어진 지점
==>
위쪽 끝에서 네 픽셀 떨어진 지점

2006-10-253
400

((p 400) 오른쪽 위의 메소드 리스트에서)

drawPolygon
==>
drawPolygon()

2006-10-251
12404

(p.404 (8쇄))

원래는 이렇게 하면 안됩니다(메소드가 하나밖에 없는 add 메소드는 일종의 편법이라고 할 수 있습니다).
-->원래는 이렇게 하면 안됩니다(인자가 하나밖에 없는 add 메소드는 일종의 편법이라고 할 수 있습니다). 

2009-06-198
407

((p 407) 1. 첫번째 방법의 마지막 문장에서)

방법이 있지 않을까요?
==>
방법이 없지 않을까요?

2006-10-251
12410

(p.410 (8쇄))

심지어 private로 지정된 메소드와 클래스도 전부 쓸 수 있습니다.
--> 심지어 private로 지정된 메소드와 변수도 전부 쓸 수 있습니다. 

2009-06-218
412

((p 412) '잠시 한 마디'의 예제코드 네번째 줄에서)

outerObj.new Inner();
==>
outerObj.new MyInner();

2006-10-251
12416

(p.416)

(객체가 약간 위, 오른쪽으로 이동합니다)
-->(객체가 약간 아래, 오른쪽으로 이동합니다)

2009-07-208
435

((p 435) 두 번째 문단의 다섯 번째 줄에서)

그 구성요소 다섯 개안에도
==>
그 구성요소 다섯 개 안에도

2006-10-251
13439

(p.439)

그런데 크기는 원하는 대로 해줄 수 없어요.
-->그런데 높이는 원하는 대로 해줄 수 없어요. 

2009-07-208
450

((p 450) 사용 방법 2번의 예제에서)

System.out.println("Check box is" + onOrOff);
==>
System.out.println("Check box is " + onOrOff);

2006-10-251
13451

(p.451 (8쇄))

list = new JList(listEntries);
--> JList list = new JList(listEntries); 

2009-06-218
13452

(p.452)

완성된 프로그램의 그림에서 Tempo Down 버튼이 빠짐. 

2009-07-208
13453

(p.453)

체크되지 않은 상태로 시작하는 체크상자(JCheckBox) 256개와 악기명에 해당하는 레이블(JLabel) 여섯 개, 그리고 버튼 네 개가 들어있는 GUI를 만듭니다.
-->체크되지 않은 상태로 시작하는 체크상자(JCheckBox) 256개와 악기명에 해당하는 레이블(JLabel) 열여섯 개, 그리고 버튼 네 개가 들어있는 GUI를 만듭니다.

빠르기는 시퀀스의 빠르기(템포) 팩터를 써서 더 빠르게 또는 느리게 조절할 수 있고, 루프를 반복할 때마다 새로운 빠르기를 적용할 수 있습니다.
-->빠르기는 시퀀서의 빠르기(템포) 팩터를 써서 더 빠르게 또는 느리게 조절할 수 있고, 루프를 반복할 때마다 새로운 빠르기를 적용할 수 있습니다

2009-07-208
454

((p. 454) main 메소드 안에서)

new BeatBox2().buildGUI();
==>
new BeatBox().buildGUI();

2006-10-251
13456

(p.456)

sequencer.setLoopCount(sequencer.LOOP_CONTINUOUSLY);
-->sequencer.setLoopCount(Sequencer.LOOP_CONTINUOUSLY); 

2009-07-208
458

((p 458) 예시번호에서)

5번과 6번의 그림을 바꿔야, p.461의 정답과 맞습니다.
==>
5번과 6번의 그림을 바꿔야, p.461의 정답과 맞습니다.

2006-10-251
14469

(p.469 (8쇄))

그리고 그런 인스턴수 변수에 또 다른 인스턴스 변수가 들어있다면 어떻게 될까요?
--> 그리고 그런 인스턴수 변수로 참조되는 객체에 또 다른 인스턴스 변수가 들어있다면 어떻게 될까요? 

2009-06-228
14470

(p.470)

객체가 직렬화되면 인스턴스 변수를 참조하는 모든 객체 또한 직렬화됩니다.
-->객체가 직렬화되면 인스턴스 변수로 참조되는 모든 객체 또한 직렬화됩니다.

2009-07-208
14473

(p.473 (8쇄))

import java.net.*;
--> import java.io.*; 

2009-06-228
14474

(p.474)

직렬화할 수 없는 인스턴스 변수가 있는 경우에 그 변수를 transient로 지정해서 그 문제를 해결하는데, 객체를 다시 원상태로 복구했을 때 transient로 지정했던 그 객체도 다시 필요한 것 아닌가요?
-->직렬화할 수 없는 인스턴스 변수가 있는 경우에 그 변수를 transient로 지정해서 그 문제를 해결하는데, 객체를 다시 원상태로 복구했을 때 transient로 지정했던 그 인스턴스 변수도 다시 필요한 것 아닌가요?  
 

2009-07-061
14480

(p.480 (8쇄))

연쇄 스트림은 출발지나 목적지에 연결할 수 없기 때문에 반드시 연쇄 스트림 또는 다른 스트림에 연쇄되어야 합니다.
--> 연쇄 스트림은 출발지나 목적지에 연결할 수 없기 때문에 반드시 연결 스트림 또는 다른 스트림에 연쇄되어야 합니다.

2009-06-218
14480

(p.480 (8쇄))

직렬화할 때 어떤 객체를 건너뛰고 싶다면 transient 키워드를 사용하면 됩니다.
--> 직렬화할 때 어떤 인스턴스 변수를 건너뛰고 싶다면 transient 키워드를 사용하면 됩니다. 

2009-07-068
14488

(p.488 (8쇄))

텍스트가 두 줄 들어있는 파일
--> 텍스트가 한 줄 들어있는 파일 

2009-06-238
488

((p 488) 예제 코드의 메인 메소드 안에서)

try
==>
try {

2006-10-251
14492

(p.492)

splite() 메소드에서는 인자로 전달받은 '/'를 기준으로 String을 (이 경우에는) 두 부분으로 나눕니다.
-->split() 메소드에서는 인자로 전달받은 '/'를 기준으로 String을 (이 경우에는) 두 부분으로 나눕니다.

2009-07-288
14492

(p.492)

Split()은
-->split()은 

2009-06-238
14493

(p.493)

API를 찾아보니까 java.io 패키지에는 클래스가 500만 개는 있는 것 같네요.
-->API를 찾아보니까 java.io 패키지에는 클래스가 500개는 있는 것 같네요. 

2009-07-248
14495

(p.495)

public class Dog {
   static final long serialVersionUID =
                 -6849794470754667710L;
-->
public class Dog implements Serializable {
   static final long serialVersionUID =
                 -5849794470654667210L; 

2009-07-248
14495

(495p ② 출력된 결과를 클래스에 붙여넣습니다. 부분에서)

public class Dog {

==> public class Dog implements Serializable

2009-09-258
15512

(p.512 (8쇄))

즉, 파일에 대한 쓰기 작업을 할 때와 마찬가지로 BufferedReader를 사용할 수 있습니다. 
-->즉, 파일에 대한 읽기 작업을 할 때와 마찬가지로 BufferedReader를 사용할 수 있습니다. 

2009-07-038
518

((p 518) 예제 코드의 adviceList에서)

"그 머리 스타일은 좀 안 어울리는 것 같은데요.");
==>
"그 머리 스타일은 좀 안 어울리는 것 같은데요."};

2006-10-251
15519

(p.519 (8쇄))

(즉 accept() 메소드가 다시 호출되면, 새로운 클라이언트에서 요청이 들어오면 Socket을 새로 만들고 전체 과정을 시작할 수 있게 되기 전까지는)
-->(accept() 메소드가 다시 호출되면,즉 새로운 클라이언트에서 요청이 들어오면 Socket을 새로 만들고 전체 과정을 시작할 수 있게 되기 전까지는) 

2009-07-068
15519

(p.519 (8쇄))

TCP포트는 특정 서버 애플리케이션에 할당된 16비트 부호가 없는 정수입니다.
-->TCP포트는 특정 서버 애플리케이션에 할당된 부호가 없는 16비트 정수입니다. 

2009-07-068
15521

(p.521 (8쇄))

writer는 Socket으로부터 얻은 입력 스트림에 연쇄되어있기 때문에 println()을 호출할때마다 그 String이 네트워크를 통해서 서버로 전달됩니다.
-->writer는 Socket으로부터 얻은 출력 스트림에 연쇄되어있기 때문에 println()을 호출할때마다 그 String이 네트워크를 통해서 서버로 전달됩니다. 

2009-07-038
15525

(p.525)

새로운 스레드가 시작될 때까지 메인 스레드는 일시적으로 멈춥니다.
==>새로운 스레드가 시작되면 메인 스레드는 일시적으로 멈춥니다. 

2009-08-019
15526

(p.526)

즉 스레드의 새로운 호출 스택에서 실행할 메소드를 그 클래스에서 정의해야 합니다.
-->즉 새로운 스레드의 호출 스택에서 실행할 메소드를 그 클래스에서 정의해야 합니다 

2009-08-018
528

((p 528) 예제 코드에서)

public class MyRunnable implements Runnable {
...
class ThreadTester {
==>
class MyRunnable implements Runnable {
...
public class ThreadTester {

2006-10-251
532

((p 532) 예제 코드에서)

public class MyRunnable implements Runnable {
...
class ThreadTestDrive {
==>
class MyRunnable implements Runnable {
...
public class ThreadTestDrive {

2006-10-251
15534

(p.534)

어떤 코드를 보니까 Runnable을 구현한 클래스를 따로 만들지 않고 대신 Thread의 하위클래스를 만들고 그 Thread 객체의 run() 메소드만 오버라이드하는 경우도 있었거든요.
-->어떤 코드를 보니까 Runnable을 구현한 클래스를 따로 만들지 않고 대신 Thread의 하위클래스를 만들고 그 Thread 클래스의 run() 메소드만 오버라이드하는 경우도 있었거든요. 

2009-07-248
15538

(p.538)

스레드가 실행 중이지 않을 때는, 그리고 실행 가능한 상태 또는 봉쇄 상태에서는 무의식 상태라고 할 수 있습니다.
-->스레드가 실행 중이지 않을 때는, 즉 실행 가능한 상태 또는 봉쇄 상태에서는 무의식 상태라고 할 수 있습니다.  
  

2009-07-248
15548

(p.548 (8쇄))

어떤 스레드가 메소드에 들어가고 나면 다른 어떤 메소드가 메소드에 들어가기 전에 메소드에 있는 모든 단계를 마칠 수 있도록 해야합니다.
-->어떤 스레드가 메소드에 들어가고 나면 다른 어떤 스레드가 메소드에 들어가기 전에 메소드에 있는 모든 단계를 마칠 수 있도록 해야합니다. 

2009-07-038
15548

(p.548 (8쇄))

dostuff()를 전부 동기화시킬 필요는 없기 때문에 메소드 전체를 동기화시키지는 않습니다.
-->go()를 전부 동기화시킬 필요는 없기 때문에 메소드 전체를 동기화시키지는 않습니다. 

2009-07-038
15549

(p.549)

B 스레드가 다시 실행 가능한 상태로 전환됩니다.
-->B 스레드가 다시 실행중인 상태로 전환됩니다. 

2009-07-248
553

((p 553) 코드의 마지막 줄에서)

// 외부 클래스 끝
==>
} // 외부 클래스 끝

2006-10-251
16570

(p.570)

SongListMore.txt
-->SongList.txt 

2009-08-018
16583

(p.583)

Song 클래스에서 Comparable 메소드를 구현해야 하는군요.
-->Song 클래스에서 Comparable 인터페이스를 구현해야 하는군요. 

2009-07-288
16586

(p.586)

그 자체가 별도의 클래스죠.
--> 그 자체가 별도의 인터페이스죠.

Comparator를 인자로 받는 sort() 메소드에서는 메소드를 정렬할 때 원소 자체에 있는 compareTo() 메소드 대신 Comparator를 사용합니다.
--> Comparator를 인자로 받는 sort() 메소드에서는 원소를 정렬할 때 원소 자체에 있는 compareTo() 메소드 대신 Comparator를 사용합니다.

그러면 Comparable 클래스를 구현하지 않는 클래스가 있다고 할 때, 그 클래스의 소스 코드가 없어도 Comparator만 만들면 정렬할 수 있는 건가요?
-->그러면 Comparable 인터페이스를 구현하지 않는 클래스가 있다고 할 때, compareTo() 메소드를 구현하지 않아도 Comparator만 만들면 정렬할 수 있는 건가요?

2009-07-288
589

((p 589) 6, 7번 문제에서)

6. myArrayList에 저장된 객체의 클래스에서 Comparable을 구현해야 되나요?
7. myArrayList에 저장된 객체의 클래스에서 Comparator를 구현해야 되나요?
==>
6. myArrayList에 저장된 객체의 클래스에서 Comparable을 꼭 구현해야 되나요?
7. myArrayList에 저장된 객체의 클래스에서 Comparator를 꼭 구현해야 되나요?

2006-10-251
593

((p 593) 오른쪽 아래의 설명에서)

(sort() 메소드는 다시 출력하지 않았습니다.)
==>
(sort() 메소드는 다시 호출하지 않았습니다.)

2006-10-251
16600

(p.600)

class Book implements Comparable {
==>class Book implements Comparable<Book> {

return (title.compareTo(book.title));
==>return title.compareTo(book.title);

tree.add(new Book("How Cats Work"));
tree.add(new Book("Finding Emo"));
tree.add(new Book("Remix your Body"));
==>
tree.add(b1);
tree.add(b2);
tree.add(b3); 

2009-08-019
16603

(p.603)

animal eating
animal eating
animal eating
animal eating
animal eating
animal eating
-->
animal eating
animal eating
animal eating 

2009-08-018
613

((p 613) 정답의 예제에서)

다음의 네번째 예제도 컴파일 가능하므로 X표 해야합니다.

ArrayList<Dog> dogs = new ArrayList<Dog>();
==>
다음의 네번째 예제도 컴파일 가능하므로 X표 해야합니다.

ArrayList<Dog> dogs = new ArrayList<Dog>();

2006-10-251
17619

(p.619 (8쇄))

잠시 후에 더 다듬어 보겠지만 일단 지금은 모든 클래스를 파일이 'classes'라는 이름을 가진 디렉토리에 집어넣겠습니다.
-->잠시 후에 더 다듬어 보겠지만 일단 지금은 모든 클래스 파일을 'classes'라는 이름을 가진 디렉토리에 집어넣겠습니다. 

2009-07-038
17619

(p.619, 620)

문서그림안의 코드 MyiApp --> MyApp 

2009-07-038
623

((p 623) \'3. 디렉토리 ...\'의 첫번째 문단 여섯번째 줄에서)

PackageExercise라면 PakcageExercise의 소스 코드는
==>
PackageExercise라면 PackageExercise의 소스 코드는

2006-10-251
624

((p 624) 왼쪽 중간의 설명에서)

클래스 디렉토리에 올바를 패키지
==>
클래스 디렉토리에 올바른 패키지

2006-10-251
17625

(p.625 (8쇄))

그러면 JVM에서는 현재 디렉토리 그리고 다른 클래스경로)에서 'com'이라는 디렉토리를 찾습니다.
-->그러면 JVM에서는 현재 디렉토리 그리고 다른 클래스경로에서 'com'이라는 디렉토리를 찾습니다. 

2009-07-038
17626

(p.626, 627)

오른쪽 그림
MENIFEST.IMF
-->META-INF

Main-Class MiniApp
-->Main-Class: com.headfirst.java.PackageExcercise

MENIFEST.MF
-->MANIFEST.MF

하단그림
Main-Class MiniApp
-->Main-Class: com.headfirst.java.PackageExcercise

MENIFES.MTF
-->-->MANIFEST.MF 

2009-08-018
17626

(p.626 (8쇄))

문서그림안의 코드 Main-Class MiniApp --> Main-Class com.headfirstjava.PackageExercise 

2009-07-038
17628

(p.628)

가운데 그림 속
Main-Class MiniApp
-->Main-Class: javaranch.cows.Foof 

2009-08-018
17633

(p.633)

JWS 애플리케이션에서 읽어서 JAR 파일을 찾아내고-->JWS 보조 애플리케이션에서 읽어서 

2009-08-018
17634

(p.634)

위에서 세번째 그림
.html 그림삭제해야 함
-->이 단계에서는 아직 웹페이지가 만들어지지 않았음 

2009-08-018
17638

(p.638)

16. JWS 애플리케이션이 제대로 작동하려면 .nlp(네트워크 구동 규약, Network Launch Protocol)파일이 필요합니다.
-->16. JWS 애플리케이션이 제대로 작동하려면 .jnlp(자바 네트워크 구동 규약, Java Network Launch Protocol)파일이 필요합니다. 

2009-08-018
17642

(p.642)

하지만 JVM에서는 그 자신의 힙에 있는 레퍼런스에 대한 것만 알고 싶습니다.
==>하지만 JVM에서는 그 자신의 힙에 있는 인스턴스에 대한 것만 알고 싶습니다. 

2009-08-019
18642

(p.642 (8쇄))

즉, 호출하는 객체와 호출을 당하는(호출되는 메소드가 들어있는)개체는 똑같은 힙 안에 들어 있습니다.
-->즉, 호출하는 객체와 호출을 당하는(호출되는 메소드가 들어있는)객체는 똑같은 힙 안에 들어 있습니다. 

2009-07-038
646

((p 646) 세번째 문단의 1~2번째 줄에서)

아닙니다(서비스에서 제공하는 것과 같은 메소드가 있기 때문에). 원격 서비스인 것처럼 행동하긴 하지만
==>
아닙니다. (서비스에서 제공하는 것과 같은 메소드가 있기 때문에) 원격 서비스인 것처럼 행동하긴 하지만

2006-10-251
18648

(p.648)

클라이언트 입장에서 볼 때 로컬 메소드를 호출하는 것처럼 보일지 몰라도 엄연히 클라이언트 보조 클래스에서 메소드 호출을 네트워크를 통해서 보냅니다.
-->클라이언트 입장에서 볼 때 로컬 메소드를 호출하는 것처럼 보일지 몰라도 엄연히 클라이언트 보조 객체에서 메소드 호출을 네트워크를 통해서 보냅니다. 

2009-08-018
18649

(p.649)

나중에 클라이언트에서 메소드를 호출할 때는 이 객체에 대해 호출합니다.
-->최종적으로 클라이언트에서 메소드를 호출할 때는 이 객체에 대해 호출합니다. 

2009-08-018
18649

(p.649 (8쇄))

1단계 오른쪽에서
MyService.java --> MyRemote.java
public interface MyRemode extends Remode{}
-->public interface MyRemote extends Remote{}

2단계 오른쪽에서
MyService.java --> MyRemoteImpl.java
public interface MyRemode extends Remode{}
-->public class MyRemoteImpl extends UnicastRemoteObject implements MyRemote{} 

2009-07-088
18650

(p.650, 651 (8쇄))

문서그림안의 코드 MyRemode extends Remode{} --> MyRemote extends Remote{} 

2009-07-038
18651

(p.651 (8쇄))

이런 문제를 해결할 수 있는 유일한 방법은 원격 인터페이스를 구현한 인터페이스의 생성자도 RemoteException을 던지는 것으로 선언하는 것입니다.
-->이런 문제를 해결할 수 있는 유일한 방법은 원격 인터페이스를 구현한 클래스의 생성자도 RemoteException을 던지는 것으로 선언하는 것입니다. 

2009-07-038
18651

(p.651 오른쪽 문서그림안의 코드)

public interface MyRemode extends Remode{}
-->public class MyRemoteImpl extends UnicastRemoteObject implements MyRemote{} 

2009-08-018
18651

(p.651)

원격 인터페이스를 구현한 클래스를 등록하면 RMI 시스템에서는 그 스터브를 레지스트리에 집어넣습니다.
-->원격 인터페이스를 구현한 서비스 객체를 등록하면 RMI 시스템에서는 서비스를 스터브로 대체하고 그 스터브를 레지스트리에 집어넣습니다. 

2009-08-018
18653

(653페이지 예제소스)

내용 try {
   MyRemote service = new MyRemoteImpl();
    Naming.rebind("Remote Hello", service);        => RemoteHello
   System.out.println("Server Ready!!");
  } catch (RemoteException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (MalformedURLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } 

2007-07-035
18653

(p.653 (8쇄))

Naming.rebind("RemoteHello", service);
-->Naming.rebind("Remote Hello", service); 

2009-07-038
18654

(p.654)

클라이언트에서는 항상 원격 인터페이스를 구현한 클래스를 서비스 유형으로 사용합니다.
-->클라이언트에서는 항상 원격 인터페이스를 서비스 유형으로 사용합니다. 

2009-08-018
18656

(p.656 (8쇄))

서버쪽 그림에서 MyRemoteImpl_Stub.class 한 개를 수정=> MyRemoteImpl.class   
  

2009-07-038
18656

(p.656)

클라이언트 클래스에 스터브 클래스를 집어넣는 것을 잊어버리는 경우도 많이 있습니다.
-->클라이언트에 스터브 클래스를 집어넣는 것을 잊어버리는 경우도 많이 있습니다. 

2009-08-018
18656

(p.656)

오른쪽 그림
원 세개 그림에서 하나가 이름이 없음
--> 스터브

2009-08-018
18660

(p.660)

오른쪽 그림
MyServlet A.class
-->MyServletA.class

MyServlet.class
-->MyServletA.class 

2009-08-018
18672

(p.672)

서버에서 서비스 브라우저로 향하는 화살표가 빠져있음 

2009-08-018
704

((p 704) 가운데 그림 설명 중에서)

a2d[1] 

int  배열(iint[])
==>
a2d[1][0]

int  배열(int[])

2006-10-251