목록프로그래밍 (84)
꿈 많은 사람의 이야기
같은 패키지에 속하는 클래스들은 아무런 조건 없이 다른 클래스를 사용할 수 있지만 다른 패키지에 속하는 클래스를 사용하려면 주로 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문을 작성할 수 있다.
JVM은 메모리 영역을 분할해 사용한다. java.exe로 JVM이 시작되면 JVM은 운영체제에서 할당받은 메모리 영역을 다음과 같이 세부 영역으로 구분해서 사용한다. - 메소드 영역 메소드 영역은 코드에서 사용되는 클래스(~.class)들을 클래스 로더로 읽어 클래스별로 런타임, 필드데이터, 메소드 데이터 등을 분류해서 저장한다. - 힙 영역 객체와 배열이 생성되는 영역이다. 힙 영역에 생성된 객체와 배열은 JVM 스택 영역의 변수나 다른 객체의 필드에서 참조한다. 참조하는 변수나 필드가 없다면 의미 없는 객체가 되기 때문에 이것을 쓰레기로 취급하고 JVM은 가비지 컬렉션을 실행시켜 자동으로 제거한다. - 스택 영역 스택 영역은 각 스레드마다 하나씩 존재하며 스레드가 시작될 때 할당된다. 스택은 메소드..
가끔 사용자가 입력한 키보드의 버튼에 따라 프로그램을 처리해야할 때가 있다.다음은 키보드가 가지고 있는 키 코드이다. 숫자알파벳기능키방향키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..
자바스크립트는 뭐 다양한 기능이 존재하지만 기본적으로 HTML 태그의 id 값에 접근해서 DOM 객체를 생성한 뒤 해당 값에 접근하여 css, html text 값 등을 바꿀 수 있다. 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 Document button{ width: 100px; height : 50px; font-size: 18pt; } 안녕하세요 내용바꾸기 on off Colored by Color Scripter c s 위 예제처럼 말이다. 저 방식은 html 태그 안에 직접 써놓는 inline 방식인데 저렇게 써도 상관은 없지만 유지보수 측면에서 script 영역을 따로 설정하는 것이 좋다. 1 2 3 4 5..