클래스
구조체: 서로 관련있는 데이터끼리 묶은 것, 데이터 타입이 달라도 상관없음.
구조체를 확장한 게 클래스
클래스에는 메소드도 포함
메모리에 값을 저장하는 방식이 발전(?)한 순서
변수
: 하나의 값을 저장하기 위한 기억공간
ex) int 4byte
int num =3;
int data = 4;
배열
: 같은 데이터타입의 서로 관련있는 데이터들을 묶어놓은 기능.
나란히 저장이 됨.
ex) int arr[]={1,2,3};
구조체
: 같은 데이터타입이 아니더라도 서로 관련있는 데이터들을 묶어놓은 기능
C에서 사용. (절차적프로그래밍)
ex)
<구조체정의>
typeof struct person (< = 사용자가 정의한 데이터 타입){
char[5] name;
int age;
boolean gender;
}
↑↑
{}안에 정의된 것들을 멤버변수라고 부름
<구조체 선언>
(데이터 생성 및 데이터 메모리에 저장)
person ps;
ps.name = {’k’,’i’,’m’};
ps.age= 30;
ps.gender=true;
(새로운 값 할당)
person pn;
pn.name = {’l’,’i’,’m’};
pn.age= 20;
pn.gender=true;
클래스
: 구조체(멤버변수) + 함수(메소드)
객체지향 언어에서는 구조체대신 클래스를 사용
- 객체란?
실세계에 존재하는 모든 사물이나 개념들이다.
자동차의 각 부품이 객체
예를들면
객체지향 프로그래밍 과정
1.객체파악
ex) 홍길동(객체), 이영희(객체)
2. 객체 모델링
: 객체가 가지고있는 특징과 기능들을 구분
: 객체를 프로그램으로 구현하기 위한 분석작업이다.
ex)
홍길동
객체의 특징: 이름:홍길동, 나이:30, 성별: 남
객체의 기능: 운전, 달리기,
이영희
객체의 특징: 이름:이영희, 나이:28, 성별: 여
객체의 기능: 운전, 달리기
3. 클래스 정의하기
: 객체를 표현할 수 있는 최소단위가 클래스
: 객체들의 공통점을 찾아내어 그 공통점을 표현하는 것, 객체의 설계도
ex)
객체의 특징 ⇒ 멤버변수
객체의 기능⇒ 메소드
클래스의 메모리 차지 구조
JVM 메모리 구조
- method area : 메소드에 대한 바이트코드, 클래스 변수, 클래스에 대한 정보
- stack area: 지역변수 매개변수
- heap area: 클래스 객체, 배열
- 객체참조변수 선언 & 객체 생성
처음에 new로 생성하고 데이터 할당 안했을때 멤버변수들에는 기본값이 설정됨
위의경우
name : null
age: 0
gender: false
Person ps하면 스택메모리에 자리가 생김
new 선언으로 힙메모리에 저것들이 기본값으로 생성됨
(new를 해야지 heap메모리에 저장됨)
ps 는 메서드 안에서 정의되는 지역변수이기때문에 stack에 저장됨
- 데이터 할당
힙메모리에 저장되고 힙메모리에 저장된 자리의 주소가 스택메모리의 ps변수에 저장됨.
- 데이터 추가 pn을 생성하면 다른 객체가 또 생김메서드 영역에 메서드들은 저거 잘못그린 거 같음. 원래는 한개만 있어야 맞는 거 같음. 책에서는 메서드들은 메서드영역에 한번 저장되어서 객체들끼리 공유한다고 나옴.
'study > JAVA' 카테고리의 다른 글
이것이 자바다 6장 확인문제 20번 (0) | 2022.04.03 |
---|---|
자바 생성자(constructor)와 오버로딩 (0) | 2022.04.01 |
자바 Java 값복사와 주소복사란? (0) | 2022.03.31 |
자바 메소드 정리 Java method (0) | 2022.03.31 |
Java 반복되는 코드를 줄이자 리펙토링! (0) | 2022.03.31 |
댓글