쓰레드 클래스의 정의를 위해서는 Thread 클래스를 상속해야만 한다. 때문에 쓰레드 클래스가 상속해야 할 또 다른 클래스가 존재한다면,이는 문제가 아닐 수 없다. 따라서 자바는 쓰레드를 생성하는 방법으로인터페이스의 구현을 통한 방법을 제시한다.인터페이스를 통한 다중상속의 효과에 해당하는 예로도 볼수 있다.복잡한 방법은 아니니 아래의 소스를 통해 보자. 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748class Sum{ int num; public Sum() { num = 0; } public void addNum(int n) { num+=n; } public int getNum() { return..
쓰레드 관련 프로그래밍 자체는 그리 어렵지 않다.하지만 쓰레드에 대한 이해 없이는 프로그래밍이 불가능 하다.따라서 쓰레드에 대해 먼저 알아보자 프로그램의 실행 주체는 운영체제이다.프로그램의 실행이 요청되어지면아래와 같은 형태로 메모리 공간이 할당된다. 이 메모리를 기반으로 프로그램이 실행된다. 이렇듯 할당된 메모리 공간을 기반으로실행 중에 있는 프로그램을 가리켜 '프로세스' 라 한다.따라서 프로세스를 간단히 실행중인 프로그램 으로설명하기도 한다. 하지만 지금까지 우리가 보아왔던프로세스들은 프로그램의 흐름을 하나만 형성하고 있다.main 메소드의 호출을 통해서 하나의 흐름이 형성되며main메소드의 실행이 완료되면 흐름도 종료가 됬다. 그러나 하나의 프로세스 내에서 둘 이상의 프로그램 흐름을형성할 수도 있다..
Collection 인터페이스를 구현하는제네릭 클래스들은 모두 인스턴스를 저장의대상으로 삼는다(정확히는 인스턴스의 참조 값)다만 저장하는 방식에 있어서 중복 저장을 허용하느냐 마느냐또는 저장 시 정렬을 하느냐 마느냐 등의 차이가 있을 뿐이다. List인터페이스를 구현하는 제네릭 클래스들은 다음 두 가지특성을 공통으로 지닌다.-동일한 인스턴스의 중복 저장을 허용-인스턴스의 저장 순서가 유지 List 인터페이스를 구현하는 대표적인 제네릭클래스는 ArrayList와 LinkedList이다이 둘의 사용방법은 거의 동일하다.다만 데이터를 저장하는 방식에서큰 차이를 보이는데 먼저 ArrayList의 사용법을 보자 123456789101112131415161718192021222324252627282930packag..
String 은 변경이 불가능한 문자열의 표현을 위한Class 이지만, StringBuilder와 String Buffer는 변경이가능한 문자열의 표현을 위한 Class 들이다.단 String 인스턴스와 달리 StringBuilder 와 StringBuffer의인트턴스를 가리켜 문자열이라 하지는 않는다 -StringBuilderStringBuilder는 문자열의 저장 및 변경을 위한메모리 공간(버퍼)을 내부에 지니는데,이 메모리 공간은 크기가 자동으로조절 된다는 특징이 있다. 그리고 이 클래스에서가장 중요하게 여겨지는 메소드는 append와 insert인데아래의 소스로 기능을 소개하겠다. 1234567891011121314class test{ public static void main(String[] a..
문자열 토큰의 구분 컴퓨터 프로그램상에서는 문자열 데이터의분석이 필요한 상황이 흔히 등장한다.따라서 이러한 경우에 유용하게 사용할 수있는 StringTokenizer 클래스를 알아보자 예를 들어 아래와같은 문자열이존재한다고 생각해보자"08 : 45""11 : 24"이 둘은 시간정보이다. 시 정보와 분 정보는 콜론을 기준으로 나눠져 있다.즉 위의 문자열에서는 콜론이 구분자 이다그리고 구분자를 기준으로 나뉘어 있는문자열 정보를 가리켜 "토큰" 이라 한다 콜론을 기준으로 토큰을 추출하는 프로그램을작성하는 일이 생기면 굉장히 어렵다.하지만 StringTokenizer 클래스를이용한다면 간단한 일이 되버린다.이 클래스의 중심이 되는생성자는 아래와 같다public StringTokenizer(String str, ..
static변수 인스턴스 변수의 선언 앞에 static 선언이 오면 한클래스의 모든인스턴스가 static 변수를 공유한다. 빠른 이해를 위해 소스로 확인해보자 12345678910111213141516171819class Inst{ static int instNum = 0; public Inst() { instNum++; System.out.println("인스턴스 생성 : " + instNum); }} class ClassVar{ public static void main(String[] args) { Inst inst1 = new Inst(); Inst inst2 = new Inst(); Inst inst3 = new Inst(); }}Colored by Color Scriptercs 위 프로그램을 ..
이번엔 (13)포스팅에서 알아본DAO, DTO를 사용해회원인증 프로그램을 만들어보겠습니다. 먼저 파일들을 생성해 보겠습니다.패키지안에 MemberDAO.java, MemberDTO.java클래스 생성해 주도록 하겠습니다 다음 WebContent에 아래와같은파일들 생성하겠습니다js 파일은 file 생성후.js 붙여 주시면됩니다 다음 디벨로퍼에서 테이블 생성해주도록하겠습니다 이제 join 화면 먼저 보겠습니다 12345678910111213141516171819202122Insert title here 아이디 : 비밀번호 : 비밀번호 확인 : 이름 : 메일 : 주소 : Colored by Color Scriptercs join화면에서는 아이디, 비밀번호, 비밀번호확인,이름, 메일, 주소 form 태그만들어줬..
이번 글은 오버라이딩 에대해 알아 보겠습니다 먼저 이전글에서 알아본 오버로딩 과의 차이점을간단하게 알아 보겠습니다 오버로딩은 같은이름으로 함수를재정의 하고오버라이딩은 자식클래스에서부모 클래스의 함수를 재정의 합니다 즉 오버라이딩은 상속받은 메소드를자신의 입맛에 맛도록 같은메소드 이름에 내용만을 재수정 하는겁니다 간단하게 예시를 보겠습니다 먼저 TV 라는 클래스에서 채널과 볼륨을출력한다. 하지만 시간이 지나TV에 시간을 같이 출력해줘야 하는 일이생겼다클래스를 새로 만들어서 채널과 볼륨을 출력하는기능을 다시 만들기엔 시간이 아깝다.그래서 TVX라는 클래스를 만들고TV클래스를 상속받아 원래있던 기능에시간출력을 위한 기능만 재정의 해준것이다즉 부모클래스의 output()메소드를재정의 해준것이다. 하지만 오버라이..