4주차) 패스트캠퍼스 Java & Springboot 로 시작하는 웹 프로그래밍
<복습 문제>
참조 자료형 - String/ Date/Student 등
클래스형으로 선언, 클래스에 따라 메모리 크기가 다름, String을 예외하고 사용시에 변수에대해 생성해야함
§ 정의 후 사용방법
< subject.java >
public class Subject { String SubName; int Score; }
접근제어 지시자
private - 동일 클래스 내에서만 접근 가능
protected - 동일 패키지내에서 or 상속관계에 있는 private를 사용하고 싶을때 사용하여 접근 가능
public - 어디서나 접근 가능
x - 같은 패키지내에서 접근 가능(다른 패키지에서 사용시 import )
캡슐화
정보은닉을 활용한 캡슐화 - 꼭필요한 정보와 기능만 외부 접근허용 (인터페이스만 제공함)
오류 최소화함
this 키워드
인스턴스 자신의 (heap)메모리를 가르키며 자신의 주소를 return / 생성자에서 또 다른 생성자를 호출할때 사용
클래스 내에서 참조변수가 가지는 주소값과 동일한 주소값을 가지는 키워드
ex) 위 Student 클래스에서 Student 생성자 생성 시 멤버변수의 값을 입력 받음 > this.참조변수 = 매개변수;
#생성자의 역할: 인스턴스 초기화
클래스에 생성자가 여러개인 경우 생성자에서 다른 생성자 호출가능 (but, this() 선언 이전에 다른 statement 사용불가)
순서 : this(매개변수) 호출 > 매개변수 형식이 맞는 생성자 찾음 > 인스턴스 초기화 완료
main 함수에서 생성된 thisper과 class내 생성자에서 리턴해준(thisper2) 값과 동일
Static(정적) 변수 == 클래스 변수
> 공통으로 사용하는 변수가 필요한 경우, 여러 인스턴스가 공유하는 기준값이 필요한 경우
> 인스턴스 생성과 상관 없음, 클래스 이름으로 직접 참조
사용법 ) static 자료형 변수명;
ex) 입사자에게 사번 부여하는 프로그램
static형의 변수는 인스턴스 생성 전 클래스(Employee)명으로 접근하여 출력가능
> static 메서드내에서 인스턴스 변수 사용불가 (생성 전에도 static 변수가 사용가능하므로), 일반 메서드 내에서는 static 변수 사용가능
Singleton패턴
> 인스턴스가 단 한개만 생성되어야 하는 디자인 패턴으로 static 변수와 메서드를 활용해 구현가능
> 유일한 객체를 제공할때 구현
방법) class내 private 생성자 /유일한 private 인스턴스 / 인스턴스를 참조할 수 있는 public 메서드 생성
private 클래스명( ) { }
private static 클래스명 instance = new 클래스명();
public static 클래스명 getInstance( ) { return instance; }
배열
동일한 자료형의 순차적 자료구조로 인덱스로 빠른참조 가능 (인덱스 = 0~length-1)
ArrayList 클래스 사용 多
선언 = 타입[ ] 배열명 = new 타입[크기] OR 타입 배열명[ ] = new int[크기]
배열크기 = 타입의 byte * 크기 / length와 요소개수 다를 수 있음
ex)
** for (타입 변수 : 배열명){ }
// 배열의 요소를 인덱스0 ~ length-1까지 순차적 순회기능
복사
- System.arraycopy( )
: 복사본과 원본의 주소 동일, 배열요소 값 변경시 원본, 복사본 모두 변경
: 얕은 복사(주소복사)
> 얕은 복사와 깊은 복사
2차원 배열
> 선언: 타입[ ] [ ]배열명 = new 타입[행][열]
> 초기화: 타입[ ] [ ]배열명 = {{#,$,%}, {!.@}}
ArrayList 사용법
성적 산출 프로그램
[내일배움카드], [국비지원교육]