21. JAVA IO (Input / Output) / 파일 입출력 스트림 / 파일 (File) 클래스
·
개발/JAVA
1. 스트림(Stream) 이란? - 데이터의 '흐름' 또는 '연결 통로' 2. 흐름이란 - Source -> 데이터의 흐름 -> Destination(키보드, 파일, 브라우저 / 모니터, 프린터, 파일, 브라우저) 3. 표준 입출력 스트림 - 키보드(System.in) -> 모니터(System.out) 4. 특징 - FIFO (First In First Out) - 단방향성 - 지연성 - 유연성 : 노드(근원) 스트림을 목적에 맞게 필터링 하는것 ex) BufferedReader br = new BufferedReder(new InputStreamReader(System.in)); 5. 구분 - 읽고 쓰는 단위 ㄴ 1byte 스트림 (바이트 스트림 : 문자를 제외한 나머지) : XXXInputStrea..
20. JAVA 쓰레드 (Thread)
·
개발/JAVA
* 쓰레드 & 프로세스 - 프로세스란 '실행중인 프로그램'이며 쓰레드는 프로세스를 구성하는 '제어의 흐름'이다 - 모든 프로세스에는 최소한 하나 이상의 쓰레드가 존재한다 * 쓰레드 (Thread) 의 장점 - 프로세스의 공통 Resource를 공유하므로 '경량 프로세스'로 불린다 * 쓰레드 (Thread) 와 프로세스 (Process) 의 차이 - Process : 프로그램의 '실행단위' - Thread : Process를 구성하는 '작업단위' * 자바는 멀티쓰레드가 가능하다 - 하나의 프로세스 안에서 여러개의 쓰레드가 동시 작업하는 멀티 쓰레드 - main메소드(프로그램 진입점)을 가진 자바 프로그램은 하나의 스레드를 가진(main쓰레드) 단일 쓰레드이고 - Thread 클래스나 runnable 인터페..
19. JAVA 예외(Exception) / try~catch~finally
·
개발/JAVA
- 예외 (Exception) : 프로그램이 실행되는 과정에서 만나게 되는 오류 * 예외의 종류 - Checked Exception (컴파일 에러) ㄴ 컴파일러가 판단 할 수 있는 예외. 즉, 실행되기전에 체크 할 수 있는 예외 ㄴ 컴파일 하기 위해서는 반드시 예외 처리 해야한다 (Syntax오류, IOException 등) ㄴ main에서 던져도 됨. 직접 try~catch로 처리 안해도 된다 ㄴ 외부자원을 쓰려면 빨간줄이 간다 - Unchecked Exception(런타임 에러) - 예외처리한다 ㄴ 컴파일러가 판단 할 수 없는 예외.즉 실행시에만 발견되는 에러 ㄴ JVM이 자동으로 예외를 throws 해 줌으로 예외처리를 하지 않도 된다 ㄴ RuntimeException게열 (NullPointerEx..
18. JAVA 클래스간 형변환 / 업캐스팅 / 다운캐스팅 / 내부클래스 (InnerClass)
·
개발/JAVA
1. 형변환(Type Casting) * 묵시적 형변환 (업캐스팅) - 작은 범위의 데이터를 큰 범위의 할당하는 경우와 같이 값의 변화가 발생하지 않는 변환 double d = 12.34; int i = 1234; // double > int : 묵시적 형변환 d = i; d = 1234.0 * 강제적 형변환 (다운캐스팅) - 큰 범위의 데이터를 작은 범위에 할당하는 경우는 값의 변화가 일어날 수 있기 때문에 변환하고자 하는 변수명 앞에 (데이터형)을 지정한다 double d = 12.34; int i = 1234; // double > int : 묵시적 형변환 i = d; // [x] i = (int)d; i = 12 * 다운캐스팅의 경우 타입을 지정해 주지 않으면 에러가 난다. 2. 내부클래스(Inn..
17. JAVA 인터페이스 (Interface) / 컬렉션 (Collection)
·
개발/JAVA
1. 인터페이스 (Interface) - 클래스가 객체의 설계도라면 인터페이스는 클래스의 설계도라 할 수 있다 - 멤버로는 추상메소드와 상수(final)만 구성된다 - 접근지정자는 public과 default만 가질 수 있다 (modifier(static, final)는 가질 수 없다) - 인터페이스에 있는 추상 메소드는 public과 abstract란 키워드를 생략한다 ㄴ 자식의 오버라이딩 메소드에서는 반드시 public을 붙여야 한다 - 인터페이스의 변수 또한 public static final을 생략해도 컴파일러가 자동으로 붙여준다 public interface MyInterface{ int MONEY=100; // public static final이 생략됨, 자동으로 컴파일러가 붙여줌 void ..
16. JAVA 배열 (Array) / 헤테로지니어스 (Heterogeneous, 이질화)
·
개발/JAVA
1. 배열 - 같은 타입의 여러 변수를 하나의 묶음으로 저장하는 '저장소 객체' * 선언방법 - 타입 [] 변수이름 - 타입 변수이름 [] int [] array; String str []; * 생성 - new 타입[크기] new int[3]; new String[5]; * 초기화 array[0] = 10; str[3] = "문자열"; * 선언 + 생성 int [] array = new int[3]; String str [] = new String[5]; * 선언 + 생성 + 초기화 ( { } 사용) int [] array = new int[] {100, 200, 300}; String str [] = {"문자열", "문자열1", "문자열2"}; * 다차원 배열 class D { int is[] = {1..
15. JAVA 패키지 / 패키지 배포
·
개발/JAVA
1. 패키지 (Package) - 유사한 기능을 가진 클래스와 인터페이스를 묶어 관리하도록 하며 개발이 끝난 후 jar 파일로 묶어 배포한다 - 패키지 선언은 최상단에 위치하며 import문 보다도 위에 있어야 한다 - 패키지명은 소문자로 주로 한다 - 패키지선언에서 패키지 안에 있는 클래스에 접근시 . 으로 접근한다 (즉, 패키지명.클래스 (java.lang.System)) - 파일 관리시 디렉토리 개념과 같다. 같은 종류끼리 묶어서 관리하는것 처럼 말이다 - JAVA에서 패키지를 선언했다는 것은 class 파일이 그 패키지 안에 있어야 한다는 의미다 2. 패키지 배포 - 패키지를 jar로 압축하여 배포한다. 압축시 패키지의 루트 패키지를 압축한다 - jar 사용법: jar cvf jar파일명(xxx...
14. JAVA 추상화 / 캡슐화 / 은닉화 / 생성자 / 싱글톤
·
개발/JAVA
1. 추상화 (Abstraction) - 어떤 물체(Object)에서 주된 특징을 부각시켜 표현하고, 나머지 부분은 과감하게 생략하는것 - OOP에서 사용되는 추상화도 이와 비슷하다 - 한 물체를 대표하는 속성(명사)과 행위(동사)를 추출해내는 것을 프로그래밍에서는 추상화라고 한다 - 상속이 목적 abstract class A { } ; // class 앞에 abstract를 붙이면 추상클래스가 된다 2. 캡슐화 (Encapsulation) = 은닉화 - 캡슐화는 중요한 것들은 외부에 보이지 않게 숨기거나 같은것끼리 묶는 특징 - 특징 중 하나인 은닉화는 외부에서 접근을 할 수 없도록 막는 것을 말하며 간접적으로 접근이 가능하다 - 멤버변수의 값을 세팅하거나 가져올때 getter / setter 메소드를..