Tip!
1. 운영체제 공부하기
2. 언어 : C언어, 애플(두꺼운거)
3. 재귀함수 공부하고 싶으면
=> n번째 피보나치 수열까지의 합 구하기(금융분야 코딩테스트시 피보나치 수열 구연 준비)
Module
=> 독립적으로 실행가능한 코드블럭 : 메모리 할당
** Method Overloading(메소드 중복정의)
=> 하나의 클래스에 메소드 이름은 같고, 매개변수의 개수나 자료형이 다른 메소드가 존재하는 경우
=> 메소드를 호출할 때, 대입한 매개변수를 보고 실행할 메소드 결정
=> 용어를 기억 - 최근에는 잘 사용되지 않으나 예전 개발자 들이 중요하게 생각하던 개념이라 MethodOverriding과 같이 자주 물어보는 질문
** 매개변수 전달 방법
=> 데이터의 분류에서 기본형(데이터가 1개)과 참조형(데이터가 0개 이상인 경우)
=> 메소드의 매개변수로 기본형을 전달하면 메소드 안에서 매개변수의 데이터를 변경해도 전달한 데이터는 변경 X
=> 참조형을 전달 후, 참조형 내부 데이터를 변경하면 전달한 데이터도 변경됨(call by reference)
=> 매소드의 매개변수로 배열이나 인스턴스를 대입하는 경우 대입한 배열이나 인스턴스의 내용이 변경될 수 있음
하나의 값(boolean, byte, short, char, int, long, float, double)은 메소드의 매개변수로 대입시 절대 값 변경 X
** Recursion(재귀호출)
=> 메소드가 자기 자신을 다시 호출해서 리턴
=> 알고리즘을 구현할 때 코드를 간결하게 만드록 이해하기 쉽게 작성할 수 있어서 이용
=> 메소드가 수행이 종료되기 전에 다시 메소드를 호출하므로 메모리 사용량 증가 및 수행속도 저하
=> 구현시 주의점 : 종료시점을 명확하게 해야함
=> fibonacci 수열 : 1, 1, 2, 3, 5, 8, 13, 21, 34, 55.....
첫번째와 두번째 항은 무조건 1, 세번째 항 부터는 이전 2개 항의 합으로 구함
f(n) = f(n-1) + f(n-2) / 단 n>=3
새로운 데이터를 만들 때는 가장 최근의 데이터를 이용, 검색이나 금융분야에서 많이 사용
=> 재귀 구현 :
public + 리턴타입 + 메소드명(매개변수){
if(중단조건){
return 리터럴이나 상수 }
else{
return 메소드명(매개변수 변경..); }
** Constructor(생성자)
=> 인스턴스를 생성할 때 호출하는 특별한 메소드
1. 규칙
=> 이름은 반드시 클래스 이름으로 만들어야 합니다
=> 클래스 안에 만들지 않아도 자신의 상위 클래스 생성자를 호출하는 매개변수가 없는 생성자가 1개 제공
=> 생성자를 직접 만들면 자동으로 생성되는 생성자는 소멸
=> 생성자는 리턴 타입이 없음
=> 생성자도 Overloading(메소드 이름은 같고 매개변수의 개수나 자료형이 다른 경우)가능
=> 생성자는 new를 이용해서 호출, 생성자는 heap에 메모리 할당 후 그 참조를 리턴
=> 인스턴스 생성 : 클래스명 + 인스턴스명 = new 생성자(매개변수);
=> 생성자의 정의목적은 대부분 프로퍼티의 초기값을 설정하거나 매개변수로 대입받아서 초기화하는 용도
(종종 인스턴스 제작시 다른작업을 수행하기 위해 생성하기도 함)
2. 클래스 확인
=> 생성자 종류만큼 인스턴스 생성방법이 제공
=> 생성자 종류가 10개이면 인스턴스 만드는 방법도 10가지
=> 클래스의 메소드를 사용하고자하는 경우 인스턴스를 만들어야 한다면 생성자(Constructor)를 확인
=> 생성자의 역할은 대부분 프로퍼티를 초기화하는 것인데, 문서에서는 초기화를 initialize라고 함
3. 초기화 블럭
1) static 초기화 블럭 - static{ 내용; }
=> 이 내용은 클래스가 처음 호출될때 한번만 수행
2) 일반 초기화 블럭 - { 내용; }
=> 이 내용은 인스턴스를 만들때마다 수행
3) 주의사항
=> static 초기화 블럭에서는 static 변수와 지역변수만 사용이 가능
=> 인스턴스가 소유 하는 프로퍼티는 클래스가 생성 후, 생성 가능. 때문에 static 초기화 블럭이 생성시 인스턴스 X
=> 초기화 작업시 생성자 대신 초기화 블럭을 사용해도 됨
** 인스턴스 배열과 일련번호 만들기
=> 동일한 자료형의 데이터가 여러개 있고, 이 데이터가 비교 가능하다면 배열, List를 이용해서 하나로 묶어야 함
데이터 1개로 구성된 배열은 new를 이용해서 개수만 설정하면 자동 초기화
데이터 1개로 구성되지 않은 배열(인스턴스배열)을 만들어야 하는 경우 처음 메모리 할당시 null로 초기화
이런 경우 메모리 할당후, 각각에 생성자를 호출하여 인스턴스 대입
ex) String [] ar = new String[3]; //String 3개의 참조를 저장 할 수 있는 배열을 생성(String은 없고 전부 null)
ar[0] = new String("Java"); //각각 생성자를 호출 해서 인스턴스를 대입
//처음 만들때 생성자를 호출
String temp = new String("Hello");
String[] br = {new String("Hi"), temp};
2. 일련번호(Sequence, Auto-Increment)
=> 일정한 간격으로 자동 증가하는 숫자열
=> static 변수와 프로퍼티, 생성자를 이용
=> static 변수를 1씩 증가시키며, 프로퍼티에 대입
'수업 정리' 카테고리의 다른 글
11일차 수업 정리(Nested Class, Singleton, Sort) (0) | 2020.04.21 |
---|---|
10일차 수업 정리(Package, Import, 상속, 다형성, 재정의) (0) | 2020.04.20 |
8일차 수업 정리(Class, 변수, Method) (0) | 2020.04.16 |
7일차 수업 정리 (0) | 2020.04.14 |
6일차 수업 정리 (0) | 2020.04.13 |