(1) static 정적 변수,메서드 로딩
클래스 내부에 있는 static 키워드가 있는 메서드를 메모리로 먼저 로딩한다.
정적 (static)전역 변수 및 정적(static)초기화 블록에 대한 호출은 클래스 정보가 메모리에 로딩되지 않은 상태에서 첫 번째 객체가 생성되는 시점에 호출된다.
(2) 정적 (static) 초기화 블록
정적 전역변수 중에서는 시스템구성 정보와 같이 파일에서 정보를 읽어와 최초 로딩시 자료를 저장하는 경우 쓰인다.
최초 초기화 작업을 하며 특히 정적 전역변수의 초기값을 설정하는데 사용된다.
static {
}
class Ramborgini {
private static String name ; //static 전역변수
private static String Maxdrive;
static{ } //초기화 블록
public void run(){
System.out.println("랍보르니기가 달린다." ); }
}
(2)static zone에서 main()메서드를 실행한다.(호출 ,시작)
main() method가 호출되면 main() method의 호출정보가 Stack Area에 들어간다(push)
main 메서드는 프로그램이 시작되는 부분이다.
(3)전역 변수(인스턴스 변수)
기본값으로 먼저 초기화 된다.
(4)초기화 블록
(5)생성자
객체의 초기화 작업을 진행한다. 인스턴스 변수에 원하는 값을 설정할 수 있따.
2)최초 클래스 메모리 로딩이 아닌 경우
(1)전역변수 로딩
(2)초기화 블록
객체 생성시 외부 파라미터와 관련하여 초기화 작업을 수행 할 때 사용한다.
(3)생성자 함수
package com.java.class01.design.calculator;
import java.util.Scanner;
public class CalculExam {
//클래스 실행순서 1.static 메서드 2.전역변수 3.생성자 메서드
int a; //2.전역변수
//1.static 메서드
public static void main(String[] args) {
// 계산기 프로그램
// 1.객체 생성
Calculaltor c = new Calculaltor(); //3.생성자 메서드:초기화 메서드
System.out.println("*******[계산기]*********** ");
// 2.값 입력
output(); //static 이텔릭체
int num1 = 0;
int num2 = 0;
System.out.print("첫번째 정수값:");
num1 = c.inputNumber();
System.out.print("두번째 정수값:");
num2 = c.inputNumber();
System.out.println("첫번째 정수값:" + num1 + "입니다.");
System.out.println("첫번째 정수값:" + num2 + "입니다.");
int add = c.addCal(num1, num2);
int minus = c.minusCal(num1, num2);
int multiple = c.multipleCal(num1, num2);
double division = c.divisionCal(num1, num2);
int remainder = c.remainderCal(num1, num2);
System.out.println("두정수의 합:" +add);
System.out.println("두정수의 차:" +minus);
System.out.println("두정수의 곱:" +multiple);
System.out.println("두정수의 몫:" +division +"나머지:" +remainder);
}
private static void output() {
// TODO Auto-generated method stub
}
}