자바(Java)에서 제네릭(Generic)은 클래스 내부에서 사용하는 데이터의 타입(Type)을 클래스의 인스턴스를 생성할 때 결정하는 것을 의미합니다. 객체의 타입을 컴파일 시점에 체크하기 때문에 타입 안정성을 높이고 형 변환의 번거로움을 줄일 수 있습니다. 아래 간략하게 제네릭(Generic)을 사용하여 선언된 클래스와 객체를 선언한 부분을 살펴보겠습니다. public class TestGeneric { public T sample; public void showYourType() { if(sample instanceof Integer) System.out.println("Integer 타입이군요!!"); else if(sample instanceof String) System.out.println(..
ArrayList를 정렬하는 방법은 Collections.sort() 함수를 통해 가능합니다. Collections.sort() 함수는 두 가지 형태에 대해서 오버라이딩이 되어 있습니다. 첫 번째 함수 형태는 하나의 인자 정보를 넘겨주는 형태로 ArrayList 객체를 넘겨줍니다. 이때 ArrayList에 담기는 요소의 Type 클래스에서 Comparable 인터페이스를 구현하여 compareTo() 함수를 오버라이딩 해줘야합니다. 두 번째 함수 형태는 첫 번째 인자를 ArrayList 객체를 넘겨주게 되고 두 번째 인자는 Comparator 인터페이스를 상속받아 compare() 함수를 오버라이딩한 구현체를 넘겨주게 됩니다. 1. Integer Type Data를 요소로 가지는 ArrayList imp..
StringTokenizer 클래스는 특정 문자열을 구분자를 통해 잘라서 관리할 수 있는 클래스입니다. 구분자를 통해 잘려진 문자를 토큰(Token)이라 부르며 이를 통해 다양한 작업을 처리할 수 있습니다. 1. 생성자 (Constructor) StringTokenizer(String str) 나누고자 하는 문자열을 인자로 가지는 생성자 StringTokenizer(String str, String delimeter) 나누고자하는 문자열과 문자열을 나눌 때 사용 할 구분자(Delimeter)를 인자로 가지는 생성자 StringTokenizer(String str, String delimeter, boolean return delime 나누고자하는 문자열과 문자열을 나눌 때 사용 할 구분자(Delimete..
안녕하세요. 이번 포스팅에서는 수학과 관련된 작업을 처리할 수 있는 Math 클래스에 대해서 알아보겠습니다. Math 클래스는 java.Lang 패키지에 포함된 클래스로 수학과 관련된 일련의 작업들을 처리할 수 있는 클래스입니다. Math 클래스의 다양한 메소드들은 전부 static으로 구현되어 있으므로 따로 객체를 생성하지 않고 사용할 수 있습니다. 1. abs() 메소드 Math 클래스의 abs() 메소드는 인자로 넘긴 데이터의 절댓값을 반환해줍니다. 전달된 값이 양수이면 전달된 값 그대로 반환합니다. 1 2 3 4 5 6 7 8 9 10 11 import java.lang.Math; public class Sample { public static void main(String[] args) { Sy..
안녕하세요. 이번 포스팅에서는 자바 자료구조 중 하나인 ArrayList의 사용법에 대해서 알아보겠습니다. 1. ArrayList 생성 ArrayList는 java.util.ArrayList에 포함되어 있으므로 아래와 같이 import 시켜줍니다. import java.util.* import java.util.ArrayList import 하였다면 아래와 같이 ArrayList 객체를 생성해줍니다. ArrayList arrayList = new ArrayList(); 자바에서 배열을 선언하는 것처럼 List의 Size를 초기화해줄 필요가 없습니다. 배열처럼 고정된 크기를 가지는 것이 아니라 메모리가 허용하는 한 자동으로 ArrayList 크기는 동적으로 변경됩니다. 그럼 이제부터 ArrayList에서 ..
안녕하세요. 이번 포스팅에서는 자바에서 특정 문자열의 공백 문자를 제거하는 방식에 대해서 알아보겠습니다. 1. public String trim() 첫 번째는 trim 메소드입니다. trim 메소드는 String 클래스에서 제공하는 메소드로 문자열의 앞뒤 공백을 제거해주는 메소드입니다. 사용방식은 아래와 같습니다. String s1 = " Hello World "; String s2 = s1.trim(); 인자 정보는 없고 공백을 제거한 문자열을 반환해줍니다. 아래 샘플 예제를 보죠. 1 2 3 4 5 6 7 8 9 10 public class Sample { public static void main(String[] args) { String s1 = " Hello World "; //공백 문자열을 제..
이번 포스팅에서는 substring 메소드를 활용한 문자열 자르기에 이어서 split 메소드 활용에 대해서 알아보겠습니다. 자바에서 특정 문자열을 구분자(delimeter)를 기준으로 잘라 배열에 담아두는 것이 가능합니다. 바로 split() 메소드입니다. split 메소드를 사용하는 방식에는 두 가지가 있습니다. 하나는 인자 정보 하나를 넘기는 것과 두 개를 넘기는 것이 있습니다. 먼저 split 메소드가 동작하는 방식은 아래 그림을 참조 바랍니다. s1 배열에는 "Hello/World/LKT" 문자열이 들어가 있고 split 메소드를 통해 문자열을 잘라 s2 문자열 배열에 들어가는 모습을 표현한 그림입니다. 1. public string[] split(String regax) 먼저 첫 번째 방식은 인..
안녕하세요. 이번 포스팅에서는 Java String 클래스에서 특정 문자열을 잘라 낼 수 있는 sbustring Method에 대해서 알아보도록 하겠습니다. 1. substring Method 먼저 사용방법에 대해서 알아보도록 하겠습니다. 첫 번째는 Start Index만 매개변수로 넘기는 방식입니다. s1 문자열에서 Start Index부터 시작하여 문자열 끝까지 자른 새로운 문자열을 반환해줍니다. 두 번째 방식은 Start Index와 End Index를 지정하는 방식입니다. s1 문자열에서 Start Index부터 시작하여 End Index에 해당하는 문자 앞까지 자른 문자열을 반환해줍니다. 주의할 점은 End Index로 지정한 위치를 포함한 문자열을 자르는 것이 아니라 End Index로 지정한..
이번 포스팅에서는 String Class의 문자열 처리와 관련된 함수에 대해 정리를 해보겠습니다. 1. char charAt(int index) s1.charAt(index)는 s1 문자열에서 index 번째에 해당하는 문자를 반환하는 함수입니다. 문자열에서 index는 0에서부터 시작합니다. 123456789101112public class Sample{ public static void main(String[] args) { String s = "Hello"; System.out.println("0번째 index에 해당하는 char : " + s.charAt(0)); System.out.println("1번째 index에 해당하는 char : " + s.charAt(1)); System.out.pri..
TCP 소켓 프로그래밍 02 - 채팅 앞선 소켓 프로그래밍 포스팅에서는 Server와 Client 사이에 1:1 통신 구현에 대해서 공부 하였습니다. 하지만 이번 포스팅에서 다룰 내용은 서버가 여러명의 Client의 접속을 받고, 접속한 Client끼리 메세지를 주고 받을 수 있는 1간단한 채팅 프로그램에 대해 구현을 해볼 생각입니다. 간단한 TCP 소켓 프로그래밍에 대한 공부는 아래 포스팅을 참조해주세요. http://lktprogrammer.tistory.com/62 ■ 서버 구현 방식 ▶기본적으로 앞에서 1:1 통신 방식에서는 메인 쓰레드 영역에서 Client의 접속을 받고 동시에 데이터를 주고 받았습니다. 일 대 다 통신으로 구현되어야 하는 채팅 프로그램에서 마찬가지 방식으로 구현 될 경우 문제점..
[JAVA] 예외처리하기 예외란 프로그램 실행 시에 예쌍치 못한 일로 에러를 말합니다. 예외처리는 이러한 예외를 프로그래머가 원하는 방향으로 움직이도록 만드는 일을 말합니다. 1. try~catch~finally Colored By Color Scripter™ 1 2 3 4 5 6 7 8 try { //예외 발생 예상 지역 }catch(예외_발생_예상_클래스 객체) { //예외 발생시 처리할 내용 }finally { //예외 발생 여부와 상관없이 무조건 처리해야 할 내용 } 예외처리 구문은 총 3개의 구문으로 나누어집니다. 첫 번째 try{} 구문안에는 예외가 발생 될 것으로 예상되는 코드가 들어갑니다. 예를 들어 배열을 사용하는 경우 범위를 벗어나는 인덱스를 사용하는 경우, 정수를 0으로 나눌려는 경우..
TCP 소켓 프로그래밍 01 - 일대일 연결 이번 포스팅에서는 Socket을 활용하여 Clinet측에서 Server로 일대일 연결을 유지하면서 Client측에서 보낸 메세지를 Server측에서 수신하여 수신 받은 메세지를 다시 Client측으로 송신하는 프로그램 구현에 대해 알아보겠습니다. ■ TCP 소켓 프로그래밍 구현 과정 1. Server측에서는 ServerSocket을 생성하고 accept() 메서드를 호출함으로써 Client의 접속을 대기합니다. 2. Client측에서는 Server에 접속을 함으로써 Server와의 통신을 위한 Socket을 생성합니다. 3. 마찬가지로 Server측에서 Client 접속이 이루어지면 해당 Client와 통신 할 수 있는 Socket을 반환받습니다. 4. Cli..
쓰레드 (Thread) 실행 중인 프로그램을 프로세스(Process)라고 부릅니다. 한 개의 프로세스는 한가지 일을 수행하지만 Thread를 사용하게 되면 한 프로세스 내에서 여러가지 작업을 동시에 수행 할 수 있게 됩니다. ■ 기본적인 쓰레드 사용 Thread를 상속받아 run() 메소드를 오버라이딩을 함으로써 간단한 Thread을 구현 해보겠습니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 public class Thread1 extends Thread{ int index ; public Thread1(int index) { this.index = index; } public void run() /..
업캐스팅 (UPCASTING) 상위 클래스의 객체 참조 변수에 하위 클래스의 인스턴스를 대입하는 것을 의미합니다. 모든 객체 내의 모든 멤버에 접근 할 수 없고, 상위 클래스의 멤버에만 접근이 가능합니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 public class Main { public static void main(String argsp[]) { Top top = new Top(); //상위 클래스 타입에 상위 클래스 인스턴스 대입 top.show(); top = new Bottom(); //상위 클래스 타입에 하위 클래스 인스턴스 대입 top.show(); } } public cl..
SRP - 단일 책임 원칙 모든 객체는 하나의 책임만을 가지면 객체가 제공하는 서비스는 하나의 책임을 수행하는데 집중 되어야 한다. 즉 어떤 클래스를 변경해야 하는 이유는 오직 하나뿐이어야 한다. 단일 책임 원칙이 잘 자켜지지 않은 경우는 분기 처리를 위한 if문으로 코드를 보도록 하겠습니다. Colored By Color Scripter™ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 public class Person { public String job; public Person(String job) { this.job = job; } public void Work() { if(job.equals("Programmer")) System.out.println("코딩하다");..