다음 표에는 기본 유형과 해당 객체 래퍼 클래스가 나열되어 있습니다.
기본 유형 | 포장 클래스 |
boolean | Boolean |
char | Character |
byte | 바이트 |
짧게 | |
참조 유형과 기본 유형은 완전히 다르게 동작하며 의미도 다릅니다. 예를 들어, 메서드에 두 개의 지역 변수가 있고 하나의 변수는 기본 유형 int이고 다른 변수는 Integer 개체에 대한 개체 참조라고 가정합니다. | int i = 5; // 原始类型 Integer j = new Integer(10); // 对象引用 | 두 변수는 모두 지역 변수 테이블에 저장되며 둘 다 Java는 피연산자 스택에서 작동하지만 완전히 다르게 표현합니다. (이 기사의 나머지 부분에서는 피연산자 스택이나 지역 변수 테이블 대신 일반 용어 스택이 사용됩니다.) 기본 유형 int와 객체 참조는 각각 스택의 32비트를 차지합니다. (int 또는 객체 참조를 나타내려면 Java 가상 머신 구현에 최소 32비트 저장소가 필요합니다.) Integer 객체에 대한 스택 항목은 객체 자체가 아니라 객체 참조입니다.
참조 유형과 기본 유형은 서로 다른 특징과 사용법을 가지고 있습니다. 여기에는 크기 및 속도 문제, 이 유형이 저장되는 데이터 구조 유형, 참조 유형과 기본 유형이 클래스의 인스턴스 데이터로 사용될 때 발생하는 일이 포함됩니다. 기본값. 객체 참조 인스턴스 변수의 기본값은 null인 반면 기본 유형 인스턴스 변수의 기본값은 해당 유형에 따라 다릅니다. | 많은 프로그램의 코드에는 기본 유형과 해당 개체 래퍼가 모두 포함됩니다. 두 유형을 모두 사용하여 올바르게 상호 작용하고 공존하는 방식을 이해하는 것은 동일한지 확인할 때 문제가 됩니다. 프로그래머는 코드의 오류를 방지하기 위해 이 두 가지 유형이 어떻게 작동하고 상호 작용하는지 이해해야 합니다. 예를 들어, 기본 유형에서는 메소드를 호출할 수 없지만 객체에서는 메소드를 호출할 수 있습니다. |
import java.awt.Point; class Assign { public static void main(String args[]) { int a = 1; int b = 2; Point x = new Point(0,0); Point y = new Point(1,1); //1 System.out.println(“a is ” + a); System.out.println(“b is ” + b); System.out.println(“x is ” + x); System.out.println(“y is ” + y); System.out.println(“Performing assignment and ” + “setLocation.。.”); a = b; a++; x = y; //2 x.setLocation(5,5); //3 System.out.println(“a is ”+a); System.out.println(“b is ”+b); System.out.println(“x is ”+x); System.out.println(“y is ”+y); } } | 이 코드는 다음과 같은 출력을 생성합니다. a is 1 b is 2 x is java.awt.Point[x=0,y=0] y is java.awt.Point[x=1,y=1] Performing assignment and setLocation.。. a is 3 b is 2 x is java.awt.Point[x=5,y=5] y is java.awt.Point[x=5,y=5] | 정수 a와 b를 수정한 결과는 놀라운 일이 아닙니다. b의 값은 정수 변수 a에 할당되어 a의 값이 1만큼 증가합니다. 이 출력은 우리가 원하는 것을 반영합니다. 그러나 놀라운 것은 setLocation을 할당하고 호출한 후 x 및 y 객체의 출력입니다. x = y 할당을 완료한 후 x에서 setLocation을 구체적으로 호출했습니다. 어떻게 x와 y의 값이 같을 수 있습니까? 결국 우리는 y를 x에 할당한 다음 x를 변경했습니다. 이는 정수 a와 b로 수행한 것과 다르지 않습니다.
x = y; | 문 다음에 x는 y와 같습니다. 즉, x와 y는 객체 참조이므로 이제 동일한 객체를 참조합니다. 따라서 x를 변경하면 y도 변경됩니다. //1의 코드가 실행된 후 상황은 다음과 같습니다. /2의 할당이 실행된 후의 상황은 다음과 같습니다. |
참조 유형과 기본 유형을 구별하고 참조의 의미를 이해하는 것이 중요합니다. 이렇게 하지 않으면 작성된 코드가 의도한 작업을 수행할 수 없게 됩니다.
위 내용은 Java의 참조 유형과 기본 유형의 차이점은 무엇입니까의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!