목록프로그래밍언어 (42)
꿈 많은 사람의 이야기
같은 패키지에 속하는 클래스들은 아무런 조건 없이 다른 클래스를 사용할 수 있지만 다른 패키지에 속하는 클래스를 사용하려면 주로 import를 사용해서 쓴다. import java.util; 처럼 말이다. 주의할 점은 import문으로 지정된 패키지의 하위 패키지는 import대상이 아니다. 만약 하위 패키지에 있는 클래스들도 사용하고 싶다면 import문을 추가해야한다. 예를들어 com.mycompany.project 패키지를 갖고 오고 싶으면 import com.mycompany.*; 이 아니라 import com.mycompany.project.*; 으로 해야 한다.
가끔 프로그램을 하다 보면 단 하나의 객체만 만들도록 보장해야 하는 경우도 있다. 단 하나만 생성된다고 해서 이 객체를 싱글톤(Singleton)이라고 한다. 이러한 싱글톤을 만드려면 클래스 외부에서 new 연산자로 생성자를 호출할 수 없도록 막아야 한다. 생성자를 외부에서 호출할 수 없도록 하려면 생성자 앞에 private 접근 제한자를 붙여주면 된다. 그리고 자신의 타입인 정적 필드를 하나 선언하고 자신의 객체를 생성해 초기화한다. 자신의 클래스 내부에선 new 연산자로 생성자로 호출이 가능하다. 정적 필드 또한 private 접근 제한자를 붙여 외부에서 필드 값을 사용못하게 막고 대신 외부에서 호출 할 수 있는 getInstance()메소드를 선언하고 객체를 리턴한다 1 2 3 4 5 6 7 8 9..
정적(static)이란 '고정'의 의미를 갖고 있다. 정적 멤버는 클래스에 고정된 멤버로서 객체를 생성하지 않고 사용할 수 있는 필드와 메소드를 말한다. 1 2 3 4 5 6 7 8 class A { static int num = 1; static void amt() { } } class B { A.num; A.amt(); } cs위 static으로 작성 해놓은 변수와 메소드가 정적 멤버이다. 정적 필드와 정적 메소드는 클래스에 고정된 멤버이므로 클래스 로더가 클래스(바이트 코드)를 로딩해서 메소드 메모리 영역에 적재할 때 클래스별로 관리된다. 따라서 클래스의 로딩이 끝나면 바로 사용할 수 있다. 이것에 대한 접근은 클래스.필드; 클래스.메소드( 매개값) 으로 호출할 수 있다. 여기서 가장 중요한 특징은..
메소드는 객체의 동작에 해당하는 중괄호 {} 블록이다. 자바는 이러한 메소드를 이용해서 클래스안에서 기능을 동작하게 만든다. 메소드는 리턴타입 메소드 이름 ([매개변수1, 배개변수2..]){ 실행 소스; } 와 같이 만들어진다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 class Radio { int number; public void setVolume(int volume) { number = volume; } public int getVolume() { return number; } } Colored by Color Scripter cs 위에서 setVolume은 볼륨 값을 설정하는 메소드이다. 그리고 getVolume은 설정된 number 값을 return 해주는 return ..
생성자는 new 연산자와 같이 사용되어 클래스로부터 객체를 생성할 때 호출되어 객체의 초기화를 담당한다. 객체 초기화란 필드를 초기화하거나, 메소드를 호출해서 객체를 사용할 준비를 하는것이다. 자바에서의 객체는 생성자를 실행시키지 않고서 만들 수 없다. new 연산자에 의해 생성자가 성공적으로 실행되면 힙 영역에 객체가 생성되고 객체 주소가 리턴된다. 모든 클래스에는 생성자가 반드시 존재하며, 하나 이상을 가질 수 있다(오버로딩). 만약 개발자가 클래스 내부의 생성자 선언을 생략했으면 컴파일러는 기본 생성자를 바이트 코드에 자동 추가 시킨다. 예를들어 소스 파일(A.java)에선 class A { } 이면 바이트 코드파일(A.class)에서는 class A { public A() { } } 와 같이 생성..
객체라는 것은 물리적으로 존재하거나 추상적으로 존재하는 것에 대해 자신의 속성을 가지고 있고 다른것과 식별 가능한 것을 말한다. 예를들어 사람, 학과, 강의 등등 모든 것이 객체가 될 수 있다. 그리고 객체는 속성과 동작으로 구성되어 있다. 예를 들어 사람은 이름, 나이등의 속성이 있고 웃다, 움직이다의 동작이 있다. 그리고 객체는 다른 사람과 식별 가능하기 때문에 다 각자 객체라고 한다.예를 들어 나의 친구 A, 선생님 B, 친척 C 등등 모두 다 사람이지만 식별 가능하기에 객체가 될 수 있다. 그리고 이 객체들은 서로 상호작용이 일어난다.객체들은 다 독립적으로 존재하지만 다른 객체와 서로 상호작용하며 동작한다.사람을 보면 제자와 선생님은 서로 상호작용하며 살아간다. 그런 원리와 비슷하다. 객체지향 프..
향상된 for문은 배열에서 많이 쓰이는 방법이다. String[] numbers = {"1", "two", "3"};for(int i = 0 ; i < numbers.length; i++){System.out.println(numbers[i]);} 기존에 이러한 방식으로 for문을 돌려 작성했다고 하면for each에선 이렇게 사용한다. for(String a : numbers){System.out.println(a);} 와 같이 하면 간결하게 for문을 작성할 수 있다.
가끔 사용자가 입력한 키보드의 버튼에 따라 프로그램을 처리해야할 때가 있다.다음은 키보드가 가지고 있는 키 코드이다. 숫자알파벳기능키방향키0 = 48A = 65N = 78a = 97A = 110Backspace = 8왼 = 371 = 49B = 66O = 79b = 98B = 111Tab = 9위 = 382 = 50C = 67P = 80c = 99C = 112Enter = [CR=13, LF= 10]오 = 393 = 51D = 68Q = 81d = 100D = 113Shift = 16아래=404 = 52E = 69R = 82e = 101E = 114Ctrl = 175 = 53F = 70S = 83f = 102F = 115Alt = 186 = 54G = 71T = 84g = 103G = 116ESC = 2..
perl 언어 좀 많이 생소한 언어죠 . 우연치 않게 접했지만 이런 언어는 학교 다닐 때 언어 역사를 보면서 잠깐 봤던 언어로 기억합니다. pascal, Ada 등등 익숙치 않은 언어를 접한 기분이네요.. 그럼 이 언어는 뭘까 도대체 그냥 뭐 C 같은 프로그래밍 언어인거 같네요(당연히..). 근데 CGI를 통해서 접근하는 언어라고 합니다. CGI는 웹 서버와 외부 프로그램 사이에서 정보를 주고 받는 방법 같은걸 말하는데 간단히 사용자 요청에 의한 서버의 응답이라고 보면 됩니다. 그래서 펄은 웹 프로그래밍에 많이 사용한다고 해요. 저는 웹 프로그래밍을 위해 펄에 대한 게시글을 작성할겁니다. 솔직히 PHP, JSP보다 더 불편한 것 같기도 하지만 그런데도 여러모로 장점이 있다고 하네요. 먼저 펄을 설치해봅니..
자바는 모든 문자를 유니코드로 처리한다. 유니코드는 세계 각국의 문자들을 코드값으로 매핑한 국제 표준 규약이다. 유니코드는 하나의 문자에 대해 하나의 코드값을 부여한다. A 및 한글도 하나의 코드 값을 갖는다. 유니코드는 0 ~ 65535 범위의 2byte 크기를 가진 정수 값이다. 그 중 0 ~ 127 까지는 아스키 문자(특수 기호 및 영어 알파벳)가 할당되어 있고 44032 ~ 55203까지는 한글 11172자가 할당되어 있다. 자바는 하나의 유니코드를 저장하기 위해 2byte 크기인 char 타입을 제공한다.char var = 'A'; -> 유니코드 0x0041 -> 2진수 00000000 01000001 이런 식으로. 각 문자에 대해 유니코드 값을 얻으려면 int값으로 받으면 된다.예를 들어cha..