프로그래밍/자바(java) 융합개발자 2차

[취성패] 자바 배우기 - 선수학습(static)

aSpring 2020. 12. 12. 20:51
728x90
728x90

[정적 멤버변수]

1. static 개요

- 일반적으로 클래스의 객체가 생성될 경우 멤버변수는 각각의 객체가 독립적으로 사용

- 여러 객체가 멤버변수를 공유하고자 할 경우 static 키워드 사용

 

- static 멤버변수 정의 문법

 

class ExamStatic {       -> 클래스 명칭 : ExamStatic

  static int count = 0;  -> 멤버변수 2개 정의 count(객체가 여러개 생성되어도 공유 가능), age

  int age = 30;

}

 

- 위와 같은 클래스의 경우 count 변수는 생성된 객체에서 공유할 수 있으며 age 변수는 객체마다 독립적으로 유지됨

 

ExamStatic a = new ExamStatic();

ExamStatic b = new ExamStatic();

 

count(공유됨)
age = 30 age = 30

a                                   b

a나 b 객체에서 count 변수가 변하게 되면 같이 변함

 

- static 멤버변수는 생성된 객체의 개수를 셀 필요가 있을 경우 유용하게 사용

- static 멤버변수는 아래와 같이 객체 생성 없이 멤버에 접근 가능

ex) ExamStatic.count;

- static 멤버변수는 클래스명으로도 접근할 수 있고 객체 생성 후 객체변수로도 접근 가능

- static 멤버변수는 객체 생성 이전에 메모리 할당 -> new 연산자를 이용한 생성 없이 사용 가능

 

 

2. 정적 멤버변수 정의와 활용

- 정적 멤버변수를 정의

class ExamStatic {

 static int count = 0;

}

 

- 정적 멤버변수 사용 : 접근 방법 2가지

 -> 객체 생성 후 객체변수로 접근

     ExamStatic test = new ExamStatic();

       test.count = 1;

 -> 클래스명으로 접근

     ExamStatic.count = 2;

     클래스명.멤버변수명

 

 

 

class TestCls {

  static int num = 0;

}

TestCls.num = 1;

 

+예제 : 정적 멤버변수 예제

 

class ExamStatic {

 static int count = 0;

}

 

public class ExamTest {

 public static void main(String args[]) {

  System.out.println(ExamStatic.count);   -> count 변수 0 출력

  ExamStatic.count = 1;                      -> count 변수를 1로 변경

  System.out.println(ExamStatic.count);   -> Static 변수이므로 count변수 출력값 1

 }

}

 

[정적 메서드]

1. 정적 메서드 개요

- 클래스 차원에서 사용 가능한 메서드

- 객체 생성 없이 클래스명으로 간편하게 호출 가능

- 정적 메서드 내에서는 일반 멤버변수 사용 불가능

- 정적 메서드 정의 예

class ExamStatic {

 static int count = 0;

 int age = 30;

 public static int getCount() {     -> getCount라는 메서드 정의, 반환 타입은 int. 정적 메서드

   return count;

 }

}

 

- 정적 메서드 호출 예

1) 객체생성 후 객체변수를 이용해서 접근하는 방법

ExamStatic test = new ExamStatic();

test.getCount();

2) 클래스명으로 직접 접근하는 방법(객체 생성 없이)

ExamStatic.getCount();

 

2. 정적 메서드 활용

- 라인을 출력하기 위한 정적 메서드의 정의 밒 사용

class ExamStatic {

 public static void printLine() {

  System.out.prinln("=========================");

 }

 public static void main(String args[]) {

  ExamStatic.printLine();    -> new를 사용한 객체 생성없이 클래스명으로 바로 호출

 }

}

 

- 자바에서 제공하는 수학관련 클래스인 Math 클래스의 정적 메서드를 사용

-> 0.0과 1.0사이의 난수를 출력

System.out.println(Math.random());  -> 임의의 실수값 출력

-> 제곱근을 출력

System.out.println(Math.sqrt(25.0));  -> 5.0을 반환

 

- static 메서드와 멤버변수 정의 및 사용 예

public class Exam12_1 {

   static int count = 0;

   int age = 30;

   public static int getCount();

      return count;

   }

   public static void main(String[] args) {

      System.out.println(Exam12_1.getCount()); -> 0

      Exam12_1.count++;

      System.out.println(Exam12_1.getCount()); -> 1

   }

}

 

- 자바에서 제공하는 Math 클래스 사용 예

public class Exam12_2

   public static void main(String[] args) {

      System.out.println(Math.random());

      System.out.println(Math.sprt(25.0));

   }

}

 

 

.. 무슨 말인지 잘 모르겠다.

728x90
728x90