2016-11-20 4 views
0

프로그램에서 나는 숙제를 쓰고 있는데 read() 스트림을 사용하는 배열로 바이트를 읽는 FileInputStream이 있습니다. 내 프로그램에서 반환 값을 전혀 사용하지 않는다. 관심이 없기 때문이다.FileInputStream.read가 내 바이트 배열을 어떻게 바꿀 수 있습니까?

그러나 실제로 배열을 수정하는 방법이 궁금합니다. 나는 많은 stackoverflow 게시물을 통해 자바가 참조가 아닌 값으로 전달된다는 것을 보여 주었고 심지어 간단한 프로그램으로 직접 증명했다.

이 방법으로 내 바이트 배열을 어떻게 수정합니까?

try { 
    input = new FileInputStream(FileName); 
    bytes = new byte[input.available()]; 
    input.read(bytes); // reads file in as bytes and stores into bytes 
    System.out.println(bytes[0]); 


}catch(IOException e) 
{ 
    e.printStackTrace(); 
} 
+0

전화가 의미하지 않는 개체 수 ' 돌연변이가 생겼다. [이 답변] (http://stackoverflow.com/a/40523/3824919)에서 설명합니다. – Tom

+1

변수 bytes는 실제로 배열 객체에 대한 참조입니다. 메서드에 배열을 전달할 때 참조가 참조하는 실제 배열이 아닌 참조를 복사합니다. –

답변

1

자바 값 의해 read 방법 바이트 배열의 참조를 전달한다. 즉, read 메서드는 로컬 변수 bytes이 다른 바이트 배열을 가리킬 수 없지만 전달한 바이트 배열의 내용을 변경할 수 있습니다.

(자바는 다음 방법은 다른 개체에 대한 지역 변수를 점 할 수있다 "참조 통과"된 경우 - 자바에서 할 수 없습니다)

값을 기준으로