본문 바로가기

✨ Java/etc23

자바(JAVA) - 스트림(Stream) 스트림(Stream)은 한 번 사용되거나 닫힌 후에는 재사용할 수 없다. 일회성이기 때문에 닫힌 후에 다시 사용하려고 하면 IllegalStateException이 발생된다. 따라서 스트림에서 요소를 여러 번 사용하려면, 스트림을 다시 생성하거나 요소를 컬렉션에 수집한 후 해당 컬렉션을 사용해야 한다. 스트림을 사용하기 위해서는 컬렉션 또는 배열을 먼저 만들어줘야한다. 컬렉션( List, Set, Collection ) Stream 리스트를 생성해서 Stream에 리스트의 값을 넣고, .forEach( ) 메소드를 통해 하나씩 출력해보았다. 배열 ( Array ) Stream 배열을 생성해서 Stream에 배열의 값을 넣고, .forEach( ) 메소드를 통해 하나씩 출력해보는 코드이다. Stream.f.. 2024. 2. 21.
자바(JAVA) - 기본형(Primitive) VS 참조형(Reference) 변수의 데이터 타입을 가장 크게 기본형, 참조형으로 분류할 수 있다. 기본형 - int, long, double, boolean과 같이 변수에 사용할 값을 직접 넣을 수 있는 데이터 타입 참조형 - People person1, int[ ] a 와 같이 데이터에 접근하기 위한 주소를 저장하는 데이터 타입 기본형 참조형 사용 바로 사용 가능 객체, 배열을 통해 메모리 상에 생성된 객체를 통해 사용 가능 연산 가능 불가능 연산 예시 ) 기본형 참조형 하지만, 참조형에서 멤버 변수에 접근한 경우에는 아래와 같이 연산을 할 수 있다. 정리해보자면, 기본형을 제외한 나머지는 모두 참조형이다. 기본형은 모두 소문자로 int, long, double, boolean이 있고, 그외 대문자로 시작하는 클래스는 모두 참조형.. 2024. 2. 16.
자바(JAVA) - String, StringBuffer, StringBuilder 각 성능차이 String 불변(immutable) 문자열을 조작하는 경우 유용하게 사용가능하다. 한번 생성되면 할당된 메모리 공간이 변하지 않는다. 문자열을 연결, 추가, 수정, 삭제 등을 하면 새로운 String 객체 생성 -> 메모리 낭비 스레드 안전함. 동기화 처리되어 있어 멀티스레드 환경에서도 안전하게 사용가능. (즉 , + 연산자 , concat 메서드를 통해 본래 문자열에 다른 문자열을 붙여도 기존 문자열에 새로운 문자열을 붙이는 것이 아니라, 새로운 String 객체를 만든 후, 새 String 객체에 연결된 문자열을 저장하고, 그 객체를 참조하도록 한다. ) 위 코드는 String 문자열을 이용하여 문자열을 추가해주었다. 이는 문자열이 변경되는 것처럼 보일 수 있으나, 또 다른 String 객체를 생성.. 2023. 7. 24.
자바(JAVA) - 직렬화(Serialization) 직렬화란? 객체 인스턴스의 데이터를 I/O스트림에 적합한 일련의 데이터로 변환하는 과정이다. 객체 인스턴스는 메모리 주소 값을 저장하고 있기 때문에, 메모리 주소 값을 그대로 송신하면 수신받는 쪽에서 아무 쓸모 없는 데이터가 된다. 따라서 객체 인스턴스의 값 형태로 변환이 필요하다. MemberClass HTML 삽입 미리보기할 수 없는 소스 클래스 객체에 직렬화를 가능하게 하려면, Serializable 이라는 인터페이스를 구현해야한다. Main메서드 HTML 삽입 미리보기할 수 없는 소스 I/O Stream을 통해 직렬화 객체를 입출력해보았다. transient : 직렬화 대상 제외 MemberClass 만약, 직렬화하려는 클래스에서 제외하고 싶은 필드가 있다면, transient를 붙여 직렬화 대상.. 2023. 7. 24.