>Java >java지도 시간 >내 Java 바이트 배열이 내용 대신 \'[B@1ef9157\'로 인쇄되는 이유는 무엇입니까?

내 Java 바이트 배열이 내용 대신 \'[B@1ef9157\'로 인쇄되는 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-10-30 05:03:02418검색

Why Does My Java Byte Array Print as

"[B@1ef9157": 바이너리 또는 주소? 이해

Java에서 바이트 배열로 작업할 때 "[ 바이트 배열을 인쇄할 때 B@ 접두사"를 사용합니다. 임의의 문자열이 아닌 배열의 실제 내용을 볼 것으로 예상할 수 있으므로 혼란스러울 수 있습니다.

설명

"[B@ 접두사"는 바이트 배열의 내용을 나타내는 것이 아닙니다. 배열의 개체 ID입니다. 이 ID는 메모리의 배열을 식별합니다.

객체 ID의 구조

객체 ID는 다음으로 구성됩니다.

  • [ : 배열임을 나타냅니다.
  • B: 바이트 배열임을 나타냅니다.
  • @: 유형과 형식을 구분합니다. 객체 ID
  • 1ef9157: 객체 ID의 16진수 표현

바이트 배열 내용 인쇄

목표는 바이트 배열의 실제 값을 인쇄하는 것이므로 바이트를 인쇄 가능한 형식으로 구체적으로 변환하는 방법을 사용해야 합니다. 예를 들어 byteArrayToString() 메서드를 사용할 수 있습니다.

<code class="java">byte[] in = new byte[] { 1, 2, 3, -1, -2, -3 };
System.out.println(byteArrayToString(in));</code>

byteArrayToString() 메서드는 바이트 배열을 16진수 문자의 문자열로 변환하여 읽기 쉽게 만듭니다.

JNI 유형 명명법

"[B@ 접두사"는 JNI(Java Native Interface) 유형 명명법의 일부입니다. 이 명명법은 네이티브 코드에서 Java 유형을 식별하는 데 사용됩니다.

  • B - byte
  • [ - array
  • @ - 유형과 ID 사이의 구분 기호
  • 1ef9157 - 객체 ID

JNI 유형 명명법에 대한 자세한 내용은 다음을 참조하세요. 공식 JNI 문서.

위 내용은 내 Java 바이트 배열이 내용 대신 \'[B@1ef9157\'로 인쇄되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.