언어(Language)/JAVA(14)
-
[JAVA] 제네릭(Generic)이란?
제네릭(Generic)이란? 제네릭(Generic)이란 일반적인 코드를 작성하고, 이 코드를 다양한 타입의 객체에 대하여 재사용하는 프로그래밍 기법이다. 제네릭은 타입을 파라미터화해서 컴파일시 구체적인 타입이 결정되도록 한다. 또한 클래스 내부에서 사용할 데이터 타입을 외부에서 지정해준다. 제네릭은 컬렉션, 람다식, 스트림 등에서 널리 사용된다. ex) public class Person { public T info; public static void main(String[] args) { Person p1 = new Person(); Person p2 = new Person(); } } 제네릭(Generic)의 장점 제네릭은 컴파일시 강한 타입 체크를 할 수 있다. 따라서 실행 시에 타입 에러가 나는 ..
2024.02.20 -
[JAVA] getter와 setter를 사용하는 이유
일반적으로 프로그래밍을 할 때, 객체들의 데이터(필드)를 외부에서 직접적으로 접근하는 것을 막아놓는다. 필드들을 private 접근 제한자로 막아두고, 각 필드의 Getter, Setter로 접근하는 방식을 사용한다. 이렇게 프로그램을 하는 이유는 객체의 무결성을 보장하기 위해서이다. 예를 들어 Man이라는 클래스에 weight(몸무게)라는 필드가 존재할 때, weight는 0보다 작을 수 없으나, 외부에서 직접적으로 접근할 경우, weight에 -100이라는 값을 줌으로써 객체의 무결성이 깨지는 일이 발생한다. 클래스의 필드에 직접 접근하는 것을 막기 위해서 getter와 setter를 사용한다. Getter & Setter 사용 방법 이를 방지하기 위해, 필드를 private로 만들어 외부의 접근을 ..
2024.02.20 -
[JAVA] Long과 long의 차이
Long과 long이란? long이란? long은 기본 데이터 유형(=원시 데이터 유형)이다. long을 사용할 때 주의할 점은 long 데이터 유형의 값 뒤에 'L'을 작성하여 long 값을 나타내주어야 한다. 그렇지 않으면 컴파일러가 오류를 발생시킬 수 있다. long은 정수형 숫자를 표현하는데 사용되며, 특히 매우 큰 범위의 정수를 다룰 때 유용하다. 그러나 소수점 이하의 숫자를 다루는 데는 적합하지 않다. long num = 15000L; Long이란? Long은 long의 래퍼 클래스(Wrapper class)로 객체가 기본 데이터 유형을 저장할 수 이는 특정 유형의 클래스이다. 즉, Long 클래스는 원시형 long 값을 객체에 랩하는 클래스이다. 래퍼 클래스는 래퍼 개체를 만들 수 있으며, ..
2024.02.20 -
[JAVA] 생성자(Constructor)와 초기화
생성자(Constructor)란? 생성자(Constructor)는 객체가 생성될 때 자동으로 호출되는 특수 목적의 멤버함수(메소드)로 객체의 초기화를 위해 사용된다. 생성자(Constructor)의 특징 생성자(Constructor)의 이름은 클래스 이름과 동일해야 한다. 생성자(Constructor)는 다른 멤버함수(메소드)와는 다르게 리턴 타입이 없다. 생성자(Constructor)는 객체가 생성될 때 자동으로 한 번 호출된다. 생성자(Constructor)는 매개변수 조건에 따라 여러 개를 작성할 수 있다.(오버로딩) 생성자(Constructor)는 클래스에 최소 1개는 있어야 하며, 생성자 코드가 없을 경우 컴파일러가 기본 생성자를 자동으로 생성한다. 주의할 점은 생성자 코드가 1개라도 작성되어 ..
2024.02.19 -
[JAVA] StringBuilder 사용법과 주요 메소드
알고리즘 연습 문제를 풀다보면 BufferReader/BufferWriter만큼 StringBuilder도 많이 사용하는 것을 볼 수 있다. 그래서 이 StringBuilder는 무엇인지, String과 StringBuffer와의 차이점을 무엇인지 알아보자 String과 StringBuffer/StringBuilder와의 차이점 우선 String과 StringBuffer/StringBuilder와의 차이를 간단하게 알아보자. 이들의 가장 큰 차이점은 String은 불변 속성을 갖고 StringBuffer/StringBuilder는 그렇지 않다는 것이다. String이 불변성을 갖는다는 concat이나 + 연산을 통해 값을 변경하면 원래 기존의 String 메모리에서 값이 바뀌는 것이 아니라, 기존의 St..
2024.02.19 -
[JAVA] EOF(End of File) 처리하기
EOF(End of File)이란? EOF는 End of File의 약자로, 데이터 소스로부터 더 이상 읽을 수 없는 데이터가 없음을 나타내는 용어이다. EOF는 알고리즘 문제를 풀 때 입력값을 얼마나 받을지 명시하지 않을 경우 사용한다. 그 예로 백준의 '10951번 A + B - 4' 가 있다. 위의 문제는 단순히 입력을 받고 출력하는 문제이다. EOF(End of File)의 사용법 자바에서는 대표적인 입력 클래스로 Scanner, BufferedReader가 있는데 각각의 EOF 처리 방법은 다음과 같다. 1. Scanner 클래스 Scanner 클래스에서 EOF(End of File)를 사용하려면 hasNext()를 사용하면 된다. 이것은 입력된 토큰이 있으면 true를 반환하고, 그렇지 않을 ..
2024.02.19