본문 바로가기
728x90

Web75

[Java] Resource를 다룰 때 예외처리(finally, AutoCloseable) [Java] Resource를 다룰 때 예외처리(finally, AutoCloseable) 1. finally를 쓰는 이유 자바가 프로그램 외부에 있는 데이터에 액세스 할 때 생기는 문제들이 있다. 외부에 있는 데이터는 DB, Network, File 등이 있다. 이것들을 Resource라고 하는데 리소스는 자바 내부의 변수나 객체들과 비교해보았을 때, 다양한 예외적 상황이 생길 수 있다. 리소스를 자바로 사용할 때, 데이터를 붙잡고 있는 행위를 하고 있다가 놔주는 것이 close()이다. FileWriter f; // => f가 전역 변수여야 finally에서 f 사용이 가능해진다. try{ f = new FileWriter("data.txt"); f.write("Hello"); //f.close();.. 2022. 7. 17.
[Java] ArrayList의 정의, 직접 구현해보기 [Java] ArrayList의 정의, 직접 구현해보기 1. ArrayList에 대하여 1) Array와의 차이 ArrayList는 List 인터페이스의 구현 클래스이다. ArrayList에 객체를 추가하면 객체가 인덱스로 관리된다. 일반 배열과 ArrayList는 인덱스로 객체를 관리한다는 점에서는 유사하다. 하지만, 배열은 생성될 때의 크기로 고정되는 반면, ArrayList는 저장 용량을 초과한 객체가 들어오면 저장 용량이 자동으로 늘어난다. 객체 생성 시 다음과 같은 구조로 힙에 데이터 공간이 확보되게 된다. 2) ArrayList 생성하기 생성을 위해서는 저장할 객체 타입을 “타입 파라미터”로 표기하고 기본 생성자를 호출하면 된다. List list new ArrayList(); 이렇게 하면, .. 2022. 7. 16.
[Java] Random 함수의 작동원리 [Java] Random 함수의 작동원리 갑자기 그런 생각이 들었다. Random은 정말 랜덤하게 난수를 생성할까? Java에서 랜덤을 활용하는 방법은 대표적으로 두 가지가 있다. Math 클래스의 random() 메소드를 활용하는 것과 Random 클래스의 next 메소드 시리즈를 사용하는 것. 숫자 놀이가 재미있어서 여기까지 오게 되었다... 이전에 만들어본 자바 로또 번호 추출기를 이용해서 Random 클래스의 작동원리에 대해서 알아보겠다. import java.util.Arrays; import java.util.ArrayList; import java.util.Collections; import java.util.Random; public class Lotto { public static voi.. 2022. 7. 15.
[Java] 접근제한자(public, default, protected, private) [Java] 접근 제한자(public, default, protected, private) 객체 지향적 설계를 할 때 개발자들은 메인 메소드를 가지지 않는 클래스를 만들어낼 것이다. 외부 클래스에서 이용할 목적으로 설계되었기 때문에 외부 클래스에서 쓰지 않아야 하는 변수도 있을 수도 있고, 섞이면 곤란한 메소드들도 있을 것이다. 객체 생성을 막기 위해서 생성자를 호출하지 못하게 하거나, 특정 데이터를 보호하기 위해 필드에 접근하는 것을 막아야 할 때도 있다. 이럴 때, 접근 제한자를 사용한다. 접근 제한자는 네 가지 종류가 있다. public 접근 제한자는 외부 클래스가 자유롭게 사용할 수 있는 공개 멤버를 만든다. protected 접근 제한자는 같은 패키지 또는 자식 클래스에서 사용할 수 있는 멤버를.. 2022. 7. 14.
[Java] 생성자와 NullPointerException [Java] 생성자와 NullPointerException 생성자를 공부하다가 NullPointerException을 만났다. 초보 개발자들은 누구나 이 예외문을 만나보았을 것이다. 그렇다면, 이 예외를 어떻게 해야 만나지 않을 수 있을까. 어떤 부분을 신경써서 보아야 하는 것일까? 1. NullPointerException의 정의 실제 값이 아닌 null을 가지고 있는 객체 또는 변수를 호출할 때 발생하는 런타임 오류이다. null 값을 가지고 있는 것을 가지고 toString을 한다 던지, 어떤 객체 안에 있는 null 값을 가지고 있는 변수를 호출한다던지 할 때 발생한다. String data = null; System.out.println(data.toString()); // ~~~~(NullPo.. 2022. 7. 11.
[Java] static 활용 [Java] static 활용 intelliJ를 사용하다보면, psvm이라는 단축어를 쓸 때가 있다. 메인 메소드를 만들 때 쓰는 것이다. 메인 메소드는 다음과 같은 코드를 써야 만들 수 있다. public static void main(String[] args){ } public은 그렇다 치고, main은 메소드 이름이고, void는 메소드 타입이고, 그럼 static은 무엇인가? static은 ‘고정된’이라는 의미를 가지고 있다. 정적 멤버는 클래스에 고정된 멤버로서 객체를 생성하지 않고 사용할 수 있는 필드와 메소드를 의미한다. 각각 정적 필드, 정적 메소드라고 부른다. 정적 멤버는 객체에 소속된 멤버가 아니라 클래스에 소속된 멤버이기 때문에 클래스 멤버라고도 한다. 쉽게 이야기하면, 하나의 클래스.. 2022. 7. 10.
728x90