배열: 같은 타입의 여러 변수를 하나의 묶음으로 다룸
많은 양의 데이터를 손쉽게 다루기 위해 사용
배열 선언이 가능한 문장
int [] arr[];
int [] arr = {1,2,3,}
int [] arr = new int[5]
int [] arr[] = new int[3][]
다차원 배열의 모든 요소의 값 구하기
- arr.length*arr[0].length
oop = 그룹 & 관계 ->변경유리
객체지향개념 목표 = 프로그램 변경 쉽게
기존 프로그래밍 + 몇가지 규칙 = 변경 쉽게 하기 위해
클래스 = 집합(객체를 정의한 것)
관련된 것 묶기 => 더 큰 단위 => 복잡도 낮춤
=> 더 복잡한 것을 만들기 위해서
객체: 속성과 기능 = 멤버(iv,인스턴스 변수)의 집합
관찰 - 분석 - 설계&구현
인스턴스는 참조변수를 통해서만 다룰 수 있다
참조변수 타입 = 인스턴스 타입
객체 생성
클래스의 의미(그룹,폴더)
객체지향의 4대원칙
변수
클래스 영역: iv,cv(static+uv),선언문만 가능
메서드 영역: lv
인스턴스 변수: 인스턴스 마다 개별 저장 공간 ex) 카드에서 숫자와 모양, 객체 생성될 때 생성
클래스 변수: 모든 인스턴스가 공유, 인스턴스의 공통적인 값 ex)카드의 길이, 폭
클래스 변수를 변경하면 객체의 모든 클래스 변수의 값이 같이 변경된다
메서드: 문장묶음, 선언부 + 구현부(선언부 중요, 바뀌면 안됨)
return문: 메서드의 실행 결과를 호출한 쪽에 변환하는 문장
메서드가 계산한 결과를 돌려주기 위해 사용
메서드 블럭 내에서 사용 return 값;
void 생략 가능, 아니라면 return이 꼭 있어야 함
void return; 없어도 가능 필요시 return만 써서 조기 종료할 수 있음
반환값의 데이터 타입은 메서드 선언부의 반환형과 일치해야 한다
if(a<b)
return a;
else
return b;
기본형 매개변수
참조형 매개변수
참조형 반환타입
인스턴스 메서드와 static 메서드의 가장 큰 차이 = iv를 쓰냐 안쓰냐가 핵심
=> 인스턴스 메서드 iv 사용O, static 메서드 iv 사용X
static 메서드는 인스턴스 메서드 호출 X
public 클래스 이름 = 소스파일 이름
main 메서드가 있는 클래스이름 = 소스파일 이름
오버로딩: 같은 이름의 메서드를 여러개 정의하는 것
장점
오버로딩의 조건
생성자 - 인스턴스 초기화 메서드. iv를 초기화, 조립방법
생성자의 조건
1.이름이 클래스와 동일
2.반환타입 없음(void안씀)
3.다른 생성자 호츨은 반드시 첫줄에서
4.다른 생성자 호출시 this()
기본생성자: 반드시 있어야 함(없으면 컴파일러가 자동추가) , 직접 만드는게 좋음
this: 참조변수, 객체(인스턴스)자신을 가르킴, this.iv , lv랑 iv를 구분하기 위해
this(): 생성자
this 랑 this() 다르다
변수 초기화 순서
자동: cv -> iv
간단: lv
복잡: static { }, ( { } , 생성자(인스턴스변수) )