일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- FileInputStream
- 변수
- 배열
- 졸리다
- 코린이
- 파이팅
- Java
- MPA
- 코딩
- node.js
- 자바
- 상속
- 인터페이스
- try-catch
- ArrayList
- SSR
- 새벽공부
- 메서드
- 문자 단위 스트림
- 초보개발자
- 인스턴스
- throws
- 다형성
- 보조 스트림
- 바이트 단위 스트림
- 자료형
- 예외 처리
- exception
- 개발자
- 백엔드
- Today
- Total
목록코린이 (51)
SHUSTORY
Set 인터페이스 순서와 상관없이 중복을 허락하지 않는 경우 Set 인터페이스를 구현한 클래스를 사용한다. Set 인터페이스를 구현한 대표 클래스에는 HashSet, TreeSet이 있다. HashSet 클래스 HashSet 클래스는 집합 자료 구조를 구현하며 중복을 허용하지 않는다. 예제01에서 볼 수 있듯이 hashSet에 동일한 자료가 추가되지 않는다. 또한 ArrayList는 순서가 있는 자료 구조이기 때문에 추가한 순서대로 출력되지만, HashSet은 자료가 추가된 순서와 상관 없이 출력된다. 회원을 삭제할 때 ArrayList에서는 get(i) 메서드를 사용해 i번째에 해당하는 항목을 삭제한 반면, HashSet에서는 해당하는 아이디를 가진 회원을 찾기 위해 Iterator를 사용한다. 메서드..
* 간단한 회원 관리 프로그램을 만들면서 컬렉션 프레임워크에서 제공하는 각 클래스를 실습해보자. 다음 Member 클래스는 앞으로 실습할 때 계속 사용할 것이다. List 인터페이스 List 인터페이스에는 객체를 순서에 따라 저장하고 유지하는 데 필요한 메서드가 선언되어 있다. 대표적인 순차 자료 구조에는 배열이 있으며, 자바에서 배열을 구현한 대표 클래스로는 ArrayList, Vector가 있으며 배열과 구현 방식은 다르지만 순차 자료 구조를 구현한 LinkedList가 있다. ArrayList 클래스 객체 순서를 기반으로 순차적으로 자료를 관리하는 프로그램을 구현할 때 사용한다. ArrayList를 활용한 회원 관리 프로그램 구현하기 ArrayList를 활용한 MemberArrayList 클래스에 ..
컬렉션 프레임워크 자료 구조는 프로그램 실행 중 메모리에 자료를 유지, 관리하기 위해 사용한다. 자바에서는 필요한 자료 구조를 미리 구현하여 java.util 패키지에서 제공하고 있는데, 이를 컬렉션 프레임워크라고 한다. 자료 구조는 개발자가 직접 만들어 사용할 수도 있지만, 자바 컬렉션 프레임워크를 사용하면 직접 개발하는 수고를 덜고 잘 만들어진 자료 구조 클래스를 활용할 수 있다. 자바 컬렉션 프레임워크에는 여러 인터페이스가 정의되어 있고, 그 인터페이스를 구현한 클래스가 있다. 컬렉션 크레임워크의 전체 구조는 Collection 인터페이스와 Map 인터페이스 기반으로 이루어져 있다. Collection 인터페이스는 하나의 자료를 모아서 관리하는 데 필요한 기능을 제공하고, Map 인터페이스는 쌍으로..
제네릭 프로그램에서 변수를 선언할 때 모든 변수는 자료형이 있으며, 메서드에서 매개변수를 사용할 때도 마찬가지이다. 대부분은 하나의 자료형으로 구현하지만, 어떤 값이 하나의 참조 자료형이 아닌 여러 참조 자료형을 사용할 수 있도록 프로그래밍 하는 것을 '제네릭 프로그래밍' 이라고 한다. 제네릭 프로그램은 참조 자료형이 변환될 때 이에 대한 검증을 컴파일러가 하므로 안정적이다. 다이아몬드 연산자 자바 7부터는 제네릭 자료형의 클래스를 생성할 때 생성자에 사용하는 자료형을 명시하지 않을 수 있다. 여기에서 를 다이아몬드 연산자라고 한다. 선언된 자료형을 보고 생략된 부분이 String임을 컴파일러가 유추할 수 있기 때문에 생성 부분에서는 생략 가능하다. 자료형 매개변수 T와 static stat..
기본 자료형을 위한 클래스 지금까지 정수를 사용할 때 기본형인 int를 사용했다. 그런데 다음과 같이 매개변수가 객체거나 반환 값이 객체형인 경우 정수를 객체형으로 사용해야 한다. 이를 위해 자바에서는 기본 자료형처럼 사용할 수 있는 클래스를 제공한다. 이러한 클래스를 기본 자료형을 감쌌다는 의미로 Wrapper 클래스라고 한다. 기본형 Wrapper 클래스 boolean Boolean byte Byte char Character short Short int Integer long Long float Float double Double Integer 클래스 사용하기 Integer 클래스의 생성자는 다음과 같이 특정 정수를 매개변수로 받는 경우와 문자열을 받는 경우 두 가지가 있다. Integer 클래스 ..
String을 선언하는 두 가지 방법 자바는 문자열을 사용할 수 있도록 String 클래스를 제공한다. String 사용 시 문자열을 생성자의 매개변수로 하여 생성하는 방식과 이미 생성된 문자열 상수를 가리키는 방식이 있다. 비슷해 보이는 위 두 가지 방법에는 큰 차이가 있다. new 예약어를 사용하여 객체를 생성하는 경우, "abc" 문자열을 위한 메모리가 할당되고 새로운 객체가 생성된다. 하지만 String str2 = "test"; 와 같이 생성자를 이용하지 않고 바로 문자열 상수를 가리키는 경우 str2가 기존에 만들어져 있던 "test"라는 문자열 상수의 메모리 주소를 가리키게 된다. 따라서 String str3 = "test"; 코드를 작성하게 되면 str2와 str3는 같은 주소 값을 갖게 ..
java.lang 패키지 자바로 프로그램을 구현하면서 사용한 String, Integer와 같은 클래스는 java.lang 패키지에 속해 있다. String 클래스의 전체 이름은 java.lang.String이고, Integer 클래스의 전체 이름은 java.lang.Integer이다. 이와 같이 java.lang 패키지에는 기본적으로 많이 사용하는 클래스들이 포함되어 있다. 자바 프로그래밍에서 외부 패키지에 선언한 클래스를 사용할 때는 import문으로 클래스가 어느 패키지에 속해 있는지 선언해야 하는데, String 클래스를 쓰면서 import.java.lang.String.*; 문장을 작성하지 않아도 되는 이유는 무엇일까? java.lang 패키지는 컴파일할 때 import.java.lang.*; ..
인터페이스 상수 인터페이스는 추상 메서드로 이루어지므로 인스턴스를 생성할 수 없으며 멤버 변수도 사용할 수 없다. 그럼에도 위와 같이 변수를 선언해도 오류가 발생하지 않는 이유는 무엇일까? 이는 인터페이스에 선언한 변수를 컴파일하면 상수로 변환되기 때문이다. 컴파일하면 위 코드는 다음과 같이 변환된다. public static final double PI = 3.14; public static final int ERROR = -9999999; 디폴트 메서드와 정적 메서드 자바 8부터 제공되는 기능으로, 디폴트 메서드는 인터페이스에서 구현 코드까지 작성한 메서드이다. 인터페이스를 구현한 클래스에 기본적으로 제공할 메서드인 것이다. 정적 메서드는 인스턴스 생성과 상관 없이 사용할 수 있는 메서드이다. 하지만..
인터페이스의 역할 메서드 선언부만 있는 인터페이스를 사용하는 이유는 무엇일까? 인터페이스는 클라이언트 프로그램에 어떤 메서드를 제공하는지 미리 알려주는 명세의 역할을 한다. * 참고로 서버는 기능을 제공하는 쪽, 클라이언트는 기능을 사용하는 쪽을 의미한다. 예를 들어 인퍼에이스 A가 있고, 이를 구현한 B 클래스와 B 클래스를 사용하는 C 프로그램이 있다고 가정해보자. A에는 어떤 매개변수가 사용되며 어떤 자료형이 반환되는지와 함께 구현할 추상 메서드가 모두 선언되어 있다. 즉 C에서는 B의 구현 코드 전체를 살펴보지 않더라도 A만 보면 이 B 클래스를 어떻게 사용할지 알 수 있다. 이렇듯 프로그램에서 각 클래스를 사용할 때 클래스에서 구현한 내용을 몰라도 인터페이스에서 선언한 메서드의 매개변수 자료형과..
인터페이스 인터페이스는 클래스 혹은 프로그램이 제공하는 기능을 명시적으로 선언하는 역할을 한다. 구현된 코드가 없고 추상 메서드와 상수로만 이루어져 있어 인스턴스를 생성할 수 없다. 인터페이스 만들기 이클립스 File - Interface를 클릭하거나 Ctrl + N을 눌러 interface를 클릭해 생성할 수도 있다. 인터페이스에서 선언한 변수는 public static final 예약어를 사용하지 않아도 컴파일 과정에서 상수로 변환된다. 인터페이스에서 선언한 메서드는 구현 코드가 없으며, abstract abstract 예약어를 사용하지 않아도 컴파일 과정에서 추상 메서드로 변환된다. 클래스에서 인터페이스 구현하기 선언한 인터페이스를 클래스가 사용하는 것을 '클래스에서 인터페이스를 구현한다' 라고 표..