1. 아래가 의도하지 않은 결과를 나타내는 이유를 설명하시오.
char ch = '가';
System.out.println(ch + '\n');
: char 타입 문자 ‘가’를 초기화 하고 이를 출력하는 과정에서 ch + ‘\n’의 ‘+’ 정수(int) 연산으로 인해 유니 코드(UTF-8)에 해당 되는 값이 인코딩이 되어 정수인 44042가 출력되었다.
2. 변수의 scope 는?
: 변수가 해당 지역내에 있음을 의미하는 구역을 의미하며, ‘{}’ 기호를 통해 구분한다.
3. 지역변수?
: 클래스 내 메소드나 조건문과 같이 ‘{}’ 기호 내에 있는 선언한 변수를 일컫는다. 지역변수의 특징은 선언한 스코프 외 동등한 다른 지역이나 상위 영역으로 호출을 할 수 없다는 점이 있다.
4. 펙토리얼을 구하는 재귀 함수를 만드시오.
public class Factorial {
public static void main(String[] args) {
int num = 5;
System.out.println("팩토리얼의 값은 " + getFactorial(num) + "입니다 ");
}
private static int getFactorial(int num) { // 팩토리얼
if (num <= 1) {
return num;
} else {
return getFactorial(num - 1) * num;
}
}
}
5. 클래스의 구성요소는 무엇인가?
: 클래스의 구성요소는 크게 3가지로 필드, 메소드, 생성자가 있다.
- 필드는 클래스와 메소드 단위 사이에 속하는 전역적인 의미의 스코프로, 해당 구역내에 선언한 변수는 전역 변수의 특성을 가진다.
- 메소드는 클래스에 속하는 하위 단위적인 개념으로, 여러 변수들의 연산을 통해 한 기능을 구현할 수 있다.
- 생성자는 메인 클래스에서 new 키워드를 통해 선언하고자 할 때, 참조된 클래스의 기능을 가져와 객체를 생성하면서 메모리를 할당하는 기능을 가진다.
6. 원의 넓이는 구하는 프로그램을 아래와 같이 작성하시오.
6-1. 메인 원 클래스
public class CirMain {
public static void main(String[] args) {
Circle cir = new Circle();
cir.setRad(10);
System.out.println("원의 넓이는: " + cir.getArea());
}
}
6-2. 원의 넓이를 계산하는 클래스
public class Circle {
int rad; // alt+shift+s로 getter/setter 설정가능
public int getRad() {
return rad;
}
public void setRad(int rad) {
this.rad = rad;
}
public double getArea() {
return Math.PI * Math.pow(rad, 2);
}
}
7. 객체란 무엇인가?
: 메인 클래스에서 기존에 선언한 다른 클래스를 참조하고자 할 때 생성자를 통해 해당 크기만큼 메모리를 할당하는 어떠한 공간적인 개념.
8. 아래의 클래스에 대하여, 메모리 그림을 그리시오.
Rectangle rec = new Rectangle();
public class Rectangle {
int height;
int width;
public int getHeight() {
return height;
}
public void setHeight(int height) {
this.height = height;
}
public int getWidth() {
return width;
}
public void setWidth(int width) {
this.width = width;
}
public int getArea() {
return width * height;
}
}
9. 클래스와 객체의 차이는 무엇인가?
: 클래스는 크게 두 가지의 의미로 분석할 수 있다.
- 첫 번째, 클래스는 규모면에서 보면 한 기능을 가진 메소드를 여러개를 포함하여 한 그룹을 가질 수 있는 기능이 있고
- 두 번째, 객체로써의 클래스는 기존에 만들었던 클래스를 참조하여(Call by reference) 사용자 정의 타입을 통해 생성자로 선언 및 초기화를 할 수 있다.
10. -1 부터 num 까지 합을 구하는 class 를 작성하도록 하시오.
10-1. 메인 클래스
public class SummaryMain {
public static void main(String[] args) {
Summary summary = new Summary();
int num = 5; // 지정 변수 num 선언 및 초기화
summary.setNum(num);
System.out.println(summary.getSum()); // 값 출력
}
}
10-2. 계산 클래스
public class Summary {
int num;
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public int getSum() {
int sum = 0;
for (int i = -1; i <= num; i++) {
sum += i;
}
return sum;
}
}
11. 아래의 클래스를 작성하시오.
StraPrint strPrint = new StarPrint();
strPrint.printTriangle(3);
System.out.println();
strPrint.printReverseTriangle(3);
===============================
*
**
***
***
**
*
11-1. 메인 클래스
public class StarPrintMain {
public static void main(String[] args) {
StarPrint strPrint = new StarPrint();
strPrint.printTriangle(3);
System.out.println();
strPrint.printReverseTriangle(3);
}
}
11-2. 계산 클래스
public class StarPrint {
int num;
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public void printTriangle(int num) {
for (int i = 1; i <= num; i++) {
for (int j = 1; j <= i; j++) {
System.out.print("* ");
}
System.out.println();
}
}
public void printReverseTriangle(int num) {
for (int i = 1; i <= num; i++) {
for (int j = num; j >= i; j--) {
System.out.print("* ");
}
System.out.println();
}
}
}
12. 아래의 프로그래밍을 작성하시오.
Gugudan gugudan = new Gugudan();
gugudan.printGugu(10); //1단부터 10단까지 출력
gugudan.printGugu(20); //1단부터 20단까지 출력
12-1. 메인 클래스
public class GugudanMain {
public static void main(String[] args) {
Gugudan gugudan = new Gugudan();
gugudan.printGugu(10); //1단부터 10단까지 출력
gugudan.printGugu(20); //1단부터 20단까지 출력
}
}
12-2. 계산 클래스
public class Gugudan {
int num;
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public void printGugu(int num) {
for (int i = 1; i <= num; i++) {
for (int j = 1; j <= 9; j++) {
System.out.print(i + " x " + j + " = " + (i * j) + "\t");
}
System.out.println();
}
}
}
13. 아래의 BankAccount 객체에 대하여 그림을 그리시오.
BankAccount ref1 = new BankAccount();
BankAccount ref2 = ref1;
'WebDev > 본과정' 카테고리의 다른 글
패키지와 접근제한자 (0) | 2021.05.11 |
---|---|
클래스의 생성자 (0) | 2021.05.11 |
반복문 심화 및 메소드 기초 (0) | 2021.04.30 |
조건문과 반복문 (0) | 2021.04.30 |
키워드와 연산자 (0) | 2021.04.30 |
최근댓글