Java 변수 선언, 메모리 할당 및 초기화 정보
class Person
{
String name;
int age;
void talk()
{
System.out.println(" : "+name+", : "+age+" ");
}
}
public class TestJava2_1
{
public static void main(String args[])
{
Person p;
if (p == null)
{
p = new Person();
}
p.name = " ";
p.age = 25;
p.talk();
}
}
자바에서 변수의 사용 방식을 더 잘 이해하기 위해 우리는 실험을 하나 한다.위 코드를 TestJava2_ 로 저장1.java 파일, 이후 "javac TestJava2_1.java"명령을 실행하여 코드를 바이너리 파일로 컴파일합니다.컴파일할 때 오류가 보고됩니다. 오류는 다음과 같습니다.
"TestJava2_1.java:59: 오류: 변수 p가 초기화되지 않았을 수 있습니다."
컴파일러는 인용 데이터 형식 변수 p가 초기화되지 않았기 때문에null과 같은지 판단할 수 없지만, 컴파일러가 이 오류에 대한 설명이 정확하지 않다고 생각합니다.변수 p가 초기값을 주지 않아도 기본값이 최소한 존재한다면 기본값과null을 비교하면 안 될 것이 뭐가 있겠는가.나는 정확한 오류 설명은 "변수 p가 메모리 공간을 분배하지 않았다"는 것이라고 생각한다.'Person p'는 인용 데이터 형식 변수 p가 있음을 설명하는 것일 뿐, p에 메모리 공간을 분배하지 않았다는 점은 C/C++와 다르다.
변수 p의 설명을 "Person p = null"로 바꾸면 "javac TestJava2_1.java"를 실행하면 성공적으로 컴파일할 수 있습니다.이를 통해 알 수 있듯이 "Person p =null"문장은 변수 p의 초기 값을 부여하는 것 외에 값을 부여하기 전에 변수 p에 메모리 공간을 분배했다.
위의 실험에서 알 수 있듯이 자바에서 데이터 형식 변수를 인용하는 메모리 분배는 초기 값을 부여할 때 진행된다.같은 방법으로 Java의 기본 데이터 형식 변수를 테스트하면 변수가 설명할 때 메모리를 분배하지 않고 진정한 메모리 분배는 초기 값을 부여할 때 진행되는 것을 발견할 수 있다.
주석에 오류가 있습니다. inta라면;
a 변수는 메모리 단원을 분배한 것이다.a 기본값은 0입니다.
그래서 기본 형식은 설명할 때 메모리 단원을 분배합니다.
이상의 자바 변수에 대한 성명, 메모리 분배 및 초기화에 대한 상세한 설명은 바로 편집자가 여러분에게 공유한 모든 내용입니다. 여러분께 참고가 되고 저희를 많이 사랑해 주시기 바랍니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
38. Java의 Leetcode 솔루션텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.