반응형 Language/자바&코틀린19 [진행중][자바, 코틀린] 제너릭이란? 그리고 공변성과 원시(primitive) 타입 비허용 제너릭이란? 클래스, 인터페이스, 함수에서 사용되는 필드, 매개변수, 반환타입을 미리 정의하지 않고 사용하는 시점에 특정 타입을 지정할 수 있도록 해주는 기법을 제너릭(Generic)이라고 한다. 제너릭을 통해 클래스나 메서드를 각각의 타입마다 재정의할 필요 없이 코드 중복 없이 여러 타입에 대하여 재사용할 수 있다. 자바나 코틀린에서는 컴파일 단계에서 안정적인 타입체크를 함으로써 여러타입에 대해 안정적으로 사용할 수 있게 지원하고 있다. *용어 정의 제너릭 타입 : 여러 타입을 받을 수 있는 요소, 즉 제너릭 개념이 적용된 타입을 제너릭 타입이라고 한다. 원시(raw) 타입 : 제너릭이 도입되기 이전 다양한 데이터 타입을 다루기 위해 Object타입으로 데이터를 형변환하여 사용하는 타입 제너릭 메서드(.. 2023. 12. 20. String, StringBuilder, StringBuffer의 차이 String(Immutable, 불변)String 객체는 불변 객체이다. 우리가 String 객체에 + 연산이나 concat과 같은 메서드를 실행하여 값을 변경시키는 것은실제로는 새로운 값을 가진 String 객체를 생성하는 것이다.이로인해 String타입 객체의 값을 변경하는 작업은 메모리 자원 할당과 해제를 유발하여 속도저하와 메모리 자원의 비효율성을 유발한다.값을 나타내는 value에 final 선언private final byte[] value;자바에서 String을 불변으로 설정한 이유String 객체를 불변하게 설계한 이유는 캐싱, 보안, 동기화, 성능측면 이점을 얻기 위해서이다.1. 캐싱 : String을 불변하게 함으로써 String pool에 각 리터럴 문자열의 하나만 저장하며 다시 사용.. 2023. 11. 15. 불변(Immutable)객체와 가변(mutable) 객체 불변 객체란객체의 속성을 초기화 이후 변경이 불가능한 객체로 상태 변경이 불가능한 객체이다.ex) String, 원시타입의 래퍼타입(Boolean, Integer, Float, Long, Double), ResultSet 불변객체 생성 방법1. private final 선언2. 수정자 메서드 제공 금지외부에서 속성에 접근하여 함부로 값을 변경하지 못하도록 private으로 선언한다.클래스의 모든 필드값에 final을 선언하여 값이 최초 한번 할당된 이후 변경되지 않도록 한다.수정자 메서드를 제공하지 않음으로써 값이 변경되지 않음을 보장한다. 아래 클래스를 보면 세터 메서드는 존재하지 않고 게터 메서드만 제공되고 있다.public class Member { private final String emai.. 2023. 11. 15. 인터페이스와 추상클래스의 차이 인터페이스란 동일한 행위를 클래스들이 구현하도록 지정한 추상 자료형으로 일종의 계약서 또는 설계서이다.추상클래스란 하나 이상의 추상 메서드를 포함한 클래스를 추상 클래스라고 하며 복제와 확장의 목적으로 쓰인다.(추상 메서드 없이 추상 클래스 선언 가능하나 구체 클래스와 차이가 없음) 인터페이스와 추상클래스에 대한 정의를 간단하게 한줄로 표현해봤다.인터페이스와 추상클래스는 모두 인스턴스화가 불가하고 구현체에서 추상 메서드를 반드시 오버라이딩 해야한다는 공통점이 있다.허나, 인터페이스와 추상 클래스는 구조적으로 큰 차이가 있고, 이에 의하여 그 사용성에도 큰 차이점을 드러낸다. 인터페이스와 추상클래스의 차이점구현부의 존재여부(캡슐화)다중상속 여부is-a와 can-do 관계이외에도 많은 차이가 있지만 이 두가.. 2023. 11. 15. 이전 1 2 3 4 5 다음 반응형