2014-11-28 3 views
0

문자열 이름에 패스 이름을 전달하는 동안 이전에 생각해 본 적이없는 것을 발견했습니다. 문자열 리터럴에 파일 경로를 넣으려면 경로가 제대로 중단되도록 백 슬래시를 이스케이프 처리해야합니다. 즉 C : \ Program Files (x86) \ Phoenix 경로가 있으므로 문자열 리터럴에서자바에서 문자열 동작에 이스케이프 문자 추가

그러나 "C : \ Program Files (x86) \ Phoenix"와 같이 지정된 텍스트 파일에서이 값을 읽었을 때 문자열이 잘 처리 될 수있는 setter 메서드를 사용하는 것으로 나타났습니다

public void setLocation(String location) { 
     this.location = location; 
} 

object.setlocation(**valuereadfromtextile**); 

왜 자바가 텍스트 파일의 경로를 벗어날 필요가 없나요? 또한 디버거에서 변수를 볼 때 Eclipse는 자동으로 두 번째 문자열에 이스케이프 문자를 추가합니다. 왜 그런가? 동적으로 읽어 무엇이든

답변

1

(파일에서이 명령 줄 매개 변수) 문자열이 컴파일러

에 의해 해석됩니다 소스 코드의 일부가 아닌 "백 슬래시 (앞에 문자)는이다 이스케이프 시퀀스이며 컴파일러에게는 특별한 의미가 있습니다. " Java Language Specs