ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 변수와 메서드
    Programming/JAVA 2020. 5. 18. 23:25

    변수

    1)인스턴스 변수

    클래스 영역에 선언하면서 인스턴스(객체)를 만들 때 생성 된다. 인스턴스는 독립된 저장공간을 가지므로 서로 다른 값을 가질 수 있으며 객체 마다 고유 상태를 유지해야할 때 인스턴스 변수로 선언한다.

     

    2)클래스 변수

    클래스 변수를 선언하는 방법은 인스턴스 변수 앞에 static을 붙이기만 하면 된다. 한 클래스에 모든 인스턴스가 공통값을 유지해야할 때 선언한다. 여기서 전역변수로 만들고 싶으면 public을 붙여주면 프로그램 내에서 어디서든 쓸 수 있는 변수가 된다.

     

    3)지역 변수

    for, while 단순 우리가 C에서 했던 문법을 떠올린다. 그냥 단순하게 지역 변수라고 기억하자.

     

    이렇게 단순했었다. card 클래스에 자료형만 붙은 변수는 인스턴스 변수라 칭한다. 그리고 저렇게 static이 붙어있는 것은 인스턴스끼리 서로 공유하는 고유의 값을 지칭한다. 저 코드를 실행했을 때 뜨는 결과값이 이렇다.

    각자의 객체 후 써준 인스턴스 변수는 그 인스턴스의 따로 메모리에 저장되지만. static이 붙었다는 것은 전체공개로 해놀을 수 있다는 거다 . 즉 인스턴스 c1, c2 가 서로 참조하는 변수가 static width, height가 되었다는 뜻이다.

    하지만 보통은 클래스이름.클래스변수 로 표기한다. 인스턴스 변수로 오해하기 쉽기 때문이다.

     


    메서드(method)

     

    메서드의 기본적인 형태의 예

    객체의 메서드 11번줄을 만나는 순간 메서드는 실행을 잠시 멈추고 add메서드를 실행한 후 return을 받으면 다시 퍼블릭 클래스로 돌아와서 이후의 문장들을 실행하게 된다.

     

    * retrun 적을 때 반환 값으로는 그 메서드의 형과 같은 형태로 반환되어야 하지만 void로 선언했을 때는 자동으로 컴파일 할 때 기입해주어서 생략이 가능하다.

     

    메서드를 이용한 참조형 매개변수와 기본형 매개변수

     

    왜 d.x 는 100으로 변경되지 않았는가 ?

    기본형 매개변수를 사용했기 때문이다. 기본형 매개변수를 사용했을 때는 메서드가 기본형 값이 복사되겠지만 참조형 매개변수를 사용했을 때는 객체 자체의 인스턴스 주소를 복사해오기 때문이다.

    이를 변경하기 위해서

    static int change(int x) 이 메서드의 매개변수를 data x 라고 참조형 매개변수로 바꿔보자.

     

     

    이렇게 바뀌었다. 값이 저장된 주소를 change메서드에 넘겨주었기 때문에 값을 읽어오는 것 뿐만아니라 바꾸는 것도 가능하다. 

     

    *참고로 static 메서드 형태 앞에 static을 붙여주면 인스턴스 생성없이도 메서드 호출이 가능하다는거 기억해두자.

     

     

    예로 객체 대신 배열도 가능해서 배열로 메서드를 짜서 실행결과를 출력했다.

    정렬은 옛날에 자료구조 시간에 배웠던 셀렉션 정렬로 만들어보았다.

    이거는 나중에 복학해서 알고리즘 시간 때 천천히 정리하면서 게시판 만들어서 적어봐야겠다.

    'Programming > JAVA' 카테고리의 다른 글

    오버라이딩(overriding)  (0) 2020.06.09
    상속(inheritance) - 중간 저장  (0) 2020.06.08
    오버로딩 (overloading)  (0) 2020.05.28
    멤버 변수 (스크랩)  (0) 2020.05.28
    클래스와 객체  (0) 2020.05.14
Designed by Tistory.