모든 클래스들의 최상위 클래스 Object 클래스에 대해서 알아보았습니다. Object 클래스 메소드 즉, 모든 클래스를 사용할 때 Object클래스를 상속받습니다. 이런것들을 컴파일러가 처리해주고 있습니다. 그럼 int와 같은 것들도 Object 클래스를 상속받을까요?( 접은 글을 확인해보세요 ) 더보기 그렇지 않습니다. Java의 모든 클래스는 암시적으로 또는 명시적으로 Object 클래스를 상속받습니다. 하지만 int는 기본 자료형으로 값을 저장하기에 객체로 다뤄지지 않고 직접 값을 처리할 때 사용하기 때문입니다. 어떤 패키지안에 있는 클래스일까? 바로 java.lang 패키지입니다. java.lang.Object 클래스는 필드를 가지지 않고, 11개의 메소드로 구성되어있습니다. 메소드 예제 그 중..
기술 스텍
정의 직렬화란 java code처럼 사람이 읽기 좋은 형태인 코드를 바이트 코드로 바꾸는 것을 의미합니다. 직렬화 방법 데이터를 전송할 때, java code로 만들어진 데이터를 다른 컴퓨터로 보낸다고 가정하겠습니다. 이런 데이터는 다른 컴퓨터에 도착합니다. 하지만 모든 PC의 OS는 서로 다른 가상 메모리를 가집니다. 따라서 값을 바로 저장하는 Primitive 타입이 아닌 Reference 타입은 Serializable 인터페이스로 구현을 해야합니다. 이렇게 만든 바이트 코드는 데이터베이스나 파일과 같은 외부 저장소에 저장하고 다른 컴퓨터에 도착하게 되면 그 데이터를 역직렬화를 통해 자바 객체로 반환해서 JVM 메모리에 적재하게 됩니다. 효율적인 직렬화란? 하지만 이러한 직렬화에도 역사적인 문제점이 ..
Call By Value 값에 의한 호출 함수가 호출될 때, 메모리 공간 안에서는 함수를 위한 별도의 임시공간이 생성됩니다. 이때, 전달되는 변수 값을 복사해서 함수 인자로 전달합니다. 즉, 변수가 가진 값을 변경해도 원본 값은 변경되지 않습니다. function addOne(x) { x += 1; return x; } let num = 5; console.log(addOne(num)); // 6 console.log(num); // 5 Call By Reference 참조에 의한 호출 함수가 호출될 때, 인자로 전달되는 변수의 레퍼런스를 전달합니다. 따라서 인자 값이 변경되면 객체의 값도 변경됩니다. 이유는 인자로 전달된 값이 변수의 주소이므로, 함수 내에서 변수 값을 변경하면 주소에 저장된 값이 변경..
Java를 동작시키는데 필요한 JVM에 대해 알아보겠습니다. JVM은 다른 프로그램을 실행시키는 데 목적이 있습니다. 기능으로는 자바 프로그램이 어떤 기기나 OS에서도 실행될 수 있도록 하는데 있습니다. 또한 프로그램 메모리를 관리하고 최적화 하는데 있습니다. 간단한 요약 Java는 OS에 독립적인 특성을 가집니다. JVM을 통해 구현되기 때문입니다. JVM의 동작원리는 다음과 같습니다. 동작순서를 개발자 입장에서 생각해보겠습니다. 1. 개발자가 자바 소스코드를 작성하고 실행해보겠습니다. 2. 자바 컴파일러가 Java Source파일을 컴파일합니다. (이때, 자바 컴파일러는 자바를 설치하면 /bin 폴더에 있는 javac.exe라는 실행 파일 형태로 설치됩니다.) Content {file name}.ja..