웹개발/JAVA

    [JAVA] 파일 입출력, MVC 모델

    1. 파일 입출력 Writer(입력) FileWriter > BufferedWriter > 파일에 입력 FileWriter : 경로에 있는 파일을 준비시키기(쓰기 위해) * 파일이 없는 경우에는 그 이름대로 파일을 생성해준다. * 하지만 경로가 이상한 경우에는 (폴더가 잘못된 폴더인 경우) 폴더를 생성해 주지는 않고, 예외가 발생한다. new FileWriter("파일경로/파일명.확장자") : 덮어쓰기 모드 new FileWriter("파일경로/파일명.확장자",true) : 추가 모드 BufferedWriter : 버퍼를 이용해서 파일 작성 .writer("문자열") : 버퍼에 문자열 쓰기 .close() : 파일에 적용 / 버퍼에 있는 데이터들을 파일에 써주면서 버퍼 닫기 Reader(출력) FileR..

    [JAVA] 쓰레드( Thread )

    1. 프로세스와 쓰레드 프로세스( process )란 간단히 말해서 '실행 중인 프로그램( program )'이다. 프로그램을 실행하면 O/S로부터 실행에 필요한 자원( 메모리 )을 할당받아 프로세스가 된다. 프로세스는 프로그램을 수행하는데 필요한 데이터와 메모리 등의 자원 그리고 쓰레드로 구성되어 있으며 프로세스의 자원을 이용해서 실제로 작업을 수행하는 것이 바로 쓰레드이다. 즉 모든 프로세스에는 최소 하나 이상의 쓰레드가 존재하며, 둘 이상의 쓰레드를 가진 프로세스를 '멀티 쓰레드 프로세스( multi-thread-process )'라고 한다. 하나의 프로세스가 가질 수 있는 쓰레드의 개수가 제한되어 있지 않으나 쓰레드가 작업을 수행하는데 개별적인 메모리 공간( Call Stack )을 필요로 하기 ..

    [JAVA] 제네릭스( generics )

    1. 제네릭스( generics ) 제네릭스는 다양한 타입의 객체들을 다루는 메소드나 컬렉션 클래스에 컴파일 시 타입체크( compile-time type check )를 해주는 기능이다. 객체의 타입은 컴파일 시에 체크하기 때문에 객체의 타입 안정성을 높이고 형변환의 번거로움이 줄어든다. 타입 안정성을 높인다는 것은 의도하지 않는 타입의 객체가 저장되는 것을 막고, 저장된 객체를 꺼내올 때 원래의 타입과 다른 타입으로 잘못 형변환되어 발생할 수 있는 오류를 줄어준다는 것이다. 1 2 ArrayList list = new ArrayList(); ArrayList list2 = new ArrayList(); 제네릭스의 장점 타입 안정성을 제공한다. 타입체크와 형변환을 생략할 수 있으므로 코드가 간결해진다...

    [JAVA] 컬렉션 프레임워크( Collection Framework ) - Arrays, Comparable & Comparator, HashSet, TreeSet, HashMap & HashTable

    1. Arrays Arrays 클래스에는 배열을 다루는데 유용한 클래스가 정의되어 있다. 클래스 내부의 모든 메소드는 static 메소드이다. 배열의 복사 - copyOf(), copyOfRange() copyOf()는 배열 전체를, copyOfRange()는 배열의 일부를 복사해서 배열을 만들어낸다. copyOfRange()에 지정된 범위의 끝은 포함되지 않는다. 문자열의 비교와 출력 - equals(), toString() toString()은 일차원 배열에서만 사용할 수 있으며, 다차원배열에서는 deepToString()을 사용해야 한다. equals()도 마찬가지로 일차원배열에서만 사용 가능하므로, 다차원 배열의 비교에는 deepEquals()를 사용해야 한다. 배열 채우기 - fill(), se..

    [JAVA] 컬렉션 프레임워크( Collection Framework ) - ArrayList, LinkedList, Stack & Queue, Iterator

    1. 컬렉션 프레임워크( Collection Framework ) 컬렉션 프레임워크란 '데이터 군을 저장하는 클래스들을 표준화한 설계'를 뜻한다. 컬렉션은 다수의 데이터, 즉 데이터그룹을 의미하고 프레임워크는 표준화된 프로그래밍 방식을 의미한다. 컬렉션 프레임워크는 컬렉션, 다수의 데이터를 다루는 데에 필요한 다양하고 풍부한 클래스들을 제공하기 때문에 프로그래머의 짐을 상당히 덜어주고 있으며, 또한 인터페이스의 다형성을 이용한 객체지향적 설계를 통해 표준화되어 있기 때문에 사용법을 익히기에도 편리하고 재사용성이 높은 코드를 작성할 수 있다는 장점이 있다. 컬렉션 프레임워크의 핵심 인터페이스 컬렉션 프레임워크는 컬렉션 데이터 그룹을 크게 3가지 타입이 존재한다고 인식하고 각 컬렉션을 다루는 데 필요한 기능..

    [JAVA] Object, String, Math, Wrapper 클래스

    1. Object 클래스 Object 클래스는 모든 클래스의 최고 조상이기 때문에 Object 클래스 멤버들은 모든 클래스에서 바로 사용이 가능하다. Object 클래스는 멤버변수를 가지고 있지 않고, 단 11개의 메소드만 가지고 있다. toString() 객체에 대한 정보를 문자열로 제공할 목적으로 정의된 메소드 객체의 정보를 제공한다는 것은 대부분의 경우 인스턴스 변수에 값들을 문자열로 표현한다는 뜻이다. equals() 매개변수로 객체를 받아서 비교하여 그 결과를 boolean값으로 리턴하는 메소드 Object 클래스의 equals()는 객체가 가지고 있는 주소 값을 비교한다. 그래서 동위 객체는 무조건 false가 나온다.( 다른 주소 이기 때문에 ) * 동위 객체 : 갖고 있는 값만 같은 객체 ..

    [JAVA] 예외처리( exception handing )

    1. 프로그램 오류 프로그램 실행 중 어떤 원인에 의해서 오작동을 하거나 비정상적으로 종료되는 경우가 있다. 이러한 결과를 초래하는 원인을 프로그램 에러 또는 오류라고 한다. 이를 발생 시점에 따라 '컴파일에러( compile error )'와 '런타입에러( runtime error )'로 나눌 수 있는데 컴파일에러는 컴파일할 때 발생하는 에러이고 프로그램 실행 중에 발생하는 에러를 런타임에러라고 한다. 컴파일에러 컴파일 시에 발생하는 에러( 주로 문법 ) 런타입에러 실행 시에 발생하는 에러( 배열 범위 벗어남 ) 논리적에러 실행은 되지만 의도와 다르게 동작하는 것 자바에서는 실행 시( runtime ) 발생할 수 있는 프로그램의 오류를 에러( error )와 예외( exception ) 두 가지로 구분..

    [JAVA] 내부클래스( inner class ), 익명클래스( anonymous class )

    1. 내부클래스 내부클래스는 클래스 내에 클래스가 선언된다는 점을 제외하고는 일반적인 클래스와 다르지 않다. 내부클래스는 사용빈도가 높지 않으므로 내부 클래스의 기본 원리와 특징을 이해하는 정도만 알아보자. 내부클래스는 클래스 내에 선언된 클래스로서 두 클래스가 서로 긴밀한 관계에 있기 때문에 사용한다. 내부 클래스의 장점은 다음과 같다. 내부클래스에서 외부클래스의 멤버들을 쉽게 접근할 수 있다. 코드의 복잡성을 줄일 수 있다. 2. 내부클래스의 종류와 특징 내부클래스의 종류는 변수의 선언 위치에 따른 종류와 같다. 내부클래스는 마치 변수를 선언하는 것과 같은 위치에 선언할 수 있으며, 변수의 선언 위치에 따라 인스턴스 변수, 클래스변수, 지역변수로 구분되는 것과 같이 내부클래스도 다음과 같이 구분되어진..

    [JAVA] 인터페이스( interface )

    1. 인터페이스( interface ) 인터페이스는 일종의 추상클래스이다. 인터페이스는 추상클래스처럼 추상메소드를 가지지만 추상클래스보다 추상화 정도가 높아서 추상클래스와 달리 몸통을 갖춘 일반메소드 또는 멤버변수를 구성원으로 가질 수 없다. 오직 추상메소드와 상수만을 멤버로 가질 수 있으며 그 외의 다른 어떠한 요소도 허용되지 않는다. 추상클래스를 미완성설계도라고 한다면 인터페이스는 구현된 것이 아무것도 없고 밑그림만 그려져 있는 기본 설계도라고 할 수 있다. 인터페이스도 추상클래스처럼 불완전한 것이기 때문에 그 자체만으로 사용되기 보다는 다른 클래스를 작성하는데 도움을 줄 목적으로 작성된다. 2. 인터페이스 작성 및 상속 인터페이스를 작성하는 것은 클래스를 작성하는 것과 같다. 다만 키워드로 clas..

    [JAVA] 추상클래스( abstract class )

    1. 추상클래스( abstract class ) 클래스를 설계도에 비유한다면, 추상클래스는 미완성 설계도에 비유할 수 있다. 즉, 완성되지 못한 채로 남겨진 설계도를 말한다. 미완성 설계도로는 완성된 작품을 만들 수 없듯이 추상클래스로 인스턴스를 생성할 수 없다. 추상클래스는 상속을 통해서 자손클래스에 의해서만 완성될 수 있다.( 확장 ) 추상클래스는 새로운 클래스를 작성하는 데 있어서 바탕이 되는 클래스로서 중요한 의미를 가진다. 만약, 같은 크기의 Tv라도 기능의 차이에 따라 여러 종류의 모델이 있지만 사실 이들의 설계도는 아마 90% 정도 동일할 것이다. 서로 다른 여러 개의 설계도를 따로 그리는 것보다 이들의 공통부분만을 그린 미완성 설계도를 만들어 놓고 이 미완성 설계도를 이용해서 각각의 설계도..