본문 바로가기

분류 전체보기

(46)
JAVA - InputStream/ OutputStream/ FileInputStream/ FileOutputStream /BufferedInputStream / BufferedOutputStream/ FileReader/ FileWriter/ ObjectInputStream/ ObjectOutputStream Stream이란? ● 데이터의 흐름 ● 단방향, FIFO(선입선출) 구조를 가지고 있음 ● 데이터는 어떠한 통로를 통해 데이터가 이동되는데 그 통로가 바로 Stream ● 출력 단위에 따라 바이트 기반과 문자 단위로 분 위의 기능을 수행하기 위해 InputStream과 OutputStream이 존재(두 스트림은 단일 방향으로 연속적으로 흘러감) InputStream(Input : 프로그램에 데이터가 들어오는 것) ● 바이트 기반 입력 스트림의 최상위 추상 클래스 ● 모든 바이트 기반 입력 스트림은 InputStream 상속받음 ● 파일 데이터를 읽거나 네트워크 소켓을 통해 데이터를 일걱나 키보드에서 입력한 데이터를 읽을 때 사용 InputStream 주요 메서드 메서드 내용 int available() ..
JAVA - I/O (Input/Output) File 클래스 File 클래스 ● java.io 패키지는 기존의 파일이나 폴더에 대한 제어를 위해 File 클래스 제공 ● 파일과 폴더에 대한 다양한 기능 제공 ● File 객체는 경로정보를 받아 파일 또는 디렉토리 정보를 객체화함 ● 파일 스트림객체를 생성하고자 할때 사용 ● 물리적 파일 시스템에 대해 캡슐화한 경로명을 확인하고 실제의 파일이나 디렉토리와 대응되는지 알아볼 때 File 메소드 getName() 경로를 제외한 파일의 이름. 경로의 가장 마지막 부분을 String 객체로 리턴 getPath() 파일이나 디렉토리 이름을 포함한 File 객체의 경로를 String으로 리턴함 isAbsolute() File 객체가 절대경로를 참조하고 있다면 true, 아니라면 false 리턴 getParent() 현재 Fil..
JAVA - Scanner 클래스/Random 클래스 Scanner 클래스 - 기본 데이터 타입들을 Scanner의 메소드를 사용해 입력받을 수 있음 - Scanner 사용시 util 패키지의 경로로 import해줘야 함 Scanner 입력 메소드 nextInt() nextDouble() next() : 공백 또는 줄바꿈까지만 읽음 nextLine() : 공백 유무와 상관없이 줄바꿈까지 읽음 Random Class ● 난수를 발생시키는 객체 ● 다양한 데이터 타입형(int, double 등)을 발생 시키거나 일정한 범위에 존재하는 난수를 발생되게 할 수 있음. Random클래스 생성자 ● System.현재 시간을 시드로 이용하는 Random객체 생성 ● 매개변수 seed를 시드값으로 하는 Random 인스턴스 생성 Random 메소드 void nextByt..
JAVA - Date Class/ Calendar 클래스(feat.관련 메서드) Date Class - 날짜, 시각 정보를 관리하는 객체 ▷Date 클래스 생성자 ★ Date() : 현재의 날짜와 시간을 저장한 객체 생성 ● Date(long msec) : 1970년 1월 1일 0시 0분 0초부터 msec를 1/1000초 단위로 해 경과한 날짜와 시간을 저장한 객체 생성 ▷Date 클래스 메서드 ● boolean after(Date when) : when의 날짜가 현재 날짜 이후면 true, 아니면 false 반환 ● boolean before(Date when) : when의 날짜가 현재 날짜 이전이면 true, 아니면 false 반환 ● int compareTo(Date anotherDate) : 다른 날짜 객체와 비교해 음수, 양수, 0의 결과 반환 ● int compareTo..
JAVA - Stack Class/ ArrayList Class/ Vecotr Class/ HashSet Class/ HashMap Class/ Queue Stack Class ● 배열성 클래스 ● LIFO 구조 : 먼저 들어온 값이 마지막에 나간다 Generic(제네릭) ● 잘못된 타입 들어오는 것 방지 ● 변환(cast) 필요없음 Stack변수명 = new Stack(); 타입 선언은 생략가능(색칠한 부분) 타입은 Integer, String, Character 등 여러가지 형태로 선언 가능 Stack class의 주요 메서드 Stack 값 추가하기 ● push() 메서드를 사용해 값을 추가할 수 있음 Stack 값 삭제하기 ● pop() 메서드를 사용해 Stack 값에서 삭제 Stack 크기 구하기 ● size() 메서드를 사용해 Stack안에 있는 값의 개수 출력 Stack 값 출력하기 ● firstElement : Stack 의 맨 처음 Input..
JAVA - Object 클래스 Object 클래스 ● 모든 클래스의 최상위 부모 ● 모든 클래스는 Object를 상속받기 때문에 extends 생략 주요 메소드 equals() : 두 객체가 동일한 객체면 true, 다르면 false hashCode() : 객체의 메모리 번지를 이용, 해시코드를 만들어 리턴 toString() ● 객체의 문자 정보를 리턴, 즉 객체를 문자열 형태로 표현 ● 반환되는 문자열은 클래스 이름과 함께 구분자로 @가 사용되며, 그뒤로 인스턴스의 주소를 가리키는 16진수 해시코드가 추가된다. clone() ● 새로운 객체로 복사(깊은 복사로 객체와 동시에 값까지 새로 복사함) ● Cloneable 인터페이스가 명시되어있는 클래스만 clone()을 통해 객체를 복제할 수 있음(정보은닉 위배성이 있기 때문) ● n..
JAVA - Wrapper Class(래퍼 클래스) 래퍼 클래스(Wrapper Class) ● 8개의 기본타입에 해당하는 데이터를 객체로 표현 ● 기본 타입의 값을 박싱해서 포장 객체로 만드는 것 ● boolean, byte, char, short, int, long, float, double →Boolean, Byte, Character, Short, Integer, Long, Float, Double 사용방법 : Wrapper 클래스 객체 = 일반자료형데이터; 오토박싱과 오토 언박싱 오토박싱 : 기본 자료형 값을 자동으로 Wrapper 클래스의 객체로 변환시켜주는 것 기본 타입 데이터→ 래퍼클래스의 인스턴스로 변환 사용예시 : Integer num = 5; (오토박싱을 통해 new Integer() 생략) ex) int → Integer 오토 언박싱 ..
JAVA - StringTokenizer 클래스 StringToknizer 클래스 ● java.util 패키지에 있는 클래스로, 문자열을 구분문자열을 기준으로 분리할 때 사용 사용방법 1. 문자열 생성 2. 구분할 문자열 생성 3. StringTokenizer 객체 생성 ex) StringTokenizer st = new StringTokenizer(문자열, 구분문자열); 사용할 주요 메서드 nextToken() : 다음 토큰으로 이동 hasMoreTokens() : 다음 토큰이 존재하면 true, 존재하지 않으면 false countTokens() : 남은 토큰의 개수
JAVA - String Buffer/String Builder/String 클래스 String vs String Buffer, String Builder String ● 불변(immutable)의 속성을 가지고 있음 ● 변하지 않는 문자열을 자주 읽어들일 경우 좋음 ● 자주 사용할수록 인스턴스를 만들기 때문에 느려진다는 단점이 있음 StringBuffer, StringBuilder 공통점 ● String을 보완하기 위한 클래스 ● 가변성을 가짐 StringBuffer, StringBuilder 차이점 ● StringBuffer는 동기화 키워드를 지원하여 멀티쓰레드 환경에서 안전함 ● String Builder는 동기화를 지원하지 않아 멀티쓰레드 환경에서 쓸 수 없음. 다만 단일쓰레드에서의 성능은 StringBuffer보다 좋음 환경별 정리 String : 문자열 연산이 적고 멀티쓰레드..
JAVA - Inner 클래스 / 익명클래스/ Thread Inner클래스(내부 클래스) ● 클래스 안에 또 다른 클래스 정의 ● 클래스에 다른 클래스를 선언하는 이유는 두 클래스간 긴밀한 관계때문이다. 내부 클래스 장점 ● 내부 클래스에서 외부 클래스의 멤버의 쉽게 접근할 수 있음 ● 서로 관련 있는 클래스를 논리적으로 묶어 표현했기 때문에 코드의 캡슐화 증가 ● 외부에서 접근이 어렵기 때문에, 코드의 복잡성 ↓ * String name 으로 선언된 MyUtil은 HelloPrinter에서만 사용가능 * String staticName으로 선언된 staticName은 HelloPrinter와 Calculator에서 모두 사용 가능함 * staticName은 static으로 선언되서 모두 사용이 가능 * MyUtil의 경우 static을 쓰지 않아 myutil클..