목록개발 (83)
꿈 많은 사람의 이야기
클래스에서 자동 타입 변환은 다음과 같은 조건에서 일어난다. 부모 클래스 변수 = 자식 클래스 타입 일때 자동 타입 변환이 일어난다. 예를 들어 다음과 같은 상황이라 가정하자 이와 같은 상황일때 Cat cat = new Cat(); Animal ani = cat; 또는 Animal ani = new Cat(); 와 같이 타입 변환으로 객체를 생성할 수 있다. 위와 같은 상황에서 메모리 상태를 그림으로 묘사하면 와 같이 생성이 된다. 즉 변수 타입만 다를뿐 동일한 객체를 참조하고 있다. 위와 같은 상태에선 B b= new B(); C c= new C(); D d= new D(); E e= new E(); A a1 = b; (가능) A a2 = c; (가능) A a3 = d; (가능) A a4 = e; (가..
정적(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..
perl 언어 좀 많이 생소한 언어죠 . 우연치 않게 접했지만 이런 언어는 학교 다닐 때 언어 역사를 보면서 잠깐 봤던 언어로 기억합니다. pascal, Ada 등등 익숙치 않은 언어를 접한 기분이네요.. 그럼 이 언어는 뭘까 도대체 그냥 뭐 C 같은 프로그래밍 언어인거 같네요(당연히..). 근데 CGI를 통해서 접근하는 언어라고 합니다. CGI는 웹 서버와 외부 프로그램 사이에서 정보를 주고 받는 방법 같은걸 말하는데 간단히 사용자 요청에 의한 서버의 응답이라고 보면 됩니다. 그래서 펄은 웹 프로그래밍에 많이 사용한다고 해요. 저는 웹 프로그래밍을 위해 펄에 대한 게시글을 작성할겁니다. 솔직히 PHP, JSP보다 더 불편한 것 같기도 하지만 그런데도 여러모로 장점이 있다고 하네요. 먼저 펄을 설치해봅니..