본문 바로가기

분류 전체보기474

객체 배열 기본 자료형 배열은 선언과 동시에 배열의 크기만큼의 메모리가 할당되지만, 객체 배열의 경우엔 요소가 되는 객체의 주소가 들어갈(4바이트, 8바이트)메모리만 할당되고(null) 각 요소 객체는 생성하여 저장해야 함 객체 배열 복사하기 System.arraycopy(src, srcPos, dest, destPos, length); 자바에서 제공되는 배열 복사 메서드 얕은 복사(메모리 주소를 복사) 객체 주소만 복사되어 한쪽 배열의 요소를 수정하면 같이 수정 됨 즉, 두 배열이 같은 객체를 가리킴 package ch21; public class Book { private String title; private String author; public Book() { // TODO Auto-generated co.. 2021. 4. 16.
배열(array) 자룔를 순차적으로 한꺼번에 관리하는 방법 배열 동일한 자료형의 순차적 자료 구조 인텍스 연산자[]를 이용하여 빠른 참조가 가능 물리적 위치와 논리적 위치가 동일 배열의 순서는 0부터 시작 자바에서는 객체 배열을 구현한 ArrayList를 많이 활용함 배열 선언 int[] arr = new int[10]; int arr[] = new int[10]; 배열 초기화 배열은 선언과 동시에 자료형에 따라 초기화 됨(정수는 0, 실수는 0.0, 객체는 null) 필요에 따라 초기값을 지정할 수 있음 int[] number = new int[] {10,20,30}; // 개수 생략해야 함 int[] number = {10,20,30}; // new int[] 생략 가능 int[] ids; ids = new int[].. 2021. 4. 16.
싱글톤 패턴 프로그램에서 인스턴스가 한 개만 생성되어야 하는 경우 사용하는 디자인 패턴 static 변수, 메서드를 활용하여 구현 할 수 있음 싱글톤 패턴으로 회사 객체 구현하기 생성자는 private로 선언 private Company() {} 클래스 내부에 유일한 private 인스턴스 생성 private static Company instance = new Company(); 외부에서 유일한 인스턴스를 참조할 수 있는 public 메서드 제공 package ch17; public class Company { private static Company instance = new Company(); private Company() { } public static Company getInstance() { if ( i.. 2021. 4. 16.
static 메서드 static 메서드 만들기 seNum 변수를 private으로 선언하고 getter/settter 구현 static 메서드(클래스 메서드)에서는 인스턴스 변수를 사용할 수 없다. static 메서드는 인스턴스 생성과 무관하게 클래스 이름으로 호출 될 수 있음 인스턴스 생성 전에 호출 될 수 있으므로 static 메서드 내부에서는 인스턴스 변수를 사용할 수 없음 멤버변수 = 인스턴스 변수 static 변수는 프로그램이 메모리에 있는 동안 계속 그 영역을 차지하므로 너무 큰 메모리를 할당하는 것은 좋지 않음 클래스 내부의 여러 메서드에서 사용하는 변수는 멤버 변수로 선언하는 것이 좋음 멤버 변수가 너무 많으면 인스턴스 생성 시 쓸데없이 메모리가 할당됨 상황에 적절하게 변수를 사용해야 함 2021. 4. 16.
static 변수 여러 인스턴스에서 공통으로 사용하는 변수 공통으로 사용하는 변수가 필요한 경우 여러 인스턴스가 공유하는 기준 값이 필요한 경우 학생마다 새로운 학번 생성 카드회사에서 카드를 새로 발급할때마다 새로운 카드 번호를 부여 회사에 사원이 입사할 때마다 새로운 사번이 필요 static 변수 선언과 사용 static int seNum; 인스턴스가 생성될 때 만들어지는 변수가 아닌, 처음 프로그램이 메모리에 로딩될 때 메모리를 할당 클래스 변수, 정적변수라고도 함 인스턴스 생성과 상관 없이 사용 가능하므로 클래스 이름으로 직접 참조 package ch16; public class Employee { public static int serialNum = 1000; private int employeeId; privat.. 2021. 4. 16.
객체 간의 협력 (collabration) 객체 지향 프로그램밍에서의 협력 객체 지향 프로그램에서 객체 간에는 협력이 이루어짐 협력을 위해서는 필요한 메세지를 전송하고 이를 처리하는 기능이 구현되어야 함 매개 변수로 객체가 전달되는 경우가 발생 버스와 지하철을 타는 예제 프로그래밍 A 와 B는 각각 버스와 지하철을 타고 학교에 갑니다. A는 5000원을 가지고 있었고, 100번 버스를 타면서 1000원을 지불합니다 B는 10000원을 가지고 있었고, 초록색 지하철을 타면서 1200원을 지불합니다 package ch13; public class Bus { int busNumber; int passengerCount; int money; public Bus(int busNumber) { this.busNumber = busNumber; } publi.. 2021. 4. 14.