레퍼런스 - 주소를 가르키는 변수 C에서 배열을 가르키는 주소(레퍼런스)는 배열의 0번째 인덱스의 주소지만 자바는 배열 이름의 레퍼런스 변수가 따로 존재하고 실제 배열은 다른 주소부터 시작됩니다. 자바에서 배열을 만들 때는 레퍼런스 선언을 해주어야 하고 레퍼런스 변수에 배열을 동적 할당하는 식으로 동작하기 때문에 배열 생성시 무조건 동적할당을 해야합니다. 배열 선언시엔 크기를 정하지 못하고 밑 그림 처럼 동적 할당으로 초기화 할 때 크기를 정해야합니다. 레퍼런스 변수는 동적 할당으로 만든 배열의 첫번째 인덱스 주소를 가르키게 됩니다. 2차원 배열은 행의 갯수 만큼의 레퍼런스 변수를 가지게 됩니다. 행의 갯수만큼의 레퍼런스를 가지고 있는 배열이 생성되고 그 배열의 각 인덱스는 각 행의 첫번째 인덱스 주소를..
자바의 태동 자바가 개발되기 전, 다른 프로그래밍 언어들은 소스파일을 컴파일하여 기계어로된 실행파일로 만들었습니다. 이렇게 기계어로 컴파일된 실행파일은 각 기기마다 기계어가 다르고, OS마다 기계어의 API가 다르고, 실행 파일 형식이 다르기 때문에 컴파일을 진행한 환경이 아닌 다른 환경에서는 컴파일된 파일을 실행할 수 없다는 단점이 있었습니다. 예를 들어 window에서 컴파일한 실행파일을 linux에서 실행하려면 해당 실행파일의 원래 소스코드를 재작성하고 linux에서 다시 컴파일 해야합니다. 자바는 위와 같은 단점을 극복하기 위해 JVM이라는 자바 바이트 코드를 실행할 수 있는 소프트웨어와 함께 등장했습니다. JVM 자바는 소스코드를 컴파일 할 때 해당 컴퓨터 환경에서만 실행시킬 수 있는 기계어가 ..