일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 배열
- 자바
- 극단 파수꾼
- 중국식 룰렛
- 30스튜디오
- 자바의 정석 기초편
- 연극
- 양정웅
- 서강대메리홀
- 뮤지컬
- 오세혁
- 인하극회
- 창작산실
- java의 정석
- 국립극단
- 산울림소극장
- 자바의 정석
- 2인극
- 권리장전 검열각하
- 남산예술센터
- 서울시극단
- 김광보 연출
- 연희단거리패
- 김희재
- 서울시연극폭탄
- Java
- 극단 여행자
- 김이설
- 자바의 정석 요약집
- 전인철
- Today
- Total
목록자바 (23)
Romantic Production
7-29 여러 종류의 객체를 배열로 다루기 조상타입의 참조변수로 자손 타입의 객체를 참조하는 것이 가능하므로, Product클래스가 Tv, Computer, Audio 클래스의 조상일 때, 다음과 같이 할 수 있다. Product p1 = new Tv(); Product p2 = new Computer(); Product p3 = new Audio(); 위 코드를 Product 타입의 참조변수 배열로 처리 할 수 있다. Product p[] = new Product[3]; p[0] = new Tv(); p[1] = new Computer(); p[3] = new Audio(); 조상타입의 참조변수 배열을 사용하면, 공통의 조상을 가진 서로 다른 종류의 객체를 배열로 묶어서 다룰 수 있다. 이전 게시물 마..
7-1 상속 상속이란, 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것이다. 보다 적은 양의 코드로 새로운 클래스 작성 가능 코드를 공통적으로 관리 할 수 있어 코드의 추가 및 변경 용이 (코드의 재사용성을 높이고, 중복을 제거, 프로그램의 생산성과 유지보수에 크게 기여) 클래스이름 extends 상속받고자하는 클래스이름 class Parent{} class Child extends Parent{ // ... } 상속해주는 클래스를 '조상 클래스' 상속받는 클래스를 '자손 클래스' 이 두 클래스는 서로 상속 관계에 있다고 한다. 위 그림처럼 상속관계를 그림으로 표현한 것을 상속계층도(class hierarachy)라고 한다. 그리고 아래와 같이 표현할 수도 있다. 자손 클래스는 조상 클래스의 모든..
6-30 오버로딩(overloading) 한 클래스 내에 같은 이름의 메서드를 여러 개 정의하는 것. 메서드 이름이 같아야 한다. 매개변수의 개수 또는 타입이 달라야 한다. 반환 타입은 관계 없다. 메서드 오버로딩의 대표적인 예는 println메서드다. PrintStream 클래스에 어떤 종류의 매개변수를 지정해도 출력할 수 있도록 10개의 오버로딩된 println 메서드를 정의해놓고 있다고 한다. void println() void println(boolean x) void println(char x) void println(char[] x) void println(double x) void println(float x) void println(int x) void println(long x) void..
6-22 호출스택(call stack) 호출스택은 메서드의 작업에 필요한 메모리 공간을 제공한다. 메서드가 호출되면, 호출스택에 호출된 메서드를 위한 메모리가 할당되며, 이 메모리는 메서드가 작업을 수행하는 동안 지역변수(매개변수 포함)들과 연산의 중간 결과 등을 저장하는데 사용된다. 메서드가 작업을 마치면 할당되었던 메모리 공간은 반환되어 비어진다. public class Ex6_05 { public static void main(String[] args) { System.out.println("Hello"); } } ①~② 위의 예제를 실행시키면, JVM에 의해서 main메서드가 호출됨으로써 프로그램이 시작된다. 이 때, 호출스택에는 main메서드를 위한 메모리 공간이 할당되고 mian 메서드의 코드..
6-14 메서드란? 메서드(method) 특정 작업을 수행하는 일련의 문장들을 하나로 묶은 것.(수학의 함수와 유사) 메서드에 넣을 값(입력)과 반환하는 결과(출력)만 알면 된다. 내부적으로 어떻게 작동하는지 몰라도 된다. 메서드는 크게 두 부분, 선언부(header)와 구현부(body)로 이루어져 있다. 반환타입 메서드이름 (타입 변수명, 타입 변수명, ...) //선언부 { //구현부 //메서드 호출시 수행될 코드 //구현부 } int add (int a, int b) //선언부 { //구현부 int result = a+b; //구현부 return result; //호출한 메서드로 결과를 반환 //구현부 } 6-15 메서드의 선언부 메서드의 선언부는 메서드의 이름, 매개변수 선언, 반환 타입 으로 구..
6-1 객체지향 언어 객체지향 언어는 코드 간에 서로 관계를 맺어 줌으로써 보다 유기적으로 프로그램을 구성하는 것이 가능해졌다. 1. 코드의 재사용성이 높다. ->새로운 코드를 작성할 때 기존의 코드를 이용하여 쉽게 작성할 수 있다. 2. 코드의 관리가 용이하다. ->코드간의 관게를 이용해서 적은 노력으로 쉽게 코드를 변경할 수 있다. 3. 신뢰성이 높은 프로그래밍을 가능하게 한다. ->제어자와 메서드를 이용해서 데이터를 보호하고 올바른 값을 유지하도록 하며, 코드의 중복을 제거하여 코드의 불일치로 인한 오동작을 방지할 수 있다. 재사용성 유지보수 중복든 코드의 제거 앞으로 객체지향 개념을 학습할 때 이 세가지 관점에서 보면 보다 쉽게 이해할 수 있을 것이다. 너무 객체지향개념에 얽매여서 고민하기 보다는..
연습문제5에서 배열의 위치를 바꿀 때 Math.random() 메서드를 이용했는데 이 방법에 의구심이 들었지만 일단은 이런 방법이 있다 정도로만 넘어갔었다. 사실 엄청 간단한겨였지만 이상하게 한 번 납득이 안되면 마치 고집처럼 잘 이해가 되지 않았는데 그래도 이젠 스스로 완전히 납득이 됐다. 우선 연습문제 5_5를 예를 들겠다. int[] ballArr = {1,2,3,4,5,6,7,8,9}; 이 배열을 임의로 순서를 바꿔보겠다. 그때 해설에서 나온 정답은 //배열 ballArr의 임의의 요소를 골라서 위치를 바꾼다. for(int i=0; i
5-1 다음은 배열을 선언하거나 초기화한 것이다. 잘못된 것을 고르고 그 이유를 설명하시오. int[] arr[]; int[] arr = {1,2,3}; int[] arr = new int[5]; int[] arr = new int[5]{1,2,3,4,5}; int arr[5]; int[] arr[] = new int[3][]; 답: 4,5 4번은 우항에 {1,2,3,4,5}를 빼거나 [5]에서 숫자를 빼야한다. 5번은 배열 선언시에 배열의 크기는 지정을 할 수 없기 때문에 불가능하다. 5-2 다음과 같은 배열이 있을 때, arr[3].length의 값은 얼마인가? int[][] arr = { {5, 5, 5, 5, 5,}, {10, 10, 10}, {20, 20, 20, 20}, {30, 30} } 답..
4-1 다음의 문장들을 조건식으로 표현하라. int형 변수 x가 10보다 크고 20보다 작을 때 true인 조건식 char형 변수 ch가 공백이나 탭이 아닐 때 true인 조건식 char형 변수 ch가 'x' 또는 'X'일 때 true인 조건식 char형 변수 ch가 숫자('0'~'9')일 때 true인 조건식 char형 변수 ch가 영문자(대문자 또는 소문자)일 때 true인 조건식 int형 변수 year가 400으로 나눠떨어지거나 또는 4로 나눠떨이지고 100으로 나눠떨어짖 않을 때 true인 조건식 boolean형 변수 powerOn이 false일 때 true인 조건식 문자열 참조변수 str이 "yes"일 때 true인 조건식 답: 10
3-1 다음 중 형변환을 생략할 수 있는 것은?(모두 고르시오) byte b = 10; char ch = 'A'; int i = 100; long l = 1000L; b = (byte)i; ch = (char)b; short s = (short)ch; float f = (float)l; i = (int)ch; 답: 4, 5 1. b = (byte)i; // int(4byte) byte(1byte) → 이므로 반드시 형변환 필요 2. ch = (char)b; // byte(1byte) char(2byte) → 이지만 범위가 달라서 형변환 필요 3. short s = (short)ch; // char,short 2byte 은 이지만 범위가 달라서 형변환 필요 4. float f = (float)l; // f..