본문 바로가기

CS/JAVA11

[JAVA] JAVA I/O, 객체의 직렬화 1. JAVA I/O 1) 개요 - JAVA는 byte와 char 그리고 추가적으로 String 단위로 입력과 출력이 이루어진다. 단위 abstract class(최상위 클래스) 하위 클래스 byte InputStream, OutputStream FileInputStream, ObjectInputStream, FileOutputStream, ObjectOutputStream... char, String Reader, Writer FileReader, BufferedReader, FileWriter, PrintWriter... - 표준입/출력은 각각 키보드와 모니터로 대응되는 Method는 System.in과 System.out이다. 즉, 표준입력 : 표준출력 = 키보드 : 모니터 = System.in :.. 2021. 1. 18.
[JAVA] Exception 1. Exception(예외) 비정상종료를 야기하는 의도치 않은 문제 따라서 예외 처리로 실행문이 계속 실행되도록 처리해야한다. 1) Exception class 자바에서는 실행(Run Time)시 발생할 수 있는 오류를 에러(Error)와 예외(Exception) 두가지로 구분한다. Error 프로그램 코드에 의해서 수습될 수 없는 심각한 오류(해결불가) Error, RunTimeException class를 포함한 자손 클래스들이 이에 해당한다 예외가 발생하면 안되는 코드이기 때문에 개발자가 반드시 if문으로 체크했어야 하는 코드이다. 따라서 try-catch문을 이용하지 않는다. Exception 프로그램 코드에 의해서 수습될 수 있는 다소 약한 오류(해결가능) RunTimeException을 제외.. 2021. 1. 18.
[JAVA] Functional Interface, Stream, String, StringBuffer 1. Functional Interface(함수적 인터페이스) 1) 개요 - java.util.function - JDK 1.8부터 지원 - 모두 인터페이스이므로 람다식 이용 2) 종류 종류 params / return 비고 consumer O / X supplier X / O function O / O data type을 바꾸어 return하는데 사용 operator 연산해서 값을 return하는데 사용 predicate boolean return value // Function // T : param type, R : return type Function f = t->t.length(); // Operator // T : params & return type Operator o = (t,u) -> t.. 2021. 1. 14.
[JAVA] Collection API 0. API란 다양한 정의가 있겠지만 "프로그램이 제공하는 함수"정도로 넓게 생각하자 1. JAVA의 data 저장 방법 3가지 변수 배열 Collection API - 하나의 data - 기본형&참조형 - 여러 개의 data - 참조형 - 동일한 type만 저장가능(다형성 고려X) - 크기변경 불가 - Index를 통한 element 접근 - 배열과 관련된 method 없음(Arrays 제외) - 여러 개의 data - 참조형 변수 - 여러 type data 저장가능(generics) - 크기변경 가능 - method를 통한 element 접근 - 다양한 method 2. Collection API 계층구조 Set 계열 List 계열 Map 계열 - 순서 X - 중복저장 X - value만 저장 - 순.. 2021. 1. 14.
[JAVA] Anonymous class, Lambda Expression, Generics 1. Anonymous class(익명 클래스) - 말 그대로 이름 없는 class - Interface 사용 시 주로 익명 클래스가 사용됨 : 가독성 증가 Interface_name variable_name = new Interface_name(params...) { @Override // abstract method } 2. Lambda Expression(람다식) 1) 목적 - Method는 Class 안에 존재할 수 있고 JAVA의 최소 단위는 Class이다. - 따라서 Method를 만들기 위해 불필요한 Class 생성이 유발될 수 있다. - 하지만 람다식을 이용하면 Class를 표현하지 않고 Method만 만들 수 있다.(Method 즉, 기능에 더 집중할 수 있다.) - 이러한 형태의 프로그.. 2021. 1. 14.
[JAVA] Abstract, Interface 1. Abstract 1) 목적 : 다른 class간에 공통적으로 사용하는 기능 효율적으로 재사용하기 위해 2) 형태 : public abstract return_type method_name(); 3) abstract class 구성요소 - 일반 variable(instance varible) - 일반 method(instance method) - 생성자 - abstract method * 4가지 다 있어도 되고 없어도 된다. cf) abstract method를 포함하는 class는 abstract 선언을 해주어야 한다. 4) 특징 - 자식 class에서 반드시 abstract method를 override 해야한다. 이를 통해 자식 class에서 특정 method를 강제하면서 통일성과 일관성을 갖는.. 2021. 1. 12.
[JAVA] 상속, 다형성, 캡슐화 1. 상속 1) 특징 - 부모의 private변수, 생성자는 상속이 안됨 - 모든 class의 최상위 부모는 Object // extends Object는 생략되어 있음 - class가 생성될 때 상속이 있다면 최상위 부모부터 생성됨 // 부모의 변수를 자식이 상속받아 사용해야하기 때문 2) 생성자 호출 형태 // 다른 class에서 객체 생성 시 new class(); // 자식 class에서 부모생성자 호출 시 // 반드시 자식 생성자 첫 줄에 쓴다 super(); // 같은 class의 특정 생성자에서 다른 생성자 호출 this(); * overloading된 생성자들은 params로 구분되어 호출된다. 3) 활용 형태 - Object의 toString() 참조변수를 print할 때 자동으로 toS.. 2021. 1. 12.
[JAVA] 데이터의 메모리 할당 순서 1. 일반변수 2. 배열 3. 클래스 * main 함수는 프로그램 실행 시 JVM이 자동으로 첫번째 함수로 호출 * 순서정리 method area static 영역 load : main > method area class 정보 load : student.java, testStudent.java (class) > stack 영역 load : 변수 s > heap 영역 load : Student instance (new Student()) 2021. 1. 12.
[JAVA] 변수와 메서드 1. 선언 위치에 따른 변수의 종류 종류 선언위치 생성시기 비고 저장위치 멤버변수 클래스변수 클래스영역 클래스가 메모리에 올라갈 때 - 키워드 static를 붙여 표시 - 모든 인스턴스가 하나의 클래스 변수 저장공간을 공유 Method area 인스턴스변수 인스턴스가 생성되었을 때 - 독립적인 저장공간을 가짐 Heap 지역변수(로컬변수) Method 영역 변수 선언문이 수행되었을 때 (메서드 종료 시 소멸) Stack 2. 메서드 - 클래스 메서드는 같은 클래스 내의 인스턴스 메서드, 변수를 호출할 수 없다. : 클래스 메서드가 실행될 때 인스턴스 메서드, 변수가 아직 생성되지 않았을 수도 있기 때문이다. 즉, 클래스 메서드는 인스턴스 메서드, 변수를 쓰는 메서드가 아니다. 따라서 인스턴스를 사용하는 클.. 2020. 10. 30.