코드
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(); 객체생성해서 대입 하면
객체 주소값이 연결된다.