:D
입출력 I/O I/O는 Input & Output 의 약자로 입력과 출력을 뜻하고 컴퓨터 내부 또는 외부 장치와 프로그램 사이에 데이터를 주고받는 것을 일컫는다. 입출력의 범위와 모델 입출력 대상이 달라지면 프로그램상에서의 입출력 방식도 달라지는 것이 보통이다. 그런데 자바에서는 입출력 대상에 관계없이 입출력의 진행방식이 동일하도록 별도의 “I/O 모델”을 정의하고 있다. I/O 모델의 정의로 인해서 입출력 대상의 차이에 따른 입출력 방식의 차이는 크지 않다. 기본적인 입출력의 형태는 동일하고 이것이 Java의 I/O 스트림이 가지는 장점이다. ▼ 일반적인 입출력 대상 키보드와 모니터 하드디스크에 저장되어 있는 파일 USB와 같은 외부 메모리 장치 네트워크로 연결되어 있는 컴퓨터 사운드, 오디오카드와 같..
입출력 I/O I/O는 Input & Output 의 약자로 입력과 출력을 뜻하고 컴퓨터 내부 또는 외부 장치와 프로그램 사이에 데이터를 주고받는 것을 일컫는다. 입출력의 범위와 모델 입출력 대상이 달라지면 프로그램상에서의 입출력 방식도 달라지는 것이 보통이다. 그런데 자바에서는 입출력 대상에 관계없이 입출력의 진행방식이 동일하도록 별도의 “I/O 모델”을 정의하고 있다. I/O 모델의 정의로 인해서 입출력 대상의 차이에 따른 입출력 방식의 차이는 크지 않다. 기본적인 입출력의 형태는 동일하고 이것이 Java의 I/O 스트림이 가지는 장점이다. ▼ 일반적인 입출력 대상 키보드와 모니터 하드디스크에 저장되어 있는 파일 USB와 같은 외부 메모리 장치 네트워크로 연결되어 있는 컴퓨터 사운드, 오디오카드와 같..
Iterator Iterator는 컬렉션 프레임워크에서 컬렉션에 저장된 요소들을 읽어오는 방법을 표준환 한 것이다. Collection 인터페이스에는 iterator라는 이름의 메소드가 다음의 형태로 정의되어 있다. Iterater iterator() { …. } iterator 메소드가 반환하는 참조값의 인스턴스는 Iterator 인터페이스를 구현하고 있다. iterator 메소드가 반환한 참조값의 인스턴스를 이용하면 컬렉션 인스턴스에 저장된 인스턴스의 순차적 접근이 가능하다. iterator 메소드의 반환형이 Iterator이니, 반환된 참조값을 이용해서 Iterator에 선언된 함수들만 호출하면 된다. ▼ Iterator인터페이스에 정의된 메소드들 메소드 설명 boolean hasNext() 참조할..
Iterator Iterator는 컬렉션 프레임워크에서 컬렉션에 저장된 요소들을 읽어오는 방법을 표준환 한 것이다. Collection 인터페이스에는 iterator라는 이름의 메소드가 다음의 형태로 정의되어 있다. Iterater iterator() { …. } iterator 메소드가 반환하는 참조값의 인스턴스는 Iterator 인터페이스를 구현하고 있다. iterator 메소드가 반환한 참조값의 인스턴스를 이용하면 컬렉션 인스턴스에 저장된 인스턴스의 순차적 접근이 가능하다. iterator 메소드의 반환형이 Iterator이니, 반환된 참조값을 이용해서 Iterator에 선언된 함수들만 호출하면 된다. ▼ Iterator인터페이스에 정의된 메소드들 메소드 설명 boolean hasNext() 참조할..
컬렉션 프레임워크 컬렉션 프레임워크에서 컬렉션은 다수의 데이터, 데이터그룹을 뜻하고 프레임워크는 표준화된 프로그래밍 방식을 뜻한다. 즉 컬렉션 프레임 워크란 데이터 군을 저장하는 클래스들을 표준화 한 것이다. 컬렉션 프레임워크는 컬렉션들과 다수의 데이터를 사용하는 데 필요한 다양하고 유용한 클래스들을 제공한다. 컬렉션 프레임워크 구조 인터페이스 List와 Set을 구현한 컬렉션 클래스들의 공통부분을 뽑아 만든 것이 Collection인터페이스 이다. Map은 이들 컬렉션과 전혀 다른 형태 이므로 공통부분이 없다. Collection 인터페이스를 구현하는 제네릭 클래스 - 인스턴스 단위의 데이터 저장 기능을 제공(배열과 같이 단순 인스턴스 참조 값 저장) Map - key-value 구조의 인스턴스 저장 ..
컬렉션 프레임워크 컬렉션 프레임워크에서 컬렉션은 다수의 데이터, 데이터그룹을 뜻하고 프레임워크는 표준화된 프로그래밍 방식을 뜻한다. 즉 컬렉션 프레임 워크란 데이터 군을 저장하는 클래스들을 표준화 한 것이다. 컬렉션 프레임워크는 컬렉션들과 다수의 데이터를 사용하는 데 필요한 다양하고 유용한 클래스들을 제공한다. 컬렉션 프레임워크 구조 인터페이스 List와 Set을 구현한 컬렉션 클래스들의 공통부분을 뽑아 만든 것이 Collection인터페이스 이다. Map은 이들 컬렉션과 전혀 다른 형태 이므로 공통부분이 없다. Collection 인터페이스를 구현하는 제네릭 클래스 - 인스턴스 단위의 데이터 저장 기능을 제공(배열과 같이 단순 인스턴스 참조 값 저장) Map - key-value 구조의 인스턴스 저장 ..
제너릭Generics 제너릭은 JDK 1.5버전에서 처음 도입 되었다. 제너릭은 다양한 타입의 객체들을 다루는 메소드나 컬렉션 클래스의 타입을 컴파일 과정에서 체크(compile time type check)해주는 기능을 한다. 객체 타입을 컴파일 시에 체크하기 때문에 객체 타입 안정성이 높아지고 형변환의 불편함이 줄어든다. - Generics 장점 타입 안정성을 제공한다. 타입체크 과정과 형변환 과정을 생략 할 수 있으므로 코드가 줄어든다. "제너릭은 다루게 될 객체의 타입을 미리 명시함으로써 번거러운 형변환을 줄이는 기능을 한다." 제너릭 클래스 제너릭 클래스 선언 제너릭은 클래스와 메서드에 모두 선언할 수 있다. 클래스에 제너릭을 선언하기 위해선 클래스 옆에 괄호와 타입변수를 선언 해 주면 된다. ..
제너릭Generics 제너릭은 JDK 1.5버전에서 처음 도입 되었다. 제너릭은 다양한 타입의 객체들을 다루는 메소드나 컬렉션 클래스의 타입을 컴파일 과정에서 체크(compile time type check)해주는 기능을 한다. 객체 타입을 컴파일 시에 체크하기 때문에 객체 타입 안정성이 높아지고 형변환의 불편함이 줄어든다. - Generics 장점 타입 안정성을 제공한다. 타입체크 과정과 형변환 과정을 생략 할 수 있으므로 코드가 줄어든다. "제너릭은 다루게 될 객체의 타입을 미리 명시함으로써 번거러운 형변환을 줄이는 기능을 한다." 제너릭 클래스 제너릭 클래스 선언 제너릭은 클래스와 메서드에 모두 선언할 수 있다. 클래스에 제너릭을 선언하기 위해선 클래스 옆에 괄호와 타입변수를 선언 해 주면 된다. ..
오류Error 프로그램 구동 중 오작동을 일으키거나 비정상적 종료를 일으키는 원인을 오류라고 하는데 발생 시점에 따라 분류되는 컴파일 에러, 런타임 에러와 프래그래머의 의도와 다르게 동작하는 논리적 에러가 존재한다. 자바에서는 런타임시 발생할 수 있는 프로그램 오류를 에러Error와 예외Exception 두가지로 구분한다. 에러는 메모리 부족이나 스택오버플로우와 같이 발생하면 복구할 수 없는 심각한 오류들을 뜻하고 예외는 발생하더라도 프로그래머가 작성한 예방 코드로 수습될 수 있는 덜 심각한 오류를 뜻한다. 오류Error 수습될 수 없는 심각한 오류 예외Exception 수습될 수 있는 오류 "오류는 어쩔 수 없지만 예외는 반드시 처리해야 한다." 예외처리 나이를 입력받는데 0보다 작은 값이 입력되었다...
오류Error 프로그램 구동 중 오작동을 일으키거나 비정상적 종료를 일으키는 원인을 오류라고 하는데 발생 시점에 따라 분류되는 컴파일 에러, 런타임 에러와 프래그래머의 의도와 다르게 동작하는 논리적 에러가 존재한다. 자바에서는 런타임시 발생할 수 있는 프로그램 오류를 에러Error와 예외Exception 두가지로 구분한다. 에러는 메모리 부족이나 스택오버플로우와 같이 발생하면 복구할 수 없는 심각한 오류들을 뜻하고 예외는 발생하더라도 프로그래머가 작성한 예방 코드로 수습될 수 있는 덜 심각한 오류를 뜻한다. 오류Error 수습될 수 없는 심각한 오류 예외Exception 수습될 수 있는 오류 "오류는 어쩔 수 없지만 예외는 반드시 처리해야 한다." 예외처리 나이를 입력받는데 0보다 작은 값이 입력되었다...
추상Abstract 클래스 추상 클래스란 클래스가 완성되지 못한(미완성) 상태를 뜻한다. 클래스가 완성되지 못했다는 것은 클래스의 코드가 완전하지 못한 것이 아니라 미완성 메소드(추상 메소드)를 포함하고 있다는 뜻이다. 추상 클래스로는 인스턴스를 생성할 수 없고 상속을 통해 자손클래스를 구현하여 활용하게 된다. 추상 클래스는 바탕이 되는 조상클래스로서 새로운 클래스를 생성할 때 중요한 역할을 한다. 추상 클래스는 클래스 앞에 'abstract'를 붙이면 추상 클래스가 되고 'abstract'가 붙은 클래스는 추상 메서드를 포함하고 있으니 상속을 통해서 구현해야 한다는 것을 알 수 있다. abstract class 클래스이름 { .. } 클래스가 설계도라면 추상클래스는 ‘미완성 설계도’로 비유할 수 있다...
추상Abstract 클래스 추상 클래스란 클래스가 완성되지 못한(미완성) 상태를 뜻한다. 클래스가 완성되지 못했다는 것은 클래스의 코드가 완전하지 못한 것이 아니라 미완성 메소드(추상 메소드)를 포함하고 있다는 뜻이다. 추상 클래스로는 인스턴스를 생성할 수 없고 상속을 통해 자손클래스를 구현하여 활용하게 된다. 추상 클래스는 바탕이 되는 조상클래스로서 새로운 클래스를 생성할 때 중요한 역할을 한다. 추상 클래스는 클래스 앞에 'abstract'를 붙이면 추상 클래스가 되고 'abstract'가 붙은 클래스는 추상 메서드를 포함하고 있으니 상속을 통해서 구현해야 한다는 것을 알 수 있다. abstract class 클래스이름 { .. } 클래스가 설계도라면 추상클래스는 ‘미완성 설계도’로 비유할 수 있다...
스트링String 클래스 String 객체는 문자열을 다루는데 가장 많이 사용하는 클래스이다. 일단 String 객체가 하나 생성되면, 그 값은 길어지거나 줄어들 수 없으며, 그 문자들은 수정 할 수 없다. 그래서 String 객체는 변경불능immutable하다고 한다. 하지만 String 클래스의 함수(Method)를 사용하여 String 결과를 수정한 결과를 새로운 String 객체로 반환할 수 있다. String str = "dean"; str = str + "92";//"dean92"라는 새로운 문자열이 str에 저장되었다. System.out.println(str);//"dean92" 출력됨 문자열 변수 str의 내용이 변경된 것 처럼 보이지만 문자열은 변경될 수 없으므로 새로운 내용의 문자열이..
스트링String 클래스 String 객체는 문자열을 다루는데 가장 많이 사용하는 클래스이다. 일단 String 객체가 하나 생성되면, 그 값은 길어지거나 줄어들 수 없으며, 그 문자들은 수정 할 수 없다. 그래서 String 객체는 변경불능immutable하다고 한다. 하지만 String 클래스의 함수(Method)를 사용하여 String 결과를 수정한 결과를 새로운 String 객체로 반환할 수 있다. String str = "dean"; str = str + "92";//"dean92"라는 새로운 문자열이 str에 저장되었다. System.out.println(str);//"dean92" 출력됨 문자열 변수 str의 내용이 변경된 것 처럼 보이지만 문자열은 변경될 수 없으므로 새로운 내용의 문자열이..
접근제어자 접근제어자는 클래스, 변수, 메서드의 선언부에 사용되어 클래스 내ㆍ외부에서 접근할 수 있는 범위를 지정한다. 지시자 클래스 내부 동일 패키지 상속받은 클래스 이외의 영역 private ○ X X X default ○ ○ X X protected ○ ○ ○ X public ○ ○ ○ ○ 접근 제어자가 사용될 수 있는곳 - 클래스, 멤버변수, 메서드, 생성자 private - 같은 클래스 내에서만 접근 가능하다 defualt - 같은 패키지 내에서만 접근 가능하다. protected - 같은 패키지, 다른 패키지의 자손 패키지에서 접근 가능하다. public - 접근 제한이 없다. default 는 아무런 접근 제어자도 붙이지 않는 것을 의미한다. class AAA{ private int num;..
접근제어자 접근제어자는 클래스, 변수, 메서드의 선언부에 사용되어 클래스 내ㆍ외부에서 접근할 수 있는 범위를 지정한다. 지시자 클래스 내부 동일 패키지 상속받은 클래스 이외의 영역 private ○ X X X default ○ ○ X X protected ○ ○ ○ X public ○ ○ ○ ○ 접근 제어자가 사용될 수 있는곳 - 클래스, 멤버변수, 메서드, 생성자 private - 같은 클래스 내에서만 접근 가능하다 defualt - 같은 패키지 내에서만 접근 가능하다. protected - 같은 패키지, 다른 패키지의 자손 패키지에서 접근 가능하다. public - 접근 제한이 없다. default 는 아무런 접근 제어자도 붙이지 않는 것을 의미한다. class AAA{ private int num;..
오버라이딩Overriding 오버라이딩Overriding은 객체 지향 관점에서 서브클래스 또는 자식 클래스가 자신의 슈퍼클래스들 또는 부모 클래스들 중 하나에 의해 이미 제공된 메소드를 특정한 형태로 구현하는 것을 말한다. 즉 조상 클래스로부터 상속받은 메서드의 내용을 변경하는 것을 말한다. 상속받은 메서드를 원본 그대로 사용하기도 하지만 많은경우 자식 클래스만의 특징에 맞게 변경해야하는 경우가 훨씬 많고 이 때 부모 클래스를 오버라이딩 한다. “조상클래스로부터 상속받은 메서드의 내용을 상속받는 클래스에 맞게 변경하는 것을 오버라이딩이라고 한다.” class Point { int x; int y; String getLocation(){ return "x : " + x + ", y : " + y; } } ..
오버라이딩Overriding 오버라이딩Overriding은 객체 지향 관점에서 서브클래스 또는 자식 클래스가 자신의 슈퍼클래스들 또는 부모 클래스들 중 하나에 의해 이미 제공된 메소드를 특정한 형태로 구현하는 것을 말한다. 즉 조상 클래스로부터 상속받은 메서드의 내용을 변경하는 것을 말한다. 상속받은 메서드를 원본 그대로 사용하기도 하지만 많은경우 자식 클래스만의 특징에 맞게 변경해야하는 경우가 훨씬 많고 이 때 부모 클래스를 오버라이딩 한다. “조상클래스로부터 상속받은 메서드의 내용을 상속받는 클래스에 맞게 변경하는 것을 오버라이딩이라고 한다.” class Point { int x; int y; String getLocation(){ return "x : " + x + ", y : " + y; } } ..