2021년 11월 19일 금요일

(자바동영상/자바강의)JAVA변수의 종류 클래스변수, 인스턴스변수, 지역변수, 매개변수

 (자바동영상/자바강의)JAVA변수의 종류  클래스변수, 인스턴스변수, 지역변수, 매개변수 


(자바교육/자바동영상/자바강의)JAVA변수의 종류  클래스변수, 인스턴스변수, 지역변수, 매개변수 


https://youtu.be/5CyNDCnruy4





 

지역변수(local variables)

매개변수(parameters)

인스턴스 변수(instance fields)

클래스 내에서 선언

클래스 변수(class fields)

클래스 필드, 정적 변수, 정적 필드

 

1. 클래스 변수

클래스의 인스턴스(객체)가 아니라 그것이 정의된 클래스와  연관되므로 Runtime Data Area의 Method Area에 한 개 존재한다. 

객체를 아무리 많이 생성하더라도 하나만 존재하며 초기화가 한번만 진행된다. (주로 전역변수, 상수로 사용 된다)

생성시기 : 최초 new 하는 경우 또는 Class가 최초로 참조되는 경우

static 한정자는 이 변수(필드, 멤버)가 클래스필드 임을 의미

상수를 정의 하는 것이 클래스 변수의 일반적인 사용이다.

    static final double PI=3.14;

    final static double PI=3.14;

같은 클래스 내부에서는 PI로 지칭되며 클래스 외부에서 해당 변수(필드)를 유일하게 지칭하기 위해서는 클래스명.PI로 인스턴스를 생성하지 않고도 직접 참조가 가능(물론 인스턴스를 만든 후 객체참조변수.PI형태의 참조도 가능하다.)

 

 

 

2. 인스턴스 변수

static으로 선언되지 않은 모든 멤버 변수(필드)는 인스턴스 변수이다.

   public double r;

클래스의 인스턴스인 객체와 관련이 있고 인스턴스(객체)의 현재 상태를 나타내며 생성된 모든 객체는 자신만의 복사본을 힙 메모리에 가진다. 

클래스를 N번 new 했다면 N개의 인스턴스(객체)가 메모리 힙에 존재한다.

클래스 내부에서 이름 하나만으로 지칭된다 

public double r;

    public double area() {

       return PI * r * r;

    }

클래스 외부에서 r을 가리킬 때는 클래스를 인스턴스화 한 객체참조변수명.변수 형태로 사용한다.(반드시 어떤 개체의 인스턴스 변수인지 지정해야 한다.) 인스턴스 변수의 값은 하나의 객체를 다른 객체와 구분한다

    Circle c1 = new Circle();     c1.r=3.0;

    Circle c2 = new Circle();     c2.r=9.0;

 

 

3. 로컬 변수

자바에서 메소드 내부에서 정의되어 사용되는 변수를 로컬 변수라고 한다.

다음과 같은 코드를 보자.

class A {

void a() {

boolean b;

System.out.println(b);  //b가 초기화되지 않았다고 오류

}

}

로컬 변수는 자동초기화를 하지 않는다.

- JVM에서 a() 메소드의 스택 프레임에 b라는 변수를 생성해야 하지만  로컬변수는 JVM에서 자동초기화를 하지 않아 b의 초기값이 없기에 b라는 변수는 생성되지 않는다. 이러한 상태에서 b를 사용하려 하면 실행 중에 문제가 생기므로 컴파일 에러를 발생시키는 것이다.

 

 

 

 

** 멤버변수(클래스,인스턴스변수)의 초기화 

boolean  false

char  ‘\u0000’

Byte : short : int : long  0

Float  0.0f

Double  0.0d

Object type  null

 

 

** 클래스 변수, 인스턴스 변수 예제

public class Ojc1_1 {

int kk;          //인스턴스변수

static int kkk;  //클래스변수

public static void main(String[] args) {

int i = Ojc1_1.kkk;

Ojc1_1 o1 = new Ojc1_1();

Ojc1_1 o2 = new Ojc1_1();

System.out.println(o1.kk);

System.out.println(o2.kk);

}

}

 

 

 


 

 

#자바, #JAVA, #자바변수, #클래스변수, #인스턴스변수, #자바동영상, #자바동영상강의, #자바강의, #자바강좌, #JAVA, #JAVA동영상, #JAVA강의, #JAVA강좌, #자바교육, #JAVA교육, #자바인터프리터, #자바컴파일, #자바실행, #자바소스  

 

 

댓글 없음:

댓글 쓰기

(C#교육동영상)C# ADO.NET 실습 ODP.NET/ODAC 설치 오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원

  (C#교육동영상)C# ADO.NET 실습  ODP.NET/ODAC 설치  오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원 https://www.youtube.com/watch?v=qIPU85yAlzc&list=PLxU-i...