java
Java의 스택은 메소드, 지역 변수 및 참조 변수를 포함하는 메모리 섹션입니다. 스택 메모리는 항상 후입선출 순서로 참조됩니다. 스택에 로컬 변수가 생성됩니다.
힙은 객체를 포함하고 참조 변수도 포함할 수 있는 메모리 섹션입니다. 인스턴스 변수는 힙에 생성됩니다.
자바의 메모리 할당 가상 메모리 섹션이 변수와 구조체 및 클래스의 인스턴스를 저장하기 위해 프로그램에서 따로 설정되는 프로세스입니다. 그러나 선언 시 메모리는 객체에 할당되지 않고 참조만 생성됩니다. 객체의 메모리 할당은 new() 메서드를 사용하므로 객체는 항상 힙에 메모리를 할당받습니다.
Java 메모리 할당은 다음 섹션으로 나뉩니다.
이 메모리 분할은 효과적인 관리를 위해 필요합니다.
인스턴스 변수 클래스 내부에 선언되지만 메소드 내부에는 선언되지 않음
class Student{ int num; // num is instance variable public void showData{}
로컬 변수 내부에 선언됨 메서드 메소드 인수 .
public void sum(int a){ int x = int a + 3; // a , x are local variables; }
동영상에 액세스할 수 없는 경우 여기를 클릭하십시오.
이를 더 잘 이해하기 위해 예를 들어보겠습니다.
메소드 m1
을 호출하는 주요 메소드를 고려하십시오.public void m1{ int x=20 }
스택 자바에서 프레임은 m1 메소드에서 생성됩니다.
m1의 변수 X는 스택의 m1에 대한 프레임에도 생성됩니다. (아래 이미지 참조).
메소드 m1이 메소드 m2를 호출하고 있습니다. 스택 java에서 프레임 m1 위에 m2에 대한 새 프레임이 생성됩니다.
변수 b와 c도 스택의 프레임 m2에 생성됩니다.
public void m2(int b){ boolean c; }
동일한 메소드 m2가 메소드 m3을 호출하고 있습니다. 다시 스택의 맨 위에 프레임 m3이 생성됩니다(아래 이미지 참조).
이제 m3 메서드가 int p와 int q라는 두 개의 인스턴스 변수가 있는 "Account" 클래스에 대한 개체를 생성한다고 가정해 보겠습니다.
Account { Int p; Int q; }
다음은 메소드 m3에 대한 코드입니다.
public void m3(){ Account ref = new Account(); // more code }
new Account() 문은 힙에 account 개체를 생성합니다.
참조 변수 "ref"는 스택 java에 생성됩니다.
할당 "=" 연산자는 힙의 개체를 가리키도록 참조 변수를 만듭니다.
메서드가 실행을 완료하면. 제어 흐름은 호출 메서드로 돌아갑니다. 이 경우 방법 m2입니다.
메서드 m3의 스택이 플러시됩니다.
참조 변수는 더 이상 힙의 개체를 가리키지 않으므로 가비지 수집 대상이 됩니다.
메소드 m2가 실행을 완료하면. 스택에서 튀어나오고 모든 변수가 플러시되어 더 이상 사용할 수 없습니다.
방법 m1의 경우도 마찬가지입니다.
결국 제어의 흐름은 프로그램의 시작점으로 돌아갑니다. 일반적으로 "주요" 방법입니다.
객체에 인스턴스 변수로 참조가 있으면 어떻게 되나요?
public static void main(String args[]) { A parent = new A(); //more code } class A{ B child = new B(); int e; //more code } class B{ int c; int d; //more code }
이 경우 참조 변수 "child"가 힙에 생성되며, 이는 차례로 아래 다이어그램과 같이 해당 개체를 가리킵니다.
요약:
java
Java 메소드는 작업을 수행하기 위해 함께 그룹화되는 명령문의 모음입니다. System.out.println()을 호출할 때 예를 들어, 시스템은 콘솔에 메시지를 표시하기 위해 실제로 여러 명령문을 실행합니다. 이제 반환 값이 있거나 없는 고유한 메서드를 만들고 매개 변수가 있거나 없는 메서드를 호출하고 프로그램 디자인에서 메서드 추상화를 적용하는 방법을 배웁니다. 생성 방법 메소드의 구문을 설명하기 위해 다음 예를 고려하십시오 - 구문 public static int methodName(int a, int b) {
자바 8 질문 및 답변 다양한 인증 시험을 준비하는 학생과 전문가를 돕기 위해 특별히 고안되었습니다. 및 취업 면접 . 이 섹션은 인터뷰 질문 및 객관식 질문(MCQ)의 유용한 모음과 적절한 설명과 함께 답변을 제공합니다. SN 질문/답변 유형 1 자바 8 인터뷰 질문 이 섹션에서는 정답을 찾기 전에 먼저 답을 찾아볼 수 있도록 상자에 숨겨진 Java 8 인터뷰 질문 모음을 제공합니다. 2 자바 8 온라인 퀴즈 이 섹션은 정답 및 설명과 함께 한 페이지에 Java 8 MCQ(객관식 질문)의 훌륭한 모음을 제공합니다. 올바른