728x90
참조자료형 변수
- 변수의 자료형은 기본 자료형과 참조 자료형으로 구분된다.
- 기본 자료형 : int, long, float, double 등
- 참조 자료형 : String, Date, Student 등 (클래스)
- 참조 자료형 변수는 클래스형으로 변수를 선언한다.
- 기본 자료형은 사용하는 메모리의 크기가 정해져 있지만, 참조 자료형은 클래스에 따라 다르다.
- 참조 자료형을 사용 할때는 해당 변수에 대해 생성하여야 한다.
단, String 클래스는 예외적으로 생성하지 않고 사용할 수 있다.
접근 제어 지시자와 정보 은닉
접근 제어 지시자(access modifier)
- 클래스 외부에서 클래스의 멤버 변수, 메서드, 생성자를 사용할 수 있는지 여부를 지정하는 키워드
- private : 같은 클래스 내부에서만 접근 가능 ( 외부 클래스, 상속 관계의 클래스에서도 접근 불가)
- default (기본) : 같은 패키지 내부에서만 접근 가능 ( 상속 관계라도 패키지가 다르면 접근 불가)
- protected : 같은 패키지나 상속관계의 클래스에서 접근 가능하고 그 외 외부에서는 접근 할 수 없음
- public : 클래스의 외부 어디서나 접근 할 수 있음
정보 은닉(infomation hiding)
- private으로 제어한 멤버 변수도 public 메서드가 제공되면 접근 가능하지만 변수가 public으로 공개되었을 때보다 private 일때 각 변수에 대한 제한을 public 메서드에서 제어 할 수 있다.
- 객체 지향 프로그램에서 정보 은닉은 필요한 외부에서 접근 가능한 최소한의 정보를 오픈함으로써 객체의 오류를 방지하고 클라이언트 객체가 더 효율적으로 객체를 활용할 수 있도록 해준다.
캡슐화(encapsulation)
- 정보 은닉을 활용하여 꼭 필요한 정보와 기능만 외부에 오픈함
- 대부분의 멤버 변수와 메서드를 감추고 외부에 통합된 인터페이스만은 제공하여 일관된 기능을 구현 하게 함
- 각각의 메서드나 멤버 변수를 접근함으로써 발생하는 오류를 최소화 한다.\
객체 자신을 가리키는 This
this의 역할
- 인스턴스 자신의 메모리를 가리킴
- 생성자에서 또 다른 생성자를 호출 할때 사용
- 자신의 주소(참조값)을 반환 함

생성자에서 다른 생성자를 호출하는 방법
Student(){
this("no name", 0);
}
Student(String name, int grade){
this.name = name;
this.grade = grade;
}
객체간의 협력
- 객체 지향 프로그램에서 객체 간에는 협력이 이루어짐
- 협력을 위해서는 필요한 메세지를 전송하고 이를 처리하는 기능이 구현되어야 함
- 매개 변수로 객체가 전달되는 경우가 발생
여러 인스턴스에서 공통으로 사용하는 변수 만들기 - static
static은 언제 사용할까?
- 여러 인스턴스가 공유하는 기준 값이 필요한 경우
- ex) 학생마다 새로운 학번 생성 카드회사에서 카드를 새로 발급할때마다 새로운 카드 번호를 부여 회사에 사원이 입사할때 마다 새로운 사번 부여
- 선언하는 방법
public static int serialNumber = 0;
변수의 유효범위와 메모리
- 변수의 유효 범위(scope)와 생성과 소멸(life cycle)은 각 변수의 종류마다 다름
- 지역변수, 멤버 변수, 클래스 변수는 유효범위와 life cycle, 사용하는 메모리도 다름

- static 변수는 프로그램이 메모리에 있는 동안 계속 그 영역을 차지하므로 너무 큰 메모리를 할당하는 것은 좋지 않음
- 클래스 내부의 여러 메서드에서 사용하는 변수는 멤버 변수로 선언하는 것이 좋음
- 멤버 변수가 너무 많으면 인스턴스 생성 시 쓸데없는 메모리가 할당됨
- 상황에 적절하게 변수를 사용해야 함
static 응용 - 싱글톤 패턴
싱글톤 패턴(singleton pattern)이란?
- 프로그램에서 인스턴스가 단 한 개만 생성되어야 하는 경우 사용하는 디자인 패턴
- static 변수, 메서드를 활용하여 구현 할 수 있음
배열(Array)
배열이란?
- 동일한 자료형의 순차적 자료 구조
- 인덱스 연산자[]를 이용하여 빠른 참조가 가능
- 물리적 위치와 논리적 위치가 동일
- 배열의 순서는 0부터 시작
- 자바에서는 객체 배열을 구현한 ArrayList를 많이 활용함
배열의 선언
int[] arr = new int[size];
int arr2[] = new int[size];
2차원 배열
- 이차원 이상으로 구현 된 배열
- 평면 (이차원 배열) 이나 공간(삼차원 배열)을 활용한 프로그램 구현

객체 배열을 구현한 ArrayList
ArrayList란?
- 기존의 배열 선언과 사용 방식은 배열의 길이를 정하고 요소의 개수가 배열의 길이보다 커지면 배열을 재할당하고 복사해야 했음
- 또한, 배열의 요소를 추가하거나 삭제하면 다른 요소들의 이동에 대한 구현을 해야 함
- ArrayList는 객체 배열을 좀더 효율적으로 관리하기 위해 자바에서 제공해 주는 클래스
- 이미 많은 메서드들이 최적의 알고리즘으로 구현되어 있어 각 메서드의 사용 방법만 익히면 유용하게 사용할 수 있음
ArrayList의 주요 method

'Java' 카테고리의 다른 글
Java - 다형성과 인터페이스 (0) | 2022.11.17 |
---|---|
Java - 상속 (0) | 2022.11.17 |
Java - 객체지향 프로그래밍 기초 1 (0) | 2022.11.17 |
Java - 조건문, 반복문 (0) | 2022.11.17 |
Java - 자료형, 연산자 (0) | 2022.11.17 |
댓글