Java 실습

[220525]Class,jvm 메모리 영역, 깊은복사

ss__0 2022. 5. 26. 01:25

 목표 달성

- 변수의 유효범위를 구분할수 있다.
  클래스변수(static 변수) , 인스턴스변수, 지역변수(일회용변수)

 

 트러블 슈팅

 현상 : Scanner가 정상적으로 작동하지 않음

에러코드

 원인 : Scanner를 생성할 때 소스코드에 ""가 입력되어 있음

현상의 원인 코드

 해결책 : ""을 제거하니까 클래스 파일이 적상적으로 작동함

Scanner sc = new Scanner(System.in);

 현상 : 오류X => 오류가 생길 가능성이 높은 소스

 원인 : 지역변수가 초기화되지 않았다

 해결책 :

void method(){int a = 0; System.out.println(a); }	//지역변수 초기화 해주기

 

 수업 내용 요약 정리

생성자(Constructor)

  • 인스턴스를 초기화 하는 메서드
  • 기본생성자
  • 파라미터 생성자

 변수의 유효범위

  • 해당 변수를 사용할 수 있는 범위 또는 공간,지역
  • 멤버변수(필드)의 유효범위 : 해당 클래스 내에서 사용가능
  • 일반 지역변수(local variable)의 유효범위

* 해당 메소드 내에서만 사용가능

* 메소드 안으로 들어갈 때 메모리가 할당괴고 메소드 밖으로 나가면서 메모리가 삭제

* 멤버변수(필드)보다 지역변수의 우선 순위가 높음

* stack area가 메모리 위치

 

 깊은 복사(Deep Copy) VS 얕은 복사(Shallow Copy)

  • 깊은 복사 : '실제 값'을 새로운 메모리 공간에 복사.
  • 얕은 복사 : '주소 값'을 복사.

* 얕은 복사가 주소 값을 복사하기 때문에 참조하고 있는 실제값은 깊은 복사와 같다.

* 하지만 얕은 복사는 주소값을 복사한 것이기 때문에 깊은 복사에서 새롭게 할당한 메모리 주소값과는 다르다.

▶ 예제 017 코드 리뷰

코드 리뷰
jvm 메모리 할당 과정 수기로 작성해봄

 오늘의 소감

동일한 출력화면일지라도 그것을 생성하는 방법은 무궁무진하다고 느꼈다.

그 때문에 배워야 하는 것이 나날이 늘어간다.

미니 프로젝트 뱅크도 벌써 Version 8이다.

분명 같은 출력화면인데 소스코드를 보면 구성이 전혀 다르다....아주 희안하다...

 

 

 

'Java 실습' 카테고리의 다른 글

[220530]  (0) 2022.05.31
[220527] 접근제한자(Acess Modifier)  (0) 2022.05.29
[220524]Class_수정하기  (0) 2022.05.24
[220523] Method, JavaApi  (0) 2022.05.24
[220516 - 220520][주간 정리] 반복문, Method , 재귀 함수  (0) 2022.05.22