목차
접기
728x90
반응형
패키지란?
- 패키지는 간단히 말하면 클래스 파일의 묶음이다.
- 조금 더 깊이 들어가면 패키지가 단순히 클래스 묶음이 아닌 프로젝트 전체 코드를 구성하는 계층 구조가 되고
- 이 계층 구조를 잘 구성해야 소스 코드 관리와 유지 보수가 편리하다.
클래스 이름이 같더라도 패키지 이름이 다르다면 다른 클래스로 구분된다.
메서드(method)
- 함수(function)의 한 종류이다.
- 함수는 어떤 기능을 수행하도록 미리 구현해 놓고 필요할 때마다 호출하여 사용할 수 있다.
- 함수란
하나의 기능을 수행하는 일련의 코드
를 말한다. - 함수는 이름이 있고 입력 값과 결과 값을 갖는다.
return : 반환값 (예약어)
스택(stack)
- 함수를 호출하면 그 함수만을 위한 메모리 공간이 할당되는데 그 공간을 스택(stack)이라고 한다.
- 스택은 자료가 상자처럼 쌓이는 자료 구조를 말한다.
- 스택은 마지막에 추가된 자료부터 순서대로 꺼내서 사용할 수 있으며 LIFO(Last In First Out) 구조라고 부른다.
스택(stack) 메모리 소멸 순서
- 호출한 함수 순서대로 스택에 해당 함수를 위한 메모리가 할당 된다.
- 할당한 메모리의 소멸은 제일 마지막에 호출 당한 함수의 순서대로 소멸이 된다.
- 제일 처음 호출한 함수의 메모리가 제일 마지막에 소멸 당한다는 것이다.
지역변수
- 함수 내부에서만 사용하는 변수를
지역 변수
라고 한다. - 지역 변수는
스택 메모리
에 생성 된다.
함수의 장점
- 첫째 : 함수를 사용하면 기능을 나누어 코드를 효율적으로 구현할 수 있다.
- 둘째 : 기능별로 함수를 구현해 놓으면 같은 기능을 매번 코드로 만들지 않고 그 기능의 함수를 호출하면 되니까 편리하다.
- 중복되는 코드를 막을 수 있다.
- 프로그램을 실행할 때 생긴 오류를 수정하는 디버깅 작업을 할 때도 편리하다.
- 하나의 기능이 하나의 함수로 구현되어 있기 때문에 오류가 난 기능만 찾아서 수정하면 되기 때문이다.
함수 결론
- 무조건 소스 코드를 나누어 호출한다고 해서 함수를 구현하는 것이 아니며
- 함수 코드의 행 수가 길고 짧고를 의미하는 것도 아니다.
필요한 기능 함수
를 만들고- 그 이름에 맞는
하나의 기능
을 구현하는 것이 중요하다.
프로그램을 시작하는 main() 함수
- main() 함수는 자바 가상 머신(Java Virtual Machine; JVM)이 프로그램을 시작하기 위해 호출하는 함수이다.
- 클래스 내부에 만들지만, 클래스의 메서드는 아니다.
클래스 전체 이름(class full name)
- 패키지가 다르면 클래스 이름이 같아도 다른 클래스이다.
- 클래스 자료형 변수를 선언하고 new 예약어로 생성자를 호출하여 대입하면 새로운 클래스가 생성된다.
클래스가 생성
된다는 것은 클래스를 실제 사용할 수 있도록 메모리 공간(힙 메모리)을 할당 받는다는 뜻이다.
인스턴스
- 실제로 사용할 수 있도록 생성된 클래스를
인스턴스
라고 한다.
참조 변수
- 인스턴스를 가리키는 클래스형 변수를
참조 변수
라고 한다. - 예시) Student st = new Student();
- st 가 참조 변수이다.
- 참조 변수를 사용하면 인스턴스의 멤버 변수와 메서드를 참조하여 사용할 수 있다.
- 이때 도트(.) 연산자를 사용한다.
- 참조 변수는 힙 메모리에 생성된 인스턴스를 가리킨다.
객체, 클래스, 인스턴스
- 객체란 '의사나 행위가 미치는 대상'이며 이를 코드로 구현한 것이 클래스이다.
- 클래스가 메모리 공간에 생성(할당)된 상태를 인스턴스라고 한다.
- 또한 생성된 클래스의 인스턴스를
객체
라고 한다. - 클래스의 생성자를 호출하면 인스턴스가 만들어진다.
인스턴스와 힙 메모리
- Student studentAhn = new Student();를 선언하면 Student 하나가 생성되는데 각 Student가 가지고 있는 멤버 변수를 저장할 공간이 있어야 한다.
- 클래스가 생성되면 멤버 변수를 인스턴스 변수라고도 칭한다.
- 이때 사용하는 메모리가 힙 메모리(heap memory)이다.
- 클래스 생성자를 하나 호출하면 인스턴스가 힙 메모리에 생성되는 것이다.
참조변수 대입 의미
- 지역 변수 studentAhn에 생성된 인스턴스를 대입하는 것은 studnetAhn에 인스턴스가 생성된 힙 메모리의
주소
를 대입한다는 것과 같은 의미이다.
힙 메모리란?
- 힙(heap)은 프로그램에서 사용하는 동적 메모리(dynamic memory) 공간을 말한다.
- 일반적으로 프로그램은 스택, 힙, 데이터 이렇게 세 영역을 사용하는데, 객체가 생성될 때 사용하는 공간이 힙이다.
- 힙은 동적으로 할당되며 사용이 끝나면 메모리를 해제해 주어야 한다.
- C나 C++ 언어에서는 프로그래머가 직접 메모리를 해제해야 하지만,
- 자바에서는
가비지 컬렉터(garbage collector)
가 자동으로 메모리를 해제해 준다.
728x90
반응형
LIST
'Java' 카테고리의 다른 글
[ java ] 참조 자료형 연습 (0) | 2020.12.14 |
---|---|
[ java ] 객체 지향 기초 개념 7가지 (0) | 2020.12.14 |
[ java ] 반복문 사용의 경우, break문과 continue문의 차이 (0) | 2020.12.13 |
[ java ] for문 break 사용법(조건식 생략) (0) | 2020.12.13 |
[ java ] continue문 사용법 (0) | 2020.12.13 |