JAVA/Java: 149개의 글
File 클래스 자바에서는 File 클래스를 통해서 파일과 디렉터리를 다룰 수 있도록 하고 있다. 그래서 File 인스턴스는 파일 일 수도 있고 디렉터리 일 수도 있다. 1. File 클래스 API- 경로와 관련된 File의 멤버변수 멤버변수 설명 static String pathSeparator OS에서 사용하는 경로 구분자. 윈도우";", 유닉스":" static char pathSeparatorChar OS에서 사용하는 경로 구분자. 윈도우';', 유닉스':' static String separator OS에서 사용하는 이름 구분자. 윈도우"\", 유닉스"/" static char separatorChar OS에서 사용하는 이름 구분자. 윈도우'\', 유닉스'/' import java.io.*; c..
문자 기반 스트림 1. 문자 기반 스트림문자데이터를 다루는 데 사용된다는 것을 제외하고는 바이트기반 스트림과 문자기반 스트림의 사용방법은 거의 같다.문자기반 스트림이라는 것이 단순히 2byte로 스트림을 처리하는 것만을 의미하지 않는다는 것이다. (1) FileReader와 FileWriter FileReader와 FileWriter는 파일로부터 텍스트 데이터를 읽고, 파일에 쓰는데 사용된다. 사용방법은 FileInputStream과 FileOutputStream과 다르지 않다.import java.io.*; class FileReaderEx1 {public static void main(String args[]) {try {String fileName = "test.txt";FileInputStream..
바이트 기반의 스트림 1. 바이트 기반 스트림(1) InputStream과 OutputStreamInputStream과 OutputStream은 모든 바이트기반의 스트림의 조상이며 같은 메서드가 선언되어 있다.cp.)void close(): 스트림을 닫음으로써 사용하고 있던 자원을 반환한다.abstract int read(): 1byte를 읽어온다.(0~255 사이의 값), 더 이상 읽어 올 데이터가 없으면 -1을 반환한다. abstract메서드라서 InputStream의 자손들은 자신의 상황에 알맞게 구현해야 한다.int read(byte[] b): 배열 b의 크기만큼 읽어서 배열을 채우고 읽어 온 데이터의 수를 반환한다. 반환하는 값은 항상 배열의 크기보다 작거나 같다.int read(byte[] b..
파일I/O 개요 1. 입출력이란?입출력이란 컴퓨터 내부 또는 외부의 장치와 프로그램간의 데이터를 주고받는 것을 말한다.예를 들면 키보드로부터 데이터를 입력받는다든가 System.out.println()을 이용해서 화면에 출력한다던가 하는 것이 가장 기본적인 입출력의 예이다. 2. 스트림자바에서 입출력을 수행하려면, 즉 어느 한쪽에서 다른 쪽으로 데이터를 전달하려면, 두 대상을 연결하고 데이터를 전송할 수 있는 무언가가 필요한데 이것을 스트림이라 한다.스트림은 단방향 통신만 가능하기 때문에 하나의 스트림으로 입력과 출력을 동시에 처리할 수 없다.스트림은 먼저 보낸 데이터를 먼저 받게 되어 있으며 중간에 건너뜀 없이 연속적으로 데이터를 주고 받는다. 큐와 같은 FIFO(First In First Out)구조..
제네릭 제네릭은 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입 체크를 해주는 기능이다. 즉, 클래스 내부에서 사용할 데이터 타입을 나중에 인스턴스를 생성할 때 확정하는 것을 제네릭이라 한다.객체의 타입을 컴파일 시에 체크하기 때문에 객체의 타입 안정성을 높이고 형변환의 번거로움이 줄어든다.ArrayList와 같은 컬렉션 클래스는 다양한 종류의 객체를 담을 수 있긴 하지만 보통 한 종류의 객체를 담는 경우가 더 많다. 그런데도 꺼낼 때 마다 타입체크를 하고 형변환을 하는 것은 아무래도 불편할 수 밖에 없다. 위의 그림은 아래의 코드를 간략화한 것이다. class Person{ public T info;// p1 일시 데이터 타입은 String이된다.(인스턴스 생성시 String ..
컬렉션 프레임워크 인터페이스 특 징 List순서가 있는 데이터의 집합, 데이터의 중복을 허용한다.--> 데이터를 add하면 앞에서 부터 순차적(순서대로)으로 데이터가 들어간다. 그래서 각각의 저장되어 있는 공간들은 고유한 index를 갖는다. ex.) 대기자 명단구현 클래스: ArrayList, LinkedList, Stack, Vector등 Set순서를 유지하지 않는 데이터의 집합, 데이터의 중복을 허용하지 않는다.--> 집합이다. 데이터가 순서와는 상관없이 add된다. 중복되지 않는다.ex.) 양의 정수 집합, 소수의 집합구현 클래스: HashSet, TreeSet등 Map키와 값의 쌍으로 이루어진 데이터의 집합. 순서는 유지되지 않으며, 키는 중복을 허용하지 않고, 값을 중복을 허용한다.ex.) 우..
staticstatic이라는 의미는 ‘정적인, 움직이지 않는다.’는 뜻이다. 메모리에서 고정되기 때문에 붙은 이름이지만, 실제 소스에서 static을 사용한다는 의미는 모든 객체가 ‘공유’한다는 의미이다.cf.) 객체지향이라는 패러다임이란 데이터와 기능(로직, 메소드)을 가진 객체들의 커뮤니케이션으로 어떤 작업을 완료하는 것을 의미한다. cf.) 객체마다 데이터를 가져도 불편한 때도 있다예를 들어 여러분이 어떤 쇼핑몰을 운영한다고 가정해보자. 여러분의 시스템에서 발생하는 매출 현황은 비단 여러분뿐 아니라 여러분의 회사의 모든 직원이 알아야 한다.이 비유는 객체지향 프로그래밍에서도 마찬가지로 적용할 수 있다.1 모든 객체가 동일한 데이터를 참고해야 할 필요가 있다.2 모든 객체는 데이터에 영향을 줄 수 있..
클래스 메서드와 인스턴스 메서드 클래스메서드도 클래스변수처럼, 객체를 생성하지 않고도 '클래스이름.메서드이름(매개변수)'와 같은 식으로 호출이 가능하다.클래스는 데이터(변수)와 데이터에 관련된 메서드의 집합이라고 할 수 있다. 같은 클래스 내에 있는 메서드와 멤버변수는 아주 밀접한 관계가 있다.인스턴스메서드는 인스턴스변수와 관련된 작업을 하는, 즉, 메서드의 작업을 수행하는데 인스턴스변수를 필요로 하는 메서드이다. 그래서 인스턴스변수는 인스턴스(객체)를 생성해야만 만들어지므로 인스턴스변수를 사용하는 인스턴스메서드 역시 인스턴스를 생성해야만 호출할 수 있는 것이다. 반면에 메서드 중에서 인스턴스와 관계없는(인스턴스변수나 인스턴스메서드를 사용하지 않는) 메서드를 클래스메서드로 정의한다.cf.) 멤버변수는 인..
클래스멤버와 인스턴스멤버간의 참조와 호출 같은 클래스에 속한 멤버들 간에는 별도의 인스턴스를 생성하지 않고도 서로 참조 또는 호출이 가능하다. 단, 클래스멤버가 인스턴스멤버를 참조 또는 호출하고자 하는 경우에는 인스턴스를 생성해야 한다.그 이유는 인스턴스멤버가 존재하는 시점에 클래스멤버는 항상 존재하지만, 클래스멤버가 존재하는 시점에 인스턴스멤버가 존재할 수도 있고 존재하지 않을 수도 있기 때문이다. class TestClass{void instanceMethod(){} //인스턴스 메서드static void staticMethod(){} // static 메서드void instanceMethod2(){ //인스턴스 메서드instanceMethod();//다른 인스턴스메서드를 호출한다.staticMeth..
변수의 종류 변수의 종류 선언위치 생성시기 클래스 변수 클래스 영역 클래스가 메모리에 올라갈 때 인스턴스 변수 클래스 영역 인스턴스가 생성되었을 때 지역 변수클래스 영역 이외의 블럭(메서드, 생성자, 초기화 블럭 내부) 변수 선언문이 수행되었을 때 1. 인스턴스 변수클래스 영역에 선언되며, 클래스의 인스턴스를 생성할 때 만들어진다. 그렇기 때문에 인스턴스 변수의 값을 읽어 오거나 저장하기 위해서는 먼저 인스턴스를 생성해야 한다.인스턴스는 독립적인 저장공간을 가지므로 서로 다른 값을 가질 수 있다. 인스턴스마다 고유한 상태를 유지해야하는 속성의 경우, 인스턴스변수로 선언한다. 2. 클래스 변수클래스 변수를 선언하는 방법은 인스턴스 변수 앞에 static을 붙이기만 하면 된다. 인스턴스마다 독립적인 저장공간..