오늘은 java.lang.Byte 클래스의 소스코드를 분석해서 바로 본론으로 들어가겠습니다.
우선
public final class Byte extends Number implements Comparable<Byte> { public static final byte MIN_VALUE = -128; public static final byte MAX_VALUE = 127; public static final int SIZE = 8; public static final int BYTES = SIZE / Byte.SIZE; @SuppressWarnings("unchecked") public static final Class<Byte> TYPE = (Class<Byte>) Class.getPrimitiveClass("byte");
첫 번째 문장은 Byte 클래스가 최종 수정되어 상속될 수 없다는 점입니다. 숫자 클래스이며 일련의 숫자 유형에 사용할 수 있습니다. 변환은 비교에 사용할 수 있는 Comparable 인터페이스를 구현합니다.
두 번째 및 세 번째 문장은 최소값과 최대값을 정의합니다.
네 번째 문장은 바이트의 크기를 정의합니다. 이는 8비트, 즉 1바이트입니다.
다섯 번째 문장은 바이트를 제공합니다. 즉, SIZE/Byte.SIZE = 1을 차지합니다.
경고에 대해 침묵하도록 주석이 달린 문장은 이 클래스의 원래 클래스를 가져오는 것입니다.
public Byte(byte value) { this.value = value; } public Byte(String s) throws NumberFormatException { this.value = parseByte(s, 10); }
Byte 클래스의 두 생성자에는 여기에 제한 사항이 있습니다. 전달되는 값은 바이트 유형 값이어야 하며 문자열 s는 숫자로 변환될 수 있는 문자열이어야 합니다. 그렇지 않으면 오류가 보고됩니다
public static String toString(byte b) { return Integer.toString((int)b, 10); } public String toString() { return Integer.toString((int)value); } private static class ByteCache { private ByteCache(){} static final Byte cache[] = new Byte[-(-128) + 127 + 1]; static { for(int i = 0; i < cache.length; i++) cache[i] = new Byte((byte)(i - 128)); } }
- 다음 단계는 바이트 유형을 문자열로 변환하는 toString 메소드이며, 여기에 Integer가 사용됩니다.
다음 ByteCache 메소드는 Byte 캐시 값을 정의하고 -128~을 씁니다. 127을 캐시 배열로 넣습니다. 이 범위에 있으면 JVM은 캐시 값을 직접 사용하지만 이 범위를 초과하면 이전 기사에서 언급한 대로 128이 -128이 되어 계산이 수행됩니다. 최소값부터 계속됩니다.parseByte는 문자열 유형을 바이트 유형으로 구문 분석하며 radix는 무엇입니까? 구문 분석 후 결과는 10진수입니다
public static Byte valueOf(byte b) { final int offset = 128; return ByteCache.cache[(int)b + offset]; } public static Byte valueOf(String s, int radix) throws NumberFormatException { return valueOf(parseByte(s, radix)); } public static Byte valueOf(String s) throws NumberFormatException { return valueOf(s, 10); }
여기서는 radix 매개변수를 직접 가져오는 방법으로 문자열을 10진수로 구문 분석한 다음 valueOf
public static Byte decode(String nm) throws NumberFormatException { int i = Integer.decode(nm); if (i < MIN_VALUE || i > MAX_VALUE) throw new NumberFormatException( "Value " + i + " out of range from input " + nm); return valueOf((byte)i); }
를 수행하는 방법입니다. 이전 메소드는 이렇게 작성하지 않았습니다. 이제 Integer 클래스의 decode 메소드를 직접 호출하여 최소값보다 작거나 최대값보다 큰지 판단한 후 바이트 유형으로 변환하여 반환합니다. "바이트 유형은 Java에 존재하지 않습니다"라는 문장에 실제로 응답합니다
public byte byteValue() { return value; } public short shortValue() { return (short)value; } public int intValue() { return (int)value; } public long longValue() { return (long)value; } public float floatValue() { return (float)value; } public double doubleValue() { return (double)value; }
이것은 강제 유형 변환의 몇 가지 방법으로 매우 간단하지만 여전히 작성됩니다
@Override public int hashCode() { return Byte.hashCode(value); } public static int hashCode(byte value) { return (int)value; }
첫 번째 A hashCode는 Object의 hasCode 메소드를 다시 작성하여 사용됩니다. 두 값을 비교하기 위해 hashCode 메서드는 특히 인터뷰 중에 equals 메서드와 구별되는 경우가 많습니다. 이제 hashCode 메서드는 주로 collections에서 사용됩니다.
public boolean equals(Object obj) { if (obj instanceof Byte) { return value == ((Byte)obj).byteValue(); } return false; }equals 메서드를 이제 비교할 수 있습니다.
public int compareTo(Byte anotherByte) { return compare(this.value, anotherByte.value); } public static int compare(byte x, byte y) { return x - y; }비교 방법, x > y이면 양수를 반환하고, x = y이면 0을 반환합니다. x
public static int toUnsignedInt(byte x) { return ((int) x) & 0xff; } public static long toUnsignedLong(byte x) { return ((long) x) & 0xffL; }바이트 유형을 unsigned int 유형과 long 유형으로 변환
private static final long serialVersionUID = -7183698231559129828L;직렬화 중에 사용됩니다. 지금은 자세히 설명하지 않으며 직렬화를 이해하지 못합니다. 아주 잘. . . .
- 관련 기사:
java int를 바이트로, long을 바이트로
위 내용은 Java의 Byte 클래스 소스 코드에 대한 자세한 분석-단계 세부 사항의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

이 기사에서는 Java 프로젝트 관리, 구축 자동화 및 종속성 해상도에 Maven 및 Gradle을 사용하여 접근 방식과 최적화 전략을 비교합니다.

이 기사에서는 Maven 및 Gradle과 같은 도구를 사용하여 적절한 버전 및 종속성 관리로 사용자 정의 Java 라이브러리 (JAR Files)를 작성하고 사용하는 것에 대해 설명합니다.

이 기사는 카페인 및 구아바 캐시를 사용하여 자바에서 다단계 캐싱을 구현하여 응용 프로그램 성능을 향상시키는 것에 대해 설명합니다. 구성 및 퇴거 정책 관리 Best Pra와 함께 설정, 통합 및 성능 이점을 다룹니다.

이 기사는 캐싱 및 게으른 하중과 같은 고급 기능을 사용하여 객체 관계 매핑에 JPA를 사용하는 것에 대해 설명합니다. 잠재적 인 함정을 강조하면서 성능을 최적화하기위한 설정, 엔티티 매핑 및 모범 사례를 다룹니다. [159 문자]

Java의 클래스 로딩에는 부트 스트랩, 확장 및 응용 프로그램 클래스 로더가있는 계층 적 시스템을 사용하여 클래스로드, 링크 및 초기화 클래스가 포함됩니다. 학부모 위임 모델은 핵심 클래스가 먼저로드되어 사용자 정의 클래스 LOA에 영향을 미치도록합니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.
