쌍용 강북 교육센터 국비학원 Day 20일차 IO (InputStream, OutputStream) 한 곳에서 다른 곳으로의 데이터 흐름을 Stream (스트림)이라고 한다. 그리고 스트림은 단방향이기 때문에 입력과 출력이 동시에 발생할 수 없다. 그렇기 때문에 용도에 따라 입력스트림, 출력스트림이 나뉜다. (물론 꼭 입력장치나 출력장치가 하드웨어일 필요는 없다. 다만, 이해를 돕기 위해 가장 보편적인 흐름을 보여준 것이다.) 쉽게 접해볼 수 있는 가장 대표적인 System에 대해서 알아보자 System.in : 부모클래스가 추상클래스 InputStream(기본 입력 스트림) 타입인 것으로서 접속점 (Node, 빨대)이 키보드인 1 byte 기반 입력 스트림이다. - System.in 의 주요메소드 (S..
쌍용 강북 교육센터 국비학원 Day 19일차 Properties Properties 는 HashMap의 구버전인 Hashtable을 상속받아 구현한 것으로, Hashtable 은 키와 값(Object, Object)의 형태로 저장하는데 비해서 Properties 는 (String 키, String 밸류값)의 형태로 저장하는 단순화된 컬렉션 클래스이다. 키는 고유해야 한다. 즉, 중복을 허락하지 않는다. 중복된 값을 넣으면 마지막에 넣은 값으로 덮어씌운다. 주로 어플리케이션의 환경설정과 관련된 속성 (property)을 저장하는데 사용되며, 데이터를 파일로 부터 읽고 쓰는 편리한 기능을 제공한다. 와일드카드 제네릭이 등장했지만 오히려 실용성이 떨어지는 상황들이 생기면서, 모든 타입을 대신할 수 있는 와일드..
Scanner 와 BufferedReader / BufferedWriter 의 차이점 그리고 StringBuilder에 대해서 BufferedReader / BufferedWriter BufferedReader와 BufferdWriter는 버퍼를 사용하여 읽기와 쓰기를 하는 함수이다. 버퍼를 사용하지 않는 입력은, 키보드의 입력이 키를 누르는 즉시 바로 프로그램에 전달된다. 반면 버퍼를 사용하는 입력은, 키보드의 입력이 있을 때마다 한 문자씩 버퍼로 전송한다. 버퍼가 가득 차거나 혹은 개행 문자가 나타나면 버퍼의 내용을 한 번에 프로그램에 전달한다. 한번 버퍼를 거쳐 출력되는 것보다, 키보드의 입력을 받는 즉시 출력하는 것이 더 빠른 것이 아닌가 생각할수 있다. 하드디스크는 속도가 느리다. 그리고 외부 ..
쌍용 강북 교육센터 국비학원 Day 18일차 Array(배열) 와 Collection(자료구조) 의 차이점 1. 배열은 크기가 한정 되어져 있지만 Collection(구조체)은 크기가 무한정 이다. 2. 배열은 배열에 선언되어진 동일한 타입의 데이터만 입력 가능하지만 Collection은 입력되어지는 데이터가 객체 (Object)이기만 하면 어떤것이든지 입력가능하다. 3. Collection은 동일한 타입의 객체가 아니더라도 객체타입이기만 하면 모두 들어가는 저장소이다. Collection은 저장되는 크기가 자동적으로 늘어난다. Interface Web에서 주로 사용하는 클래스 (Single Thread 방식 - 가볍다) 게임 프로그래밍에서 주로 사용하는 클래스 (Multi Tread 방식 - 무겁다) ..
쌍용 강북 교육센터 국비학원 Day 17일차 Exception try{ 예외가 발생되는 로직 } catch ( 예외클래스 인스턴스 ) { 예외가 발생됐을때 실행되는 로직 } finally { 예외여부와 관계없이 실행되는 로직 } (예외 이름) Exception e 에서 e 변수다. 이 변수 앞의 Exception은 변수의 데이터 타입이 Exception 이라는 의미다. Exception은 자바에서 기본적으로 제공하는 클래스로 java.lang에 소속되어 있다. 다중 예외처리시에는 부모클래스의 exception 은 맨 아래에 나와야 한다. 예외처리는 순차적으로 처리되면서 exception의 하위에 있는 클래스들이 먼저 처리하기 때문이다. (catch는 else 와 같이 오류별로 중첩이 가능하다 단, 순서에..
쌍용 강북 교육센터 국비학원 Day 16일차 static 블럭 (블럭의 순서) 오라클과 자바를 접목할때 쓰이는 static 블럭이다 (주로 JDBC에 환경설정시 사용된다) Parent 와 Child , 이것을 실행하는 MainBlock 클래스 총 3개가 있다. Child는 Parent를 상속하는 관계이다. 여기에서 객체 생성시 블럭의 순서를 살펴보면 1. 선언하는 필드값 2. static 블럭 3. 상속받는 부모클래스의 기본생성자 4. instance 블럭 5. 자신의 기본생성자 순으로 호출이된다. 여기서 static 블럭은 인스턴스(객체)를 생성하기전에 먼저 호출되어지며 단 한번만 호출이 된다. 주로 환경설정시 사용된다. 블럭안에는 오직 static 변수만 들어올 수 있고, 인스턴스 변수는 들어올 수 ..
쌍용 강북 교육센터 국비학원 Day 15일차 다형성 (Polymorphism) 상속을 이용하여 여러 클래스 타입을 하나의 클래스 타입으로 다루는 기술. 자식클래스로 생성되어진 객체를 부모 클래스 타입으로 받을 수 있다는 것이다. 전에 정리해놓은 것이 있어서 자세한 예제는 이쪽으로 https://sikcoding.tistory.com/16 Java 기초 입문 6일차 (Interface, 다형성, Exception) Interface abstract, final과 함께 대표적인 규제로 어떤 객체가 있고 그 객체가 특정한 인터페이스를 사용한다면 그 객체는 반드시 인터페이스의 메소드들을 구현해야 한다. 만약 인터페이스에서 강 sikcoding.tistory.com abstract (추상화) 전에 정리해놓은 것이..
쌍용 강북 교육센터 국비학원 Day 14일차 애너테이션 (@,annotation) @Override 어노테이션은 부모 클래스로부터 상속받은 메소드의 내용물을 모두 변경할 때 쓰이는 것이다. (범위는 따로 지정하지 않는다) Override 어떤 객체가 있을 때 그 객체의 필드(변수)와 메소드를 다른 객체가 물려 받을 수 있는 기능을 상속이라고 한다. 객체를 자신이 만들지 않았거나, 소스를 변경 할 수 없고, 임의로 추가하면 불필요한 기능이 포함될 수 있으며 이러한 기능으로 인해 상속을 활용한다. 상속은 상위클래스에서 하위클래스에게 물려주는 기능이다. 반대로 주어진 것만 사용하지 않고 이런 제약을 벗어나 동작방법을 변경하여 재정의하는 것을 메소드 오버라이딩(overridng)이라고한다. 예를들어 같은 상속된..
쌍용 강북 교육센터 국비학원 Day 13일차 접근제한자 (캡슐화,은닉화) 캡슐화 (EnCapsulation == 은닉화) : 객체지향의 가장 중요한 데이터 보호 기술 접근제한자 같은클래스 내부 동일패키지 다른클래스 다른패키지 하위(자식)클래스 그 외 영역 public O O O O protected O O O X default O O X X private O X X X public, private, protected, default 등과 같이 클래스 멤버 키워드 앞을 가르키는 문법을 접근제어자(access modifier) 라고 한다. 접근제어자는 클래스의 맴버(변수와 메소드)들의 접근 권한을 지정한다. private은 다른클래스에서 사용할 수 없는데 이렇게 정의하는 이유는 외부적으로가 아닌 내부적으로 ..
쌍용 강북 교육센터 국비학원 Day 12일차 Date 간단한 날짜 표현에는 Date 클래스를 사용하는 것이 더 나을 수 있으나, 두개 날짜 사이의 날짜연산을 할 경우에는 메소드 기능이 더 많이 추가된 Calendar 클래스를 사용하는 것이 나을 수 있다. SimpleDateFormat 은 날짜를 보기 편하게 만들어주는 클래스이다. 날짜 타입 format 설명 %tF 날짜를 yyyy-mm-dd 형식으로 포맷 %tT 날짜의 시각을 HH:MM:SS 형식으로 포맷 %tp 오전, 오후를 출력 %tA 요일명 출력 %tY 4자리 년도만 출력 %tB 월의 이름(January, February ...) 출력 %tm 월의 01,02,03 ~~ 10,11,12 로 출력 %td 일수를 1~31 로 출력 %te %td와 동일함..