변수의 자료형은 기본 자료형과 참조 자료형으로 구분된다.
기본 자료형 : int, long, float, double 등
참조 자료형 : String, Date, Student 등 (클래스)
참조 자료형 변수는 클래스형으로 변수를 선언한다.
기본 자료형은 사용하는 메모리의 크기가 정해져 있지만, 참조 자료형은 클래스에 따라 다르다.
참조 자료형을 사용 할때는 해당 변수에 대해 생성하여야 한다.
단, String 클래스는 예외적으로 생성하지 않고 사용할 수 있다.
클래스 외부에서 클래스의 멤버 변수, 메서드, 생성자를 사용할 수 있는지 여부를 지정하는 키워드
private : 같은 클래스 내부에서만 접근 가능 ( 외부 클래스, 상속 관계의 클래스에서도 접근 불가)
default (기본) : 같은 패키지 내부에서만 접근 가능 ( 상속 관계라도 패키지가 다르면 접근 불가)
protected : 같은 패키지나 상속관계의 클래스에서 접근 가능하고 그 외 외부에서는 접근 할 수 없음
public : 클래스의 외부 어디서나 접근 할 수 있음
private으로 제어한 멤버 변수도 public 메서드가 제공되면 접근 가능하지만 변수가 public으로 공개되었을 때보다 private 일때 각 변수에 대한 제한을 public 메서드에서 제어 할 수 있다.
객체 지향 프로그램에서 정보 은닉은 필요한 외부에서 접근 가능한 최소한의 정보를 오픈함으로써 객체의 오류를 방지하고 클라이언트 객체가 더 효율적으로 객체를 활용할 수 있도록 해준다.
정보 은닉을 활용하여 꼭 필요한 정보와 기능만 외부에 오픈함
대부분의 멤버 변수와 메서드를 감추고 외부에 통합된 인터페이스만은 제공하여 일관된 기능을 구현 하게 함
Student(){
this("no name", 0);
}
Student(String name, int grade){
this.name = name;
this.grade = grade;
}
여러 인스턴스가 공유하는 기준 값이 필요한 경우
ex) 학생마다 새로운 학번 생성
카드회사에서 카드를 새로 발급할때마다 새로운 카드 번호를 부여
회사에 사원이 입사할때 마다 새로운 사번 부여
선언하는 방법
public static int serialNumber = 0;
int[] arr = new int[size];
int arr2[] = new int[size];
이차원 이상으로 구현 된 배열
평면 (이차원 배열) 이나 공간(삼차원 배열)을 활용한 프로그램 구현
기존의 배열 선언과 사용 방식은 배열의 길이를 정하고 요소의 개수가 배열의 길이보다 커지면 배열을 재할당하고 복사해야 했음
또한, 배열의 요소를 추가하거나 삭제하면 다른 요소들의 이동에 대한 구현을 해야 함
ArrayList는 객체 배열을 좀더 효율적으로 관리하기 위해 자바에서 제공해 주는 클래스
이미 많은 메서드들이 최적의 알고리즘으로 구현되어 있어 각 메서드의 사용 방법만 익히면 유용하게 사용할 수 있음
솔직히 처음 자바 기초를 다시 들을 땐 약간 걱정이 들었다. 수업을 듣기전에는 이미 대학에서 공부했던 내용이고 사용할 줄 아는 내용들인데 괜히 시간낭비인거 아니야? 이런 의구심이 있었다. 지금이라도 그냥 철회하고 나한테 필요한 강의를 찾아 듣는게 더 낫지 않을까란 고민도 했었다. 하지만 수업을 들으면서 이런 생각들이 불필요한 생각들이였다는 것을 깨닫게 되었다.
java기초, 객체 지향 프로그래밍 기초에 대한 수업을 다 듣고난 후 나는 내가 개발자로써 더 성장했다는 것을 확실히 느낄 수 있었다. 학부생때 어설프게 알고 있던 기초 지식들을 이번에 다시한번 기초에 대한 수업을 들으면서 확실하게 이해할 수 있었다.
노트북에 남아있던 3년전 학부생때 만들었던 프로젝트를 다시 열어보았다. 진짜 엉망이라는 생각이 들었다. 왜 쓰는지 어떤 원리로 쓰는지도 모르는 채 그저 문제를 풀기위해 어거지로 작성한 코드라는 느낌이 확 들었다. 일주일만에 내가 얼마나 부족한지 다시 한번 깨닫게 되었다.