자바에서 저장한 Reference Type의 데이터들은 각자 OS마다 다른 메모리 주소를 가리키기 때문에 외부 환경에서의 자바에서 데이터에 접근하기 위해서는 Reference Type으로 저장된 데이터들의 Primitive Type으로의 전환이 필요하다. 시스템적으로는 JVM내의 메모리(힙, 스택)에 상주하는 객체 데이터를 바이트 형태로 변환하는 기술을 직렬화, 반대로 직렬화 되어 있는 바이트 형태의 데이터를 객체 데이터로 변환하여 JVM에 상주시키는 기술을 역직렬화라고 한다. 즉 데이터를 전송, 저장 가능한 형태로 변환하기 위해서 직렬화를 수행한다. 자바에서의 직렬화 & 역직렬화 직렬화 시 Object(객체) 데이터들은 Byte Stream 형태의 데이터로 변환된다. 역직렬화 시 Byte Stream ..
데이터 유형 일반적으로 데이터 유형에는 3가지가 존재한다. 기본 데이터 유형(Native) 래퍼(Wrapper) 데이터 유형 사용자 정의 데이터 유형(User-defined) 기본 데이터 유형은 int, boolean, float, double, long과 같은 Primitive Type(원시 타입)의 데이터 유형을 말한다. 래퍼 데이터 유형은 위의 기본 데이터 유형을 변형을 Wrapper 클래스로 변형한 것이다. Integer(int) Boolean(boolean) Float(float) Double(double) 사용자 정의 데이터 유형(UDT)은 유저가 필요해 의해 연관성이 있는 변수들을 서로 묶어서 하나의 데이터 타입으로 만든 것이다. 지역번호와 여덟 자리로 이루어진 전화번호를 예시로 생각해 보자..
자바에는 데이터의 타입을 나눌 때 Primitive Type(원시 타입), Reference Type(참조 타입) 두 가지 타입으로 나눌 수 있다. Primitive Type 메모리에 실제 값을 저장하는 변수이다. Primitive Type은 8가지 종류의 데이터 타입으로 나뉜다. boolean byte short char int long float double Reference Type 메모리에 참조 객체의 주소값을 저장하는 변수이다. Reference Type은 8가지 종류의 Primitive Type을 제외한 모든 데이터 타입이다. 인스턴스화가 가능한 클래스나 배열이 Reference Type에 포함된다. 아래와 같은 우리에게 익숙한 예시가 있다. String Scanner int[] String[..
함수를 호출하는 방법에는 두 가지가 있다. 값에 의해 함수를 호출하는 Call by value, 값 참조에 의해 함수를 호출하는 Call by reference 두 가지가 있다. 좀 더 자세히 알아보자. 여기서 말하는 '값에 의한 호출'과 '참조에 의한 호출'은 무슨 말일까? Call by value 값에 의한 호출은 함수를 호출할 때 매개변수로 받은 값을 복사하여서 호출하는 방식. 말 그대로 기존에 존재하던 데이터와 값만 같은 다른 데이터를 생성하는 것이다. 완전히 다른 데이터를 생성하여 인자로 넘겨주기 때문에 함수 내에서 인자값의 변경이 일어난다고 해도 기존 변수에는 아무런 영향이 없다. Call by reference 참조에 의한 호출은 매개변수로 받은 값의 주소를 참조하여 해당 주소의 값을 호출하..
JVM이란 JVM은 기본적으로 자바 가상 머신 기반 프로그램이 linux, windows 등 어느 환경에서도 원활하게 돌아갈 수 있도록 돕는 환경이다. JVM은 프로그램의 메모리를 관리하고 최적화하며 특정 기기상에서 실행되고 있는 프로세스, 자바 앱에 대한 리소스를 대표하고 통제하는 서버이다. JVM의 특징 자바의 모토가 "Write once, run anywhere(WORA)"인 만큼, JVM을 통해 OS에 종속적이지 않은 애플리케이션을 개발할 수 있다. 자바 언어 자체는 컴파일을 통해 바이트코드로 변환되고 JVM을 통해 실행되기 때문에, 개발자는 코드 작성 시에 하드웨어 호환이나 OS호환에 대해 고려할 필요 없이 JVM 호환이 되는 언어나 자바로 코드를 작성하면 된다는 큰 장점이 있다. JVM은 자바..