컴퓨터프로그래밍 128

JAVA - 입력, 출력 클래스

사용방법 콘솔 프로그램에서 키보드로 문자열을 입력받기 위해서는 BufferdReader형 객체를 선언하면 된다. BufferedReader형 객체는 생성시에 PrintStream형 객체를 필요로 하고, PrintStream형 객체는 생성시에 다시 Reader형 객체가 필요하다. 문자를 입력받는 ReadLine()함수는 라인단위(엔터키를 칠 때까지)로 입력을 받는다. import java.io.*; BufferedReader key;String txt; key new BufferedReader(new InputStreamReader(System.in)); ln=key.readLine(); 클래스 정리 InputStream/OutputString 클래스는 바이트 단위로 입력/출력을 담당하는 클래스의 최상위 ..

JAVA - java.io 패키지

스트림스트림은 데이터를 원하는 곳으로 보내거나 받기 위한 통로로서 데이터 흐름 또는 데이터를 전송하기 위한 파이프라고 볼 수 있다. 스트림의 종류스트림은 취급하는 데이터 종류에 따라 바이트 스트림과 문자 스트림으로 구분할 수 있다. 바이트 스트림은 데이터를 8비트로 다루고 문자 스트림은 데이터를 16비트로 다룬다. 스트림의 사용바이트 스트림과 문자 스트림은 모두 동일한 방식으로 사용할 수 있다. 가장 먼저 스트림을 열고 스트림에서 데이터를 읽은 후에 스트림을 닫으면 된다. 다음 그림은 이러한 과정을 보여준다. File클래스File클래스는 파일과 디렉토리에 대한 정보(경로, 이름, 크기 등)를 파악하고 삭제하는 등의 다양한 조작을 지원하는 클래스이다.1.파일 정보를 얻을 수 있다.2. 파일과 디렉토리를 생..

JAVA - java.lang 패키지2

String, StringBuffer, StringBuilder 클래스문자열 관련 클래스에는 String, STringBuffer와 Java 5.0에서 추가된 StringBuilder가 있다. 이 클래스들은 모두 문자열을 조작할 수 있는 특징을 가지고 있지만 조금씩 다른 특징을 가지고 있으므로 이에 대해서 알아두어야 한다. String 클래스는 한 번 생성된 객체의 문자열은 변경할 수 없는 불변승ㄹ을 가지며, StringBuffer클래스는 불변성을 가지고 있지 않아 문자열 연결시 좀 더 효율적으로 동작한다. 또한 동기화 처리가 되어 있어 여러 스레드가 동시에 접근ㅇ하더라도 문자열을 안정적으로 다룰 수 있다. 그리고 StringBuilder 클래스는 StringBuffer클래스에서 동기화 처리 기능을 제거..

JAVA - java.lang 패키지

패키지란?자바에서는 이미 여러 가지 기능을 가진 클래스를 전문가들이 만들어 놓고 제공하고 있습니다.우리는 어떤 목적을 달성하기 위해 이미 만들어진 클래스가 있는가 확인하고 있으면 이것을 사용하고 없으면 직접 만들어야 합니다. 이미 만들어져 있는 클래스를 사용하는 방법은 [import]문에서 경로를 지정해주면 됩니다.예를 들어서import sun.util.char;라는 문장을 해석해보면sun폴더의 util폴더안에 char클래스를 사용하겠다는 문장입니다. import sun.util.*;라는 문장은sun폴더의 util폴더안에 들어있는 모든 클래스를 사용하겠다는 문장입니다. import sun.*;라는 문장은sun폴더안에 들어있는 util 폴더를 포함한 모든 클래스를 사용하겠다는 문장입니다. 패키지 컴파일 및..

JAVA - 중첩 클래스

중첩 클래스는 클래스 내부에 다른 클래스를 선언하는 것을 말합니다. 정적 중첩 클래스(Static Nested Class)정적 중첩 클래스는 외부 클래스 내에 static 제한자로 선언한 클래스를 말하며 아래처럼 작성할 수 있다.1. 정적중첩 클래스는 외부 클래스의 멤버로 선언해야 한다.2. 정적 중첩 클래스는 static 제한자로 선언되어야 한다.3. 정적 중첩 클래스는 top-level 클래스와 같은 속성을 갖는다.4. 정적 중첩 클래스는 top-level 클래스와 같은 속성을 갖는다.5. 정적 중첩 클래스는 외부 클래스의 인스턴스 없이 접근할 수 있다.6. 정적 중첩 클래스 내부에 정적 멤버static meber와 비정적 멤버 non-static member 모두 선언할 수 있다.7. 정적 중첩 클..

JAVA 가비지 컬렉션

가비지 컬랙션(Garbage Collection)가비지 컬렉션은 가비지 컬렉터가 메모리의 힙 영역에 할당된 더 이상 사용되지 앟는 객체를 다른 객체가 사용할 수 있도록 제거하는 것을 말한다. 가비지 컬렉션을 자동 메모리 관리라 부르기도 한다.가비지 컬렉션의 특징을 정리하면 다음과 같다. 가비지 컬렉션의 특징1. 자동 메모리 관리 automatic memory management라 부르기도 한다.2. 가비지 컬렉션은 프로그래머가 구현할 수 없다.3. 가비지 컬렉션의 대상은 객체이지 참조가 아니다.4. 가비지 컬렉션의 대상은 살아있는 스레드가 더이상 참조하지 않는 객체이다.5. 다른 참조 변수도 참조하고 있는 객체는 가비지 컬렉션의 대상이 될 수 없다.6.객체에 할당된 메모리를 명시적으로 해체할 수 없다.7..

JAVA연산자

자바에서 사용할 수 있는 연산자에는 산술, 대입, 관계, 조건, 논리 연산자가 있으며 데이터형을 비교하기 위한 instanceof 연산자가 있다. 연산자의 종류 연산자의 종류 산술(Arithmetic) +, -, *, /, %, ++, -- 대입(Assignment) =, op= 관계(relational) , , ==, != 조건(Conditional) ? : 논리(Logical) !, &, |, &&, || 타입비교(instanceof) instanceof 산술연산자(Arithmetic) 연산자1. 피연산자에 double 형이 있으면 double형으로 연산을 수행2. 피연산자에 float형이 잇으면 float형으로 연산을 수행3. 피연산자에 long형이 있으면 long형으로 연산을 수행4. 그 외에는 ..

JAVA - 기타 제한자.

final 제한자.final 제한자가 선언된 변수의 값은 변경할 수 없으며 final 제한자가 선언된 메소드는 하위 클래스에서 오버라이딩 할 수 없다. 1. 변경할 수 없음을 의미2. 클래스, 내부 클래스, 메소드, 변수에 선언 가능3. 클래스에 선언하면 다른 클래스가 이 클래스를 상속할 수 없음4. 메소드에 선언하면 다른 클래스에서 이 메소드를 오버라이딩 할 수 없음5. 변수에 선언하면 일단 값이 할당된 이후에는 더 이상 값을 변경할 수 없음6. final 메소드가 있더라도 클래스를 반드시 final로 선언할 필요는 없음 abstract 제한자.abstract는 "추상"이라는 뜻을 가지고 있따. 그래서 이 제한자가 선언된 메소드는 완벽하게 정의되지 않았다는 것을 알리는 역할을 한다. 1. 메소드 몸체를..

JAVA - 접근 제한자.

어떤 클래스를 설계할 때 변수나 함수가 클래스 내부에서만 필요에 의해 사용되고 외부로는 그 자세한 내용이 알려질 필요가 없는 경우가 많다. 즉 부품을 만든 사람만 복잡하게 생각하고 사용하는 사람은 간단한 것만을 알아도 사용이 가능하게 해야 하는 것이다. 이런 요구를 충족시키기 위해 멤버변수나 함수에 접근등급이 도입 되었다. 이것이 바로 제한자이다. 이런 제한자는 접근을 제어하기 위한public제한자. 동기화를 위한 synchornized 제한자 등 여러 제한자가 있다. 제한자의 종류public, private, protected, default, final, abstract, static, native, synchronized, transient, volatile 접근 제한자1. 클래스, 메소드, 변수의..

JAVA - 검증, 예외

검증(assertion) 검증(assertion) 요약1.작성된 코드가 정상적으로 실행되는지 확인하기 위한 디버깅 기법2. 문법의 확장으로 제공되기 때문에 추가 import문이 필요하지 않음3. JAVA 1.4에 추가된 기능4. JAVA 1.4에서 Assertion을 사용하기 위해서는 - source 1.4로 컴파일 5. 자바 5.0에서는 자동으로 인식한다. 사용방법1표현식이 false라면 AssertionError를 발생 assert 표현식; 사용방법2표현식1이 false라면 assertionError에 표현식2를 String으로 변환해 전달하는 구조이다.표현식1에는 boolean형으로 표현되는 식을 작성해야되고 표현식2에는 String형으로 변환될 수 있는 데이터형을 선언해야 한다. assert 표현..