본문 바로가기

스터디/Java6

[Java 자바] '...' 가변인자(Varargs) 1 필요성함수의 매개변수로 정해진 수가 아니라 가변 개수의 인자를 받아야 하는 경우가 있다.이때 '...'을 사용하면 함수에서 받을 매개변수의 수를 미리 정하지 않아도 된다.2 문법void test(int... test)위와 같이 함수의 매개변수 타입 뒤에 '...'을 붙이면 된다. 특징이렇게 받은 매개변수는 함수 내에서 배열로 처리된다.메서드의 가변인자는 하나만 가능하고 마지막 매개변수만 가능하다.값을 전달하지 않을 수도 있고, 1개 이상 여러개를 전달할 수도 있다.3 예시public class Main { public static void main(String[] args) { test(1, 2, 3); } public static void test(int... test).. 2024. 11. 21.
[Java 자바] 체크 예외와 언체크 예외(Checked Exception, Unchecked Exception) 1 예외(Exception)와 에러(Error)의 차이1.1 예외(Exception)예외(Exception)는 프로그램에서 발생할 수 있는 예상 가능한 문제를 나태낸다.예외는 프로그램이 실행 중에 처리할 수 있고 복구할 수 있는 문제이다.개발자는 try-catch 블록으로 예외를 적절하게 처리하고 정상적인 흐름으로 돌아갈 수 있다.1.2 에러(Error)에러(Error)는 심각한 문제를 나타내고, 일반적으로 프로그램이 복구할 수 없는 상황이다.에러는 주로 JVM(Java Virtual Machine)에서 발생하며, 메모리 부족이나 스택 오버플로우 등이 있다.일반적으로 개발자는 try-catch같은 것으로 이를 직접 처리할 수 없다. 발생 시 프로그램이 종료된다.1.3 Throwable 클래스 구조Java.. 2024. 11. 14.
[Java 자바] finally는 반드시 실행된다. try, catch, finally 구조try 블록예외가 발생할 가능성이 있는 코드를 포함.catch 블록try 블록에서 예외가 발생할 경우 그 예외를 처리하는 코드를 포함.finally 블록예외 발생 여부와 상관없이 try 블록 이후에 반드시 실행되는 코드를 포함.try나 catch에서 return할 경우 finally 코드finally 블록은 어떠한 경우에도 try나 catch의 코드를 수행한 후에 반드시 수행된다.try에서 발생한 예외 중에 catch에서 잡지 않은 예외가 있는 경우finally 블록을 실행한 후에 상위 호출자에게 예외를 전파한다.catch에서 예외가 발생할 경우finally 블록을 실행한 후에 상위 호출자에게 예외를 전파한다.finally 코드가 수행되지 않는 경우finally 코.. 2024. 11. 10.
[Java 자바] 정적 초기화 블록, 인스턴스 초기화 블록 초기화 블록은 자바 초기 버전부터 있던 기능으로, 객체 지향 초기화 매커니즘에서 중요한 역할을 한다.초기화 블록은 클래스의 초기화를 담당하고, 종류에 따라 쓰임새가 다르다.정적(static) 초기화 블록정적 초기화 블록의 코드는 해당 클레스에 처음 접근할 때 딱 한번 실행된다.주로 초기화 로직이 필요한 정적 변수를 초기화하는 데 사용된다. ex) 파일 불러오기당연히 정적 초기화 블록에서는 정적 멤버가 아닌 멤버에 접근할 수 없다.코드 예시public class StaticInit { private String hello = "hello"; public String getHello() { return hello; } public static String STATIC_INI.. 2024. 9. 20.
[Java 자바] equals()와 hashCode() 메서드 1 계기SpringBoot에서 lombok의 @Data 어노테이션이 붙어있으면 equals로 오버라이드 하지 않아도 객체가 논리적으로 동일한지 비교해준다. 근데 @Data에 보면 EqualsAndHashCode가 붙어 있다. equals는 아는데 hashCode는 뭔지 궁금해서 찾아보게 되었다.2 자바에서 객체 동등성 비교자바에서 객체의 동등성을 비교할 때는 일반적으로 equals() 메서드를 활용한다.equals는 Object 클래스에 정의되어 있는 메서드로, 따로 오버라이드 하지 않으면 '=='연산자와 동일하게 객체의 메모리 주소값을 비교한다.3 equals와 hashCode3.1 equalsequals는 따로 override하지 않으면 객체의 메모리 주소를 비교한다.이는 Object 클래스에 정의되.. 2024. 9. 10.
[Java 자바] 제네릭(generic)이란? 제네릭(generic)이란데이터 타입(data type)을 일반화 하는 것으로, 클래스나 메소드에서 사용할 내부 데이터 타입을 컴파일 시에 미리 지정하는 방법이다. 제네릭이 있기 전(JDK 1.5 이전)에는 인수를 Object 타입으로 사용했다.이를 사용하기 위해 원래 타입으로 바꿔야 했고, 컴파일 시에 오류가 있는지 알지 못했다.하지만 제네릭의 도입으로 컴파일 시에 미리 타입이 정해져서 오류를 줄이고, 번거로운 작업을 안 할 수 있게 됐다. 제네릭을 활용해 클래스와 메소드를 정의할 수 있다.이때 타입명 대신 쓰이는 문자를 타입 변수(type variable)이라고 하고, 원시 타입이 아닌 참조형 타입만을 의미한다.(그래서 원시 타입을 쓰고 싶을 때는 래퍼(wrapper) 클래스를 사용해야 한다.)일반적.. 2024. 3. 19.