본문 바로가기

Study/JAVA

(3)
[JAVA] Serialization 자바 시스템 내부에서 사용되는 객체 또는 데이터를 외부의 자바 시스템에서도 사용할 수 있도록 바이트(byte) 형태로 데이터 변환하는 기술 각자 PC의 OS마다 서로 다른 가상 메모리 주소 공간을 가지기 때문에 Reference Type의 데이터들은 인스턴스를 전달할 수 없다. 이 문제를 해결하기 위해서는 주소값이 아닌 Byte형태로 직렬화된 객체 데이터를 전달해야한다. 직렬화 된 데이터들은 모두 Primitive Type이 되고, 이는 파일 저장이나 네트워크 전송 시 파싱이 가능한 유의미한 데이터가 된다. 따라서, 전송 및 저장이 가능한 형태로 만들어주는 것이 직렬화(Serialization) 이다. 조건 자바에서는 간단히 java.io.Serializable 인터페이스 구현으로 직렬화 / 역직렬화가 ..
[JAVA] Wrapper Class 자바에는 기본 자료형(Primitive data type)이 있는데 그에 대한 클래스 표현인 Wrapper Class가 존재한다. 기본 타입 : int, long, float, double, boolean ... 래퍼 클래스 : Integer, Long, Float, Double, Boolean ... 박싱과 언박싱 박싱 : 기본 데이터 타입에 대응하는 wrapper클래스로 만드는 동작 int i = 10; Integer num = new Integer(i); // Boxing 언박싱 : Wrapper 클래스에서 기본 타입으로 변환 Integer num = new Integer(10); int i = num.intValue(); //unBoxing 오토 박싱 편의성을 위해 오토 박싱과 오토 언박싱이 제공..
[JAVA] Call by Value & Call by Reference Call by value & Call by reference Call by value 값에 의한 호출 함수가 호출될 때 메모리 공간 안에서는 함수를 위한 별도의 임시공간이 생성된다. (종료시 반환) Call by value 호출 방식은 함수 호출 시 전달되는 변수 값을 복사해서 함수 인자로 전달한다. 이 때 복사된 인자는 함수 안에서 지역적으로 사용되기 때문에 local value속성을 가진다. 따라서, 함수 안에서 인자 값이 변경되더라도, 외부 변수 값은 변경되지 않는다. Call by reference 참조에 의한 호출 함수 호출 시 인자로 전달되는 변수의 레퍼런스를 전달한다. 함수 안에서 인자 값이 변경되면, 인자로 전달된 객체의 값도 변경된다. 자바의 경우, 항상 Call by value로 값을 ..