java의 동작 원리
- java 언어로 쓰여진 source code는 우리의 컴퓨터는 인식을 하지 못하기 때문에
- java 기반으로 이루어진 java virtual machine이 필요하다.
- java 언어로 쓰여진 source code를 컴퓨터 언어로써 인식을 하기 위해서 compile을 진행하게 되고,
- 컴파일을 진행하게 되면 java application.class로 인식을 하게 된다.
- class로 인식이 된 source를 실행시키게 되면, virtual machine으로 컴퓨터 내에서 동작하게 된다.
- class : binary(bin)=컴퓨터가 읽을 수 있는 언어 >> Application(Program)
- java : 소스코드(src)=사람이 읽을 수있는 언어
- Compile이란? 확장자가 .java인 파일을 기계가 이해할 수 있도록 전환하는것 (.java 를 .class로 전환)
- JVM이란? Java Virtual Machin 즉 자바를 실행하는 가상기계 (.class 파일을 읽어서 동작시킴)
java의 기본 구조와 개념 정리
- 자바에서 패키지(package)는 관련된 클래스 또는 인터페이스를 그룹으로 묶어 놓은 것
- 자바 프로그램은 한 개 이상의 클래스로 구성된다.
- 클래스는 한 개 이상의 필드(field)와 메서드(method)로 구성된다.
① 패키지
- 클래스는 물리적으로 하나의 클래스 파일(확장자 .class)인 것처럼 패키지는 물리적으로 하나의 디렉터리이다.
- 따라서 하나의 패키지는 디렉터리에 저장된 클래스 파일들이다.
② 클래스(Class)
- 클래스는 객체에서 공통된 상태와 행동을 모델링한 것으로 설계도와 유사하며, 다음과 같은 구성요소로 이루어 진다.
- 필드(field): 객체에 속한 데이터(객체의 상태, 속성, 특징, 정보, 명사적 의미)를 저장할 변수
- 메서드(method): 필드 상태를 조작할 수 있는 함수
- 객체의 행위(behavior, 행동, 동작, 기능, 방법, 데이터 조작, 동사적 의미) - 객체란 실 세계에 존재하는 모든 것(일상 생활에서 볼 수 있는 사물)과 아이디어 같은 개념을 총칭한다.
- 모든 객체는 상태(state)와 행위(behavior)로 구성되고 객체는 클래스로부터 생성된다.
- 클래스 정의란 클래스를 구현하는 것으로 클래스 헤더와 몸체로 구성된다.
- 클래스 헤더는 class 예약어로 시작하여 이 뒤에 클래스 이름을 기술한다. 관례상 클래스 이름(클래스명)은 대문자로 시작한다.
- 클래스 몸체는 스텁(메서드의 기능은 없지만 컴파일이 가능하도록 빈 중괄호) 안에 넣어 정의한다. 즉, 중괄호 { 와 } 내부에 필드와 메서드가 구성됨
③ 메서드와 main() 메서드
- 클래스에서 꼭 필요한 행위를 포함하려면 메서드를 정의해야 한다.
- 메서드(method: 함수)는 어떤 특정한 행위(동작, 기능)을 구현하는 함수
- 클래스의 메서드는 해당 클래스로부터 만들어지는 객체에게 메서드로 표현된 기능을 부여하는 것이고, 객체에게 메서드로 표현된 행위 능력을 갖게 하는 것
- 클래스를 실행하기 위해 반드시 main 메서드를 정의해야 한다. main 메서드는 자바 프로그램 실행이 시작되는 특별한 메서드이다.
- 메서드 정의는 클래스(또는 인터페이스) 안에 정의(메서드 기능 구현)한다.
접근지정자 반환 자료형 메서드명(매개변수) {
// 몸체 (메서드 처리 내용)
}
메서드의 정의 형태는 마치 제품을 만든(몸체) 후 그 제품을 담기 위해 포장(중괄호 {}) 하고 제품명을 붙이는 것(메서드 명)과 유사
메서드의 구성 요소
메서드 헤더(Header) | 접근 지정자, 반환형(return type), 메서드 명, 매개변수로 구성 |
접근 지정자(access specifier) | 멤버 변수와 메서드에 접근을 허락하는 레벨을 나타냄 (public, static) |
반환형(return type) | 객체가 메서드 호출의 결과로 돌려주어야 하는 정보. (void라고 지정된 메서드는 메서드 호출의 결과로 돌려줘야 할 정보가 없다는 것) |
메서드 명 | 사용자가 해당 기능에 부합하는 이름을 지정 |
매개변수(parameter) | 메서드가 호출될 때 요구되는 입력 값을 받아서 저장하는 변수. 메서드 명 다음에 오는 소괄호 (와 )에 표기함 |
인자(argument) | 메서드를 호출할 때 함께 전달하는 정보. 인자는 매개변수에 대응하여 치환된다. 매개변수와 인수는 반드시 동일한 자료형과 동일한 순서, 동일한 개수대로 사용해야 함 ( ※ 두 개 이상의 값을 전달받는 메서드라면 각 매개변수마다 자료형을 반드시 표기해야 한다. 각 매개변수는 콤마로 구분.) |
메서드 몸체(body) | 실제로 객체가 할 행위를 적어주는 곳. 스텁 안에 메서드 기능을 기술하여 정의 |
식별자(Identifier) | 식별자는 클래스, 변수, 메서드 등에 붙이는 이름 |
예약어(Keyword) | 예약어는 미리 용도가 정해진 이름으로 식별자로 사용할 수 없다. |
접근 지정자(Access specifier) | 접근 지정자는 멤버 변수와 메서드에 접근을 허락하는 레벨을 나타냄 |
[출처]
출처 : 생활코딩 https://www.opentutorials.org/course/3930/26656
https://palpit.tistory.com/entry/Java-1-Java-%EA%B8%B0%EB%B3%B8-%EA%B5%AC%EC%A1%B0
'Coding > Java' 카테고리의 다른 글
[06] Java 참조 타입 (0) | 2022.11.11 |
---|---|
[05] Java 조건문과 반복문 (0) | 2022.11.11 |
[04] Java 연산자와 연산 (0) | 2022.11.11 |
[03] Java 시작하기(설치), 변수와 타입 (1) | 2022.11.11 |
[02] 생활코딩 Java 입문 강의 정리 (2) (0) | 2022.11.04 |