Java 78

[JAVA] 제네릭 메서드

제네릭 메서드제네릭 메서드는 타입 파라미터를 가지고 있는 메서드를 말한다. 타입 파라미터가 메서드 선언부에 정의된다는 점에서 제네릭 타입과 차이가 있다. 제네릭 메서드는 리턴 타입 앞에 기호를 추가하고 타입 파라미터를 정의한 뒤, 리턴 타입과 매개변수 타입에서 사용한다.public 리턴타입 메서드명(매개변수, ...) { ... } 다음 boxing() 메서드는 타입 파라미터로 를 정의하고 매개변수 타입과 리턴 타입에서 T를 사용한다. 정확한 리턴 타입은 T를 내용물로 갖는 Box 객체이다.public Box boxing(T t) { ... } 타입 파라미터 T는 매개값이 어떤 타입이냐에 따라 컴파일 과정에서 구체적인 타입으로 대체된다.Box box1 = boxing(100);Box box2 = b..

Language/JAVA 2024.10.16

[JAVA] 제네릭 타입

제네릭 타입제네릭 타입은 결정되지 않은 타입을 파라미터로 가지는 클래스와 인터페이스를 말한다. 제네릭 타입은 선언부에 '' 부호가 붙고 그 사이에 타입 파라미터들이 위치한다.public class 클래스명 { ... }public interface 인터페이스명 { ... } 타입 파라미터는 변수명과 동일한 규칙에 따라 작성할 수 있지만 일반적으로 대문자 알파벳 한 글자로 표현한다. 외부에서 제네릭 타입을 사용하려면 타입 파라미터에 구체적인 타입을 지정해야 한다. 만약 지정하지 않으면 암묵적으로 Object 타입이 사용된다. 다음 예제에서 Product 클래스를 제네릭 타입으로 선언해 보자. kind와 model 필드를 타입 파라미터로 선언하고, Getter의 매개변수와 Setter의 리턴 타입 역시 타입..

Language/JAVA 2024.10.16

[JAVA] 제네릭

제네릭이란?Box 클래스를 선언하려고 한다. Box에 넣을 내용물로 content 필드를 선언하려고 할 때, 타입을 무엇으로 해야 할까?public class Box { public ? content; } Box는 다양한 내용물을 저장해야 하므로 특정 클래스 타입으로 선언할 수 없다. 그래서 다음과 같이 Object 타입으로 선언한다.public class Box { public Object content; } Object 타입은 모든 클래스의 최상위 부모 클래스 이므로 content 필드에는 어떤 객체든 대입이 가능하다.Box box = new Box();box.content = 모든 객체; 문제는 Box 안에 내용물을 얻을 때이다. content는 Object 타입이므로 어떤 객체가 대입되..

Language/JAVA 2024.10.16

[JAVA] 어노테이션

어노테이션코드에서 @으로 작성되는 요소를 어노테이션이라고 한다. 어노테이션은 클래스 또는 인터페이스를 컴파일하거나 실행할 때 어떻게 처리해야 할 것인지를 알려주는 설정 정보이다. 어노테이션은 다음 세 가지 용도로 사용된다.컴파일 시 사용하는 정보 전달빌드 툴이 코드를 자동으로 생성할 때 사용하는 정보 전달실행 시 특정 기능을 처리할 때 사용하는 정보 전달컴파일 시 사용하는 정보 전달의 대표적인 예는 @Override 어노테이션이다. @Override는 컴파일러가 메서드 재정의 검사를 하도록 설정한다. 정확히 재정의되지 않았다면 컴파일러는 에러를 발생시킨다. 어노테이션은 자바 프로그램을 개발할 때 필수 요소가 되었다. 웹 개발에 많이 사용되는 Spring Framework 또는 Spring Boot는 다양..

Language/JAVA 2024.10.16

[JAVA] 리플렉션

리플렉션자바는 클래스와 인터페이스의 메타 정보를 Class 객체로 관리한다. 여기서 메타 정보란 패키지 정보, 타입 정보, 멤버(생성자, 필드, 메서드) 정보 등을 말한다. 이러한 메타 정보를 프로그램에서 읽고 수정하는 행위를 리플렉션이라고 한다. 프로그램에서 Class 객체를 얻으려면 다음 3가지 방법 중 하나를 이용하면 된다.① Class clazz = 클래스이름.class;② Class clazz = Class.forName("패키지...클래스이름");③ Class clazz = 객체참조변수.getClass(); // 객체로부터 얻는 방법 셋 중 어떤 방법을 사용하더라고 동일한 Class 객체를 얻을 수 있다. 예를 들어 String 클래스의  Class 객체는 다음과 같이 얻을 수 있다.Class..

Language/JAVA 2024.10.16

[JAVA] 정규 표현식 클래스

정규 표현식 클래스문자열이 정해져 있는 형식으로 구성되어 있는지 검증해야 하는 경우가 있다. 예를 들어 이메일이나 전화번호를 사용자가 제대로 입력했는지 검증할 때이다. 자바는 정규 표현식을 이용해서 문자열이 올바르게 구성되어 있는지 검증한다. 정규 표현식 작성 방법표현 및 기호설명[ ]한 개의 문자[abc]a, b, c 중 하나의 문자[^abc]a, b, c 이외의 하나의 문자[a-zA-Z]a~z, A~Z 중 하나의 문자\d한 개의 숫자, [0-9]와 동일\s공백\w한 개의 알파벳 또는 한 개의 숫자, [a-zA-Z_0-9]와 동일\...모든 문자 중 한 개의 문자?없음 또는 한 개*없음 또는 한 개 이상+한 개 이상{n}정확히 n개{n,}최소한 n개{n, m}n개부터 m개까지a | ba 또는 b()그룹..

Language/JAVA 2024.10.16

[JAVA] 형식 클래스

형식 클래스Format(형식) 클래스는 숫자 또는 날짜를 원하는 형태의 문자열로 변환해 주는 기능을 제공한다. Format 클래스는 java.text 패키지에 포함되어 있다.Format 클래스설명DecimalFormat숫자를 형식화된 문자열로 변환SimpleDateFormat날짜를 형식화된 문자열로 변환 DecimalFormatDecimalFormat은 숫자를 형식화된 문자열로 변환하는 기능을 제공한다. 원하는 형식으로 표현하기 위해 다음과 같은 패턴을 사용한다.기호의미패턴 예1234567.89 > 변환 결과010진수(빈자리는 0으로 채움)00.00000000000.0000012345681234567.90001234567.89000#10진수(빈자리는 채우지 않음)##.###########.#####123..

Language/JAVA 2024.10.16

[JAVA] 날짜와 시간 클래스

날짜와 시간 클래스자바는 컴퓨터의 날짜 및 시각을 읽을 수 있도록 java.util 패키지에서 Date와 Calendar 클래스를 제공하고 있다. 또한 날짜와 시간을 조작할 수 있도록 java.time 패키지에서 LocalDateTime 등의 클래스를 제공한다.클래스설명Date날짜 정보를 전달하기 위해 사용Calendar다양한 시간대별로 날짜와 시간을 얻을 때 사용LocalDateTime날짜와 시간을 조작할 때 사용 Date 클래스Date는 날짜를 표현하는 클래스로 객체 간의 날짜 정보를 주고받을 때 사용된다. Date 클래스에는 여러 개의 생성자가 선언되어 있지만 대부분 Deprecated(더 이상 사용되지 않음)되어 Date() 생성자만 주로 사용된다. Date() 생성자는 컴퓨터의 현재 날짜를 읽어..

Language/JAVA 2024.10.16

[JAVA] 수학 클래스

수학 클래스Math 클래스는 수학 계산에 사용할 수 있는 메서드를 제공한다. Math 클래스가 제공하는 메서드는 모두 정적이므로 Math 클래스로 바로 사용이 가능하다.구분코드리턴값절대값int v1 = Math.abs(-5);double v2 = Math.abs(-3.14);v1 = 5v2 = 3.14올림값double v3 = Math.ceil(5,3);double v4 = Math.ceil(-5.3);v3 = 6.0v4 = -5.0버림값double v5 = Math.floor(5.3);double v6 = Math.floor(-5.3);v5 = 5.0v6 = -6.0최대값int v7 = Math.max(5, 9);double v8 = Math.max(5.3, 2.5);v7 = 9v8 = 5.3최소값in..

Language/JAVA 2024.10.16

[JAVA] 포장 클래스

포장 클래스자바는 기본 타입의 값을 갖는 객체를 생성할 수 있다. 이런 객체를 포장(Wrapper) 객체라고 한다. 값을 포장하고 있다고 해서 붙여진 이름이다.기본 타입포장 클래스byteBytecharCharactershortShortlongLongfloatFloatdoubleDoublebooleanBooleanintInteger 포장 객체는 포장하고 있는 기본 타입의 값을 변경할 수 없고, 단지 객체로 생성하는 데 목적이 있다. 이런 객체가 필요한 이유는 컬렉션 객체 때문이다. 컬렉션 객체는 기본 타입의 값은 저장할 수 없고, 객체만 저장할 수 있다. 박싱과 언박싱기본 타입의 값을 포장 객체로 만드는 과정을 박싱(Boxing)이라고 하고, 반대로 포장 객체에서 기본 타입의 값을 얻어내는 과정을 언박싱(..

Language/JAVA 2024.10.16