개인적으로 듣고 이해한 바를 작성해 두었습니다. 잘못된 정보에 대한 피드백 환영합니다 !
월요일과 화요일은 그렇게 크게 한 것 없이 수요일부터 Java를 시작했다. 추후에 실시할 Final Project를 대비하여 여러 모델들을 앱에 적재하는 경험을 위해 하는 듯 했다.
처음엔 기본적인 문법들과 함께 알고리즘 문제들을 풀다가 이후에 안드로이드 스튜디오를 시작하면서 App을 다뤄보게 될 것 같다.
사실 자바는 기본적인 문법 정도는 한 번 봤던 터라 생각보다 수월하게 잘 들을 수 있었던 것 같다.
사실 여기서 제일 크게 놀랐던 점은 처음 들을때는 언급이 없었어서 String
또한 일반 자료형이겠거니 싶었는데 사실 객체 자료형이었던 것..
자바의 특성 상 객체 자료형들은 Stack Area와 Heap Area에 할당되기에 String또한 그렇다. 꽤나 중요하다고 강사님께서 강조하셔서 열심히 집중해서 들었다 😊
처음 들었을 때 너무 당황스러웠다. 그냥 오류가 발생하면 구글링해서 해결하면 될 거 같은데 무슨 Stack 영역이니 Heap 영역이니 ... 간단하지도 않을 뿐더러 평소에 귀찮아서 한 번도 제대로 보지 않았던 메모리 관련된 지식이라 좀 어려웠다.
이참에 좀 제대로 정리 해 두어야 겠다 싶어서 좀 집중해서 들은 주관적인 견해는 아래와 같다.
[Null]
: 객체 자료형을 선언할 때 아래와 같이 선언을 하곤 했다.
int[] b = null;
일단 간단하게만 강사님이 예시를 들어주신 듯 했는데, 위 코드가 뜻하는 것은 직관적으로 볼 땐 배열이 비어있다고 생각할 수 있지만 Stack 영역에 할당되는 레퍼런스가 null이라는 뜻이다. 즉, Stack영역에 b라는 변수 이름으로 한 공간을 차지는 하지만 레퍼런스가 null이기 때문에 Garbage인 것이다.
[NullPointerException]
: 그럼 위와 같은 예외는 어떤 상황에 발생할까?
int[] b = null;
b[0] = 11;
위 코드를 보면 Stack 영역의 레퍼런스가 null이다. 이 말인 즉슨, Heap영역에 동일한 레퍼런스로 참조할 값 조차 없다는 뜻이고, 참조가 애초에 불가하기에 Heap영역에 무언가 값을 할당하려고 하는 순간 NullPointerException이 발생하는 것이다.
제대로 이해한건진 모르겠지만 어느정도는 감이 잡힌 듯 하여 재밌게 들었던 것 같다.
객체지향의 개요와 함께 클래스의 필드를 이용해보기도 하고, 메소드를 직접 만들어서 사용을 해보기도 했다.
자바.. 생각보다 재밌다..!! DNN관련 라이브러리 있는지 찾아보고 얼른 구현해봐야겠다. 없다면.... 알고리즘 문제라도 풀어보고 알고리즘도 하기 싫다... 라고 하면 단순 신경망 계산 코드를 자바로 구현하는거..?!
도전 ! 👊