본문 바로가기

개발자 양성과정 필기노트/JAVA26

컬렉션 프레임워크 / 제네릭 I. 컬렉션 프레임워크 - 자바에서 자료구조를 구현하여 제공하는 클래스들의 모음 1. List 1-1. 특징 배열의 형태이지만, 자동으로 저장공간이 확장된다. 인덱스 O -> 저장순서가 지정됨 데이터 중복 가능함. ArrayList - 배열구조, 멀티쓰레드 X, 데이터탐색 & 순차적인 작업에 빠르다 Vector - 배열구조, 멀티쓰레드 O LinkedList - 체인처럼 인접 참조를 링크한다. 중간 데이터의 추가/삭제는 빠르지만 순차적 작업은 느리다. 1-2. 메서드 add( index , object ) - 해당 인덱스에 object를 삽입함. Object get(int index) - 해당 인덱스의 요소를 리턴해줌 Object remove(int index) - 해당 index의 데이터를 삭제하고 제.. 2021. 11. 19.
자바 I/O - 객체 직렬화, 역직렬화 I. 객체 직렬화 / ObjectOutputStream - 자바에서 사용하는 객체에 영속성을 부여하여 파일,네트워크로 내보내는 것. - 직렬화 대상 클래스 정의시 Serializable 인터페이스 구현이 필수!!! - transient -> 출력 대상에서 제외시킬 변수에 사용한다. => 출력시 null로 뜬다. public class Ex01 { public static void main(String[] args) { Person p = new Person("홍길동",20,"901010-1234567");//3.객체생성하여 데이터 초기화 File f = new File("C:\\temporary\\serial_person.dat");//4. 파일경로&파일명 지정 try (ObjectOutputStream.. 2021. 11. 14.
자바 I/O - 파일 입/출력하기 I. 파일로 출력 & 파일에 데이터 입력하기 1. FileOutputStream객체 생성하고 파일의 경로&파일명을 전달함 2. 생성한 FileOutputStream객체를 DataOutputStream객체에 전달함. 3. DataOutputStream의 writeXXX() 호출하여 파일에 데이터를 입력함. 4. 문자열데이터는 writeUTF(String)임에 주의. try(DataOutputStream dos = new DataOutputStream(new FileOutputStream("C:\\temporary\\data.dat"))) { dos.writeInt(10); dos.writeDouble(3.14); dos.writeChar('A'); dos.writeUTF("Hello World"); } c.. 2021. 11. 14.
자바 I/O - 데이터 입/출력 하는 방법 0. 자원을 사용하는 객체를 사용할 때 유의할 점 : InputStream, Connection 과 같이 자원을 사용하는 (==작업을 불러오는..그런느낌) 객체를 사용할 때에는 사용후에 close() 메서드로 꼭 작업을 끝내줘야 한다. - close()로 작업을 종료하지 않으면 계속 작업요청을 실행하므로 다른 작업에 문제가 발생할 수 있기 때문이다. - try-catch문 사용시, 예외발생유무에 상관없이 동작하는 finally문에 close()를 기재하면 된다 => try-resource문을 사용하면 별도로 close() 처리를 하지않아도 자원반환을 자동으로 수행하므로 try-resource문을 활용할것! I. INPUT - 데이터를 입력받는 5가지 방법 방법1. InputStream 객체를 사용하여 1.. 2021. 11. 14.
멀티쓰레딩 # 멀티쓰레딩 구현방법1 - Thread 클래스 상속 1. Thread클래스를 상속받는 서브클래스를 정의함. 2. run() 메서드 오버라이딩 - 멀티쓰레딩으로 처리할 작업을 정의함. 3. 서브클래스의 인스턴스를 생성 4. start() 호출 -> 멀티쓰레딩 작동함. public class Ex02 { public static void main(String[] args) { MyThread mt1 = new MyThread("★★", 300);//3.서브클래스 인스턴스 생성 MyThread mt2 = new MyThread("&&", 300); MyThread mt3 = new MyThread("--", 300); mt1.start();mt2.start();mt3.start(); //4.start()호출.. 2021. 11. 13.
사용자 정의 예외 1. 사용자정의 예외 메세지 # 기본문법 - 개발자에 의해 논리적 오류로 취급해야하는 코드에서 해당 코드의 호출부로 예외발생사실을 표시하기 위해 활용함. - 예외가 발생해야하는 위치에 throw 키워드를 사용하여 정의한다. throw new 예외클래스명("예외메세지") public class Ex05 { public static void main(String[] args) { System.out.println("프로그램시작"); int score=186; try { grade(score);//주로 메서드 호출부에서 예외처리를 한다. } catch (ArithmeticException e) {//정상범위의 점수가 아닌 경우에 수행할 작업. //System.out.println("점수입력 오류: "+scor.. 2021. 11. 13.
데이터 형식화 클래스 I. 날짜 / 시간 데이터 형식화 연도 - y / yy / yyyy 시 - H (24) / h (12) 월 - M 분 - m 일 - d 초 - s 요일 - E / EEEE 오전/오후 - a 1. SimpleDateFormat 활용하여 Date 객체의 형식을 지정하기 1) 날짜형식을 지정하여 String형으로 저장함. String pattern = "yyyy년 MM월 dd일 EEEE HH:mm:ss"; 2) SimpleDateFormat의 객체 생성시 날짜형식을 매개변수로 전달한다. SimpleDateFormat sdf = new SimpleDateFormat(pattern); 3) SimpleDateFormat의 format()메서드를 호출하고 매개변수에 날짜데이터를 전달한다. Date date = ne.. 2021. 11. 13.
BigInteger / BigDecimal I.BigInteger # 개념 1. Long타입보다 큰 정수를 다룬다 2. 자동변환을 지원하지 않음 -> 생성자로 정수데이터를 문자열형으로 전달해야한다. - Wrapper 클래스 타입은 오토박싱/언박싱을 지원하지만 BigInteger타입은 No # 기본데이터타입으로 변환하기 - ___Value() 메서드를 사용함 - 오버플로우 발생 가능성 있음. # 연산 - 일반산술연산자 사용이 불가능 - 반드시 연산메서드로 연산을 수행해야한다. add() - + subtract() - - multiply() - * divide() - / remainder() - % mod - 주의! 두번째 피연산자가 음수인 경우 예외발생함. II. BigDecimal # 개념 - 실수의 표현방식으로 인하여 정확도가 떨어지는 문제를 .. 2021. 11. 13.
Enum # 개념 - 한정된 상수만을 가지는 enum타입의 클래스를 정의하는 방법. # 사용 이유 1. 데이터를 상수로만 관리하는 경우 - 외부에서 실제 데이터를 정확하게 알지못해도 상수명만으로 데이터를 사용할 수 있음 - 클래스명.상수명 -> 통해서 바로 데이터에 접근할 수 있으므로 외부의 접근이 쉽다. - 상수데이터의 값이 정수인 경우, Setter호출시 상수데이터 범위 외의 값이 들어와도 컴파일 에러가 발생하지 않음 => 저장된 데이터를 꺼내서 사용하는 경우 오류가 발생할 가능성이 있어서 추가적인 검증과정을 필요로하게 된다. # enum 정의하기 - 클래스 정의하는 것과 비슷함. - enum타입 내의 상수는 자동으로 순서번호(ordinal)이 0부터 부여된다. (index같이) enum Season{ SPR.. 2021. 11. 13.