Scanner 와 BufferedReader / BufferedWriter 의 차이점 그리고 StringBuilder에 대해서 BufferedReader / BufferedWriter BufferedReader와 BufferdWriter는 버퍼를 사용하여 읽기와 쓰기를 하는 함수이다. 버퍼를 사용하지 않는 입력은, 키보드의 입력이 키를 누르는 즉시 바로 프로그램에 전달된다. 반면 버퍼를 사용하는 입력은, 키보드의 입력이 있을 때마다 한 문자씩 버퍼로 전송한다. 버퍼가 가득 차거나 혹은 개행 문자가 나타나면 버퍼의 내용을 한 번에 프로그램에 전달한다. 한번 버퍼를 거쳐 출력되는 것보다, 키보드의 입력을 받는 즉시 출력하는 것이 더 빠른 것이 아닌가 생각할수 있다. 하드디스크는 속도가 느리다. 그리고 외부 ..
Java
쌍용 강북 교육센터 국비학원 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와 동일함..
쌍용 강북 교육센터 국비학원 Day 11일차 String 클래스 ( 자주사용하는 클래스 ) 1. "문자열".charAt (int index) 문자열중의 해당하는 인덱스 번호의 '문자'를 출력한다. 2. "문자열".toCharArray() 문자열을 char 타입의 배열로 만들어준다. "안녕하세요"라는 문자열을 캐릭터 배열로 변환해 거꾸로 뒤집어 출력하는 예제 3. "문자열".substring (int start index , int end index) 문자열의 start 인덱스부터 end 인덱스의 전까지만 문자열을 가져온다. end index를 지정하지 않을시 끝까지 가져온다. 4. "문자열".indexOf ( "찾을 문자열" ) 문자열에서 최초로 나오는 "찾을 문자열"의 인덱스 (int)값을 반환한다. ..
쌍용 강북 교육센터 국비학원 Day 10일차 회원관리 기능을 하는 프로그램 소스 작성하기 여기까지가 메인 소스 코드(메인 메소드) 이다. 한 300줄 가까이 되는 소스인데 100줄이 넘어가는 소스는 처음 만들어봤다. 강사님과 설명들으면서 같이 작성한 코드이지만 작성할때는 이렇게 길어지는줄 몰랐는데 끝나고 쭉 보니까 조금 당황했다. ㅋㅋㅋㅋ 내가 이걸 작성했다고 ?? 하는 느낌 코드 작성하면서 진짜 경우의수가 많다고 느끼고 조건도 세세하게 할수있는게 신기했다. 막상 저 소스에서 수정하라고 하면 막연한 느낌이 들거같다. 저런 작은 프로그램을 만드는데에도 수백줄을 이해하고 있어야 하니... 그래도 이번에 하면서 실시간으로 실행 가능한 프로그램다운 프로그램을 만들어 본 것같아서 정말 재밌었다 밑에 두장은 다른 ..