코드
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(); 객체생성해서 대입 하면
객체 주소값이 연결된다.
'2021 Newlecture > JAVA' 카테고리의 다른 글
코드정리 / 함수와 인터페이스 / 메소드생성 / 메소드호출 (0) | 2021.03.22 |
---|---|
메소드생성 (0) | 2021.03.22 |
배열을 바로출력 vs 변수로 출력 (구조체) (0) | 2021.03.19 |
참조형배열 / 객체생성 / 배열의 참조변수가 null 값 참조할때 (0) | 2021.03.19 |
2차원배열의 참조/ 가변배열/참조배열 (0) | 2021.03.17 |
2차원배열 / 반복문을 통해 1차원배열생성 하면서 2차원배열에 대입 (0) | 2021.03.17 |
2차원배열 / 열에서 최대값 구하기/ 해당 인덱스값구하기/값변화 차이 (0) | 2021.03.16 |
2차원배열/ 코로나 검사진행자 누적수 구하기/ 열의 합 구하기 (0) | 2021.03.15 |