코드

1. 프로그래밍을 위한 코드 : 실행을 위한 코드

2. 함수지향 : 구조체 , 함수

3. 객체지향 : 캡슐화, 상속, 다형성

 

코드의 크기가 커지면 ?

가독성이 떨어지고, 코드의 중첩이 생긴다, 데이터수 증가

중복된 코드블럭이 생긴다.

 

다음에도 같은 코드를 또 사용 하고싶다면 ?

나누어서 다시 사용하고싶은 블록을 분리

 

자바는 가장 객체지향적인 언어, 통일감있는 코드가능

스크립트언어(ex, 파이선) 은 메인함수가 없고, 모듈화가없어 바로 사용가능

 

구조체란 ?

다양한 데이터를 담을 수 있는 도구

 

배열의 불편함 :

다 같은형식을 사용해야한다. 결과에 대한 의미가 묻어나지않는다 (ex: row[i][0])

의미론적으로 와닿지않는다.

->배열이 불편함을 구조체가 해결 할 수있다. 

 

메모리공간은 Heap 과 Stack 이있다.

Heap : 비예약석, 동적메모리할당, 연산자(new, = )에 의해서 마련되는 공간

Stack : 예약석, 선언으로 마련되는 공간

 

기본형은 선언만으로 공간할당 stack

참조형은 new연산자를 통해서만 공간할당, 실행 후 메모리가 할당된다 (heap)

String x = new String("hi");

x : main Stack에 공간생김

"hi" : heap 에 공간생김 , heap에 객체담김코드

 

1. 프로그래밍을 위한 코드 : 실행을 위한 코드

 

2. 함수지향 : 구조체 , 함수

 

3. 객체지향 : 캡슐화, 상속, 다형성

 

 

 

데이터를 묶어 그룹을정하는것 구조체 ->계층도만들어짐

 

 

{ String  y = new String("a")};

{}로 지역화처리되어있어서 괄호가 끝나면 사라진다.

y : stack에 블록이 마련된다.

"a" : heap영역에 메모리할당

{}괄호가 닫히면 stack block1이 사라지고, "a"를 가리키던 stack이 사라지면서 heap에있는 "a"는 가비지처리된다.

자바실행환경이 참조가 없는 것들을 찾아 자동으로 처리해준다. (처리시점은 실행상황에따라 달라진다)

 

{int y = 3;}

{}로 지역화되어 stack에 블록이 생긴다 -> 3이 y에 담긴다. ->{}끝나면 사라진다. -> main 스택도 사라진다.

 

 

 

구조체

구조체: Grouping, 의미도 분명히 할 수있고, 묶어서 사용.

자바의 클래스 : 데이터구조, 캡슐화

상: 배열 / 하:구조체


구조체 실습

1.Covid19 클래스생성 후 date, deaths, cases, tests 인스턴스생성한다.

2.Program 클래스에서 Covid19의 객체를 생성 후 Covid19의 인스턴스를 불러와 배열에 연결시킨다.

list[0] = new Covid();

list배열 0번째배열에 Covid19()클래스를 연결시킨것

이중배열은 다른배열을 참조한것 (ex list[][])

구조체는 list이 Covid()객체를 참조한것.

list[0].deaths =12; deaths에 12대입.

 

list[0] = new Covid();를 안한경우

list[0].는 null값이다.

디버깅했을때

list[0] = new Covid(); 객체생성해서 대입 하면

객체 주소값이 연결된다.

 

+ Recent posts