프로그래밍을 하다보면 몇가지의 한정된 데이터들을 가지는 경우가 있습니다. 대표적으로는 "요일"이나 "계절" 같은것이지요 요일은 월,화,수,목,금,토,일 이렇게 7가지밖고 계절도 봄,여름,가을,겨울 4가지 계절로 한정되어 있습니다. 이렇게 이와 같이 한정된 데이터들을 갖는 데이터들은 열거형으로 묶어주면 편합니다. 열거형(Enum) 선언 방법 enum Season { //class 외부에서 선언 봄, 여름, 가을, 겨울 } public class enum_ex { public enum Season { //class 내부에서 선언 봄, 여름, 가을, 겨울 } } enum 키워드는 열거 타입을 선언하기 위한 키워드입니다. 열거 타입(Season)이름을 지정하고 열거 상수(봄,여름,가을,겨울)를 나열하면 됩니다...
비트 연산자는 데이터를 비트 단위로 연산합니다. 그러므로 0과 1로 표현이 가능한 정수 타입이나 정수형으로 캐스팅이 가능한 자료형만 비트 연산이 가능합니다. 비트 연산자는 기능에 따라 비트 이동연산자, 비트 논리연산자로 구분합니다. 비트 이동 연산자(, >>>) 연산식 설명 x > y 정수 x의 각 비트를 y만큼 오른쪽으로 이동시킵니다. (빈자리는 정수 a의 최상위 부호비트와 같은 값으로 채워집니다. x >>> y 정수 x의 각 비트를 y만큼 오른쪽으로 이동시킵니다. (빈자리는 0으로 채워집니다.) 비트 이동 연산자는 정수 데이터의 비트를 왼쪽 또는 오른쪽으로 이동시키는 연산을 합니다. 2 3 -16 >> 3 16 >> 3 은 16을 32비트로 분해한다음 오른쪽으로 3비트를 이동시키는 연산입니다. 비트를..
최근 두가지 글을 포스팅했습니다. [Java] 자바로 폴더(디렉토리),파일 복사하기 [Java] 자바로 폴더(디렉토리) 삭제하기(하위파일, 폴더 포함) 위의 두가지 글이 바로 최근 포스팅했던 글들인데요. 자바로 폴더 및 파일을 이동시키는 방법은 위에 있는 두개의 포스팅을 합치면 구현하실 수 있습니다. 자바로 폴더(디렉토리),파일 이동시키기 1. 폴더 및 파일을 복사한다. 2. 복사했던 폴더 및 파일을 삭제시킨다. import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class Move { public static void main(String[..
자바 File클래스에는 폴더에있는 모든 파일정보를 가지고 오는 메서드인 listFiles()라는 메서드가 존재합니다. 이 listFiles() 메서드와 File클래스의 파일생성 메서드인 mkdir()를 활용하면 쉽게 파일을 복사하실 수 있습니다. 자바로 파일 복사하기 import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class Copy{ public static void main(String[] args) { File folder1 = new File("D:\\Eclipse\\Java\\복사할폴더\\복사될폴더"); File folder2 =..
이번 포스팅에서는 해당 위치에 원하는 폴더가 없을 경우 새로이 폴더를 하나 만들어주는 방법에 대해 알아보겠습니다. File클래스안의 mkdir이라는 메서드를 활용하여 간단히 구현할 수 있습니다. 원하는 위치에 디렉토리가 없을경우 디렉토리 자동생성 import java.io.File; public class MkDir { public static void main(String[] args) { String path = "D:\\Eclipse\\Java\\새폴더"; //폴더 경로 File Folder = new File(path); // 해당 디렉토리가 없을경우 디렉토리를 생성합니다. if (!Folder.exists()) { try{ Folder.mkdir(); //폴더 생성합니다. System.out.p..
File 클래스 Java.io패키지에서 제공하는 File클래스는 파일 크기, 파일 속성, 파일 이름 등의 정보를 얻어내는 기능과 파일 생성 및 삭제 기능을 제공하고 있습니다. 그리고 디렉토리를 생성하고 디렉토리에 존재하는 파일 리스트를 얻어내는 기능도 있습니다. 이번 포스팅에서는 이 File클래스와 출력스트림을 활용하여 텍스트(txt)파일을 생성해보고 이것을 입력스트림을 활용하여 읽어오는 예제를 한번 만들어보도록 하겠습니다. 1. txt 파일로 데이터 저장하기 package InputOutputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; public class OutputST..
데이터 입출력 프로그램에서는 데이터를 외부에서 읽고 다시 외부로 출력하는 작업이 빈번하게 일어납니다. 데이터는 사용자로부터 키보드, 마우스 등을 통해 입력될 수도 있고, 파일 또는 네트워크를 통해 입력될 수도 있습니다. 또 반대로 데이터를 사용자에게 모니터나 파일등으로 출력할수도 있습니다. 자바 입출력과 스트림(Stream) 자바에서 데이터는 스트림(Stream)을 통해 입출력 됩니다. 스트림은 단일 방향으로 연속적으로 흘러가는 것을 말하는데 물이 높은 곳에서 낮은곳으로 흐르듯이 데이터는 출발지에서 나와 도착지로 흘러간다는 개념입니다. 프로그램이 출발지냐 또는 도착지냐에 따라서 스트림의 종류가 결정되는데, 프로그램이 데이터를 입력받을 때에는 입력(InputStream)이라고 부릅니다. 입력스트림의 출발지..
Error(에러)와 Exception(예외의 차이) 에러(Error)란 컴퓨터 하드웨어의 오동작 또는 고장으로 인해 응용프로그램에 이상이 생겼거나 JVM 실행에 문제가 생겼을 경우 발생하는것을 말합니다. 이 경우 개발자는 대처할 방법이 극히 제한적입니다. 하지만 예외(Exception)은 다릅니다. 예외란 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류를 말합니다. 예외가 발생하면 프로그램이 종료가 된다는것은 에러와 동일하지만 예외는 예외처리(Exception Handling)을 통해 프로그램을 종료 되지 않고 정상적으로 작동되게 만들어줄 수 있습니다. 자바에서 예외처리는 Try Catch문을 통해 해줄 수 있습니다. 여러가지 예외들 예외 구문 이유 ArithmeticEx..
Thread란? 하나의 프로세스 내부에서 독립적으로 실행되는 하나의 작업 단위를 말하며, 세부적으로는 운영체제에 의해 관리되는 하나의 작업 혹은 태스크를 의미합니다. 스레드와 태스크(혹은 작업)은 바꾸어 사용해도 무관합니다. 1. JVM에 의해 하나의 프로세스가 발생하고 main( ) 안의 실행문 들이 하나의 스레드입니다. 2. main( ) 이외의 또 다른 스레드를 만들려면 Thread 클래스를 상속하거나 Runnable 인터페이스를 구현합니다. 3. 다중 스레드 작업 시에는 각 스레드 끼리 정보를 주고받을 수 있어 처리 과정의 오류를 줄일 수 있습니다. 4. 프로세스끼리는 정보를 주고받을 수 없습니다. 멀티스레딩이란? 여러 스레드를 동시에 실행시키는 응용프로그램을 작성하는 기법을 말합니다. 장점 1...
UDP(User Datagram Protocol 1. UDP는 비 연결 지향이고, IP 위에 매우 얇은 레이어로 구성되어 있습니다. 2. UDP를 사용하는 애플리케이션은 TCP 프로그램에 비해 제어를 할 수 있는 부분이 적습니다. 3. UDP는 데이터를 전송할 때에 데이터가 잘 도착했는지 알아낼 방법이 없으며, 데이터를 보낸 순서대로 도착한다는 보장도 할 수 없습니다. 4. UDP는 TCP에 비해 훨씬 빠르게 전달된다는 장점이 있습니다. DatagramPacket 클래스 1. UDP 데이터그램은 java.net.DatagramPacket 클래스로 추상화한 것입니다. 2. DatagramPacket 클래스는 애플리케이션에서 주고 받을 데이터와 관련된 클래스이고, DatagramSocket 클래스는 실제 데..
네트워크란? 1. 네트워크란 다른 장치로 데이터를 이동시킬 수 있는 컴퓨터들과 주변 장치들의 집합입니다. 2. 네트워크의 연결된 모든 장치들을 노드라고 합니다. 3. 다른 노드에게 하나 이상의 서비스를 해주는 노드를 호스트라 부릅니다. 4. 하나의 컴퓨터에서 다른 컴퓨터로 데이터를 이동시킬 때 복잡한 계층을 통해 전송되는데, 이런 복잡한 레이어의 대표적인 모델이 OSI 계층 모델입니다. 5. OSI 계층 모델은 모두 7계층으로 이루어져 있습니다. 6. 데이터 통신을 이해하는데 OSI 계층 모델은 상당한 역할을 하지만, 인터넷 기반의 표준 모델로 사용하는 TCP/IP 계층 모델을 주로 사용하고 있습니다. 7. 자바에서 이야기하는 네트워크 프로그래밍은 TCP/IP모델을 사용하고 있습니다. IP주소 1. 모든..
람다식이란? 람다식이란 "식별자없이 실행가능한 함수" 함수인데 함수를 따로 만들지 않고 코드한줄에 함수를 써서 그것을 호출하는 방식이라고 생각하시면 되겠습니다. 함수적 프로그래밍을 위해 자바 8부터 람다식(Lambda Expressions)을 지원하면서 기존의 코드 패턴이 많이 달라졌습니다. 자바스크립트에서 주로 봤었던 문법들을 이제 자바에서도 종종 보이곤 해요. 람다가 처음에는 생소하게 느껴질 수 있지만 문법이 간결한만큼 익숙해지면 가독성 면에서 장점이 큰 듯 합니다. (고급 프로그래머들중에서는 람다를 최대한 쓰지말라고 하는 사람도 있습니다.) 람다식 사용법 (매개변수, ...) -> { 실행문 ... } (매개변수, ...)는 오른쪽 중괄호 { } 블록을 실행하기 위해 필요한 값을 제공하는 역할을 합..
이벤트란? 이벤트(Event)라는 것은 윈도우 프로그래밍에서 어떤 특정한 행동이 발생한 그 자체를 의미합니다. 예를 들어 메뉴를 선택했다는가, 아니면 마우스를 클릭하거나, 윈도우의 크기를 조절하거나 등의 행위를 뜻하는 것입니다. 이런한 방식의 프로그래밍을 이벤트 중심의 프로그래밍이라고 하는데 윈도우 프로그래밍에서 중요한 개념 중에 하나입니다. 이벤트 소스(Event Source)는 이벤트가 발생할 수 있는 대상을 의미하고 그 대상으로부터 이벤트가 발생하면 발생된 이벤트를 처리해서 결과를 낼 수 있도록 해주는 것을 이벤트 핸들러(Event Handler)라고 합니다. 자바에서의 이벤트 처리 1. 프로그램이 실행중에 운영체제(OS)가 해당 프로그램에서 이벤트가 발생이 되는지를 검사한다. 2. 이때 이벤트가 ..