본문 바로가기

Language/[Java]

(91)
[Java] 직렬화와 역 직렬화 직렬화는 자바 시스템 내부에서 사용되는 객체 또는 데이터를 외부 자바 시스템에서도 사용할수 있도록 바이트 형태로 데이터를 변환하는 기술과 바이트로 변환된 데이터를 다시 객체로 변환하는 기술을 어울러서 이야기한다. 1.직렬화 직렬화란, 객체를 직렬화 하여, 전송 가능한 형태로 만드는 것이다. 객체들의 데이터를 연속적인 데이터로 변형하여, Stream을 통해, 데이터를 읽도록해준다. 객체들을 통째로 파일로 저장하거나 전송하고싶을때 사용한다. 2.역직렬화 직렬화된 파일 등을 역으로 직렬화하여 다시 객체의 형태로 만드는 것을 의미한다. 저장된 파일을 읽거나 전송된 스트림 데이터를 읽어 원래 객체의 형태로 복원한다. transient를 이용하면, 직렬화 대상에서 재외할수있다. SerialVersionUID 클래스..
[Java] String, String Builder, StringBuffer 1. String String은 불변 객체이다. 한번 값이 할당되면, 변하지 않고, 메모리를 추가적으로 점유하게 된다. 해당 String 변수에 대한 값을 변경한다고 다른 값을 넣게되면, 기본타입이 아니기때문에 값이 변경되는 것이 아니고, 참조하고있는 데이터의 주소가 달라질뿐 기존 가리키는 주소가 삭제되거나 변경되는 것은 아니다. 2.StringBuilder StringBuilder와 StringBuffer는 우선 String 과 다르게, append나 delete등 api를 사용하여, 동일 객체 내에서 문자열을 변경하는 것이 가능하게 해준다. 즉, 신규 객체를 생성하는 것이 아니고, 기존 객체의 값을 변경할수 있게 해준다. 따라서 문자열 연산이 빈번하게 발생된다면, 해당 두가지를 쓰는 것이 좋다. St..
[Java] static 의 의미 Static 키워드를 사용하는 것은, 메모리에 한번 할당되어 프로그램이 종료될때 해제 되는 것을 의미한다. 일반적으로 Static 키워드를 사용한 데이터는, 별도 영역에 저장이되고, GC 대상에서 제외된다. Static은 클래스 변수라고도 표현한다. 객체를 생성하지 않고도, 자원에 접근이 가능하다.
[Java] Boxing UnBoxing Wrapper class 사용 이유 - 객체 또는 클래스가 제공하는 메서드 또는 생성자에 필요하다. 쉽게 말하자면, Collection을 들수 있다. 제네릭 클래스에서 사용이 가능하여, Collection에서 사용이 가능하다. - 클래스가 제공하는 상수, MIN_VALUE,MAX_VALUE등이 사용가능하다. - 숫자, 문자로의 형 변환 또는 진법 변환에 있어서, 사용가능하다 Integer.parseInt() 등이 예로 있다. 박싱 -> 기본형 객체를 Wrapper클래스로 바꿔주는걸 박싱 언박싱 -> 반대 자바 1.5부터는 오토 박싱,언박싱이 지원된다.
[Java] Primitive Type vs Reference type 1. Primitive Type 예) byte, char, short, int, long, float, double, boolean. - 기본형 변수는 참조하지않고, 할당될때 메모리를 검사한다. 또한 실제값을 저장한다 - ==가능 -저장 공간 : 스택 - Null 불가 -범위 이상이면, 컴파일 에러가 발생 -null 사용하려면 Wrapper 클래스 사용 필요 2. Reference type - 참조형은 , Primitive 타입을 제외한 모든 타입을 얘기하며, 해당 값이 아닌, 주소값을 가르킵니다. - Class/Interface/array//Enumeration - == 불가, equals 나 compareTo를 사용필요 -저장 공간 : 힙 -Null 일부 가능 -런타임 에러 발생
[Java] 프레임워크와 라이브러리 차이 프레임 워크 - 소프트웨어의 특정 문제를 해결하기 위해서 상호 협력하는 클래스와 인터페이스의 결합 라이브러리 - 단순활용이 가능한 도구들의 집합 라이브러리와 프레임워크의 차이는 흐름에 대한 제어가 어디에 있는지에 대한 차이이다. 프레임워크 -> 전체적인 흐름을 자체적으로 가지고있고, 프로그래머가 필요한 코드를 작성한다. 라이브러리 -> 개발자가 흐름에 대한 제어를 하며, 필요한 상황에 가져다 쓰는 것이다.
[Java] 지역 변수 , 인스턴스 변수, 클래스 변수 클래스 변수 - 클래스 영역에 선언된다, 클래스가 클래스 로더에 의해 클래스가 메모리에 올라갈때 생성이 된다 인스턴스 변수 -클래스 영역에 선언되고, 인스턴스가 생성되는 시점에 생성이 된다. 지역 변수 - 클래스 이외의 영역에 선언이 되고, 변수 선언문이 실행되었을때 생성이 된다.
[Java] 싱글톤 패턴 싱글턴 패턴을 따르는 클래스는 생성자가 여러차례 호출되더라도, 실제로 생성되는 객체는 하나이고 최초 생성 이후에 호출된 생성자는 최초생성자가 생성한 객체를 리턴한다. 장점 -메모리 측면으로 효율적 -생성된 인스턴스를 활용하여 속도 측면에서 좋다 -전역으로 사용되기 때문에 데이터 공유가 쉽다. 단점 - 동시성 문제가 발생할 수 있다. - 테스트가 어렵다, 자원을 공유하고있기 때문에, 격리된 환경에서 수행하면, 매번 인스턴스의 상태를 초기화 시켜주어야 한다. - 구체 클래스에 의존적이 된다. - 자식 클래스를 만들수 없다. - 내부 상태를 변경하기 어렵다 - 유연성이 많이 떨어진다. 멀티쓰레드에서는 인스턴스가 여러개 생성되거나, 상태유지가 잘안되어 값에 대한 유지를 잘 못할 수도있다. 멀티쓰레드 환경에서 싱..