1.아래가 의도하지 않은 결과를 나타내는 이유를 설명하시오. |
// 파일이름 : No_1
// 작성자 : 박지인
// 작성일 : 2022년 12월 5일
// 목 적 : 아스키 코드
public class No1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
char ch = '가';
System.out.println(ch + '\n');
}
}
//결과
//44042
' '은 int형식으로 연산되기 때문에
'가'는 44032
'\n'은 10으로 계산 되어
44042라는 결과값이 나온다.
2.변수의 scope 는? |
변수의 유효 범위(scope)란 해당 변수가 접근할 수 있는 변수, 객체 그리고 함수의 집합을 의미한다.
* 특징
- 변수는 변수가 선언된 시점부터 그 중괄호 블럭 안에서 사용 가능하다.
- 클래스 밖에서 변수 선언은 불가능함
- 같은 영역 내에서 동일 이름의 변수 선언 불가
3.지역변수? |
지역변수란 이름에서 느끼듯이 한 지역 내에서만 사용할 수 있는 변수이다.
여기서 지역이란, 중괄호에 의해 만들어지는 영역을 뜻한다. main 함수내의 변수들도 다 지역변수다.
* 반대로
- 인스턴스 변수(instance variable): 함수 밖, 클래스 안에 선언된 변수(범위는 클래스 전체)
4.펙토리얼을 구하는 재귀 함수를 만드시오. |
// 파일이름 : No_2
// 작성자 : 박지인
// 작성일 : 2022년 12월 5일
// 목 적 : 팩토리얼
public class No2 {
public static void main(String[] args) {
System.out.println("3 factorial: " + factorial(3));
System.out.println("3 factorial: " + factorial(12));
}
public static int factorial(int n) {
if(n==1) //재귀함수에는 반드시 빠져나가는 조건이 있다.
return 1; //이거 없으면 안끝남 무한루프
else
return n * factorial (n-1);
}
}
//결과
//3 factorial: 6
//3 factorial: 479001600
[키워드]
1) 팩토리얼 : 수학에서, 자연수의 계승 또는 팩토리얼(階乘, 문화어: 차례곱, 영어: factorial)은 그 수보다 작거나 같은 모든 양의 정수의 곱이다. n이 하나의 자연수일 때, 1에서 n까지의 모든 자연수의 곱을 n에 상대하여 이르는 말이다. 기호는 을 쓰며 팩토리얼이라고 읽는다.
2) 재귀 함수 : 재귀함수(再歸函數, Recursion)는 정의 단계에서 자신을 재참조하는 함수를 뜻한다. 어떤 사건이 자신을 포함하고 다시 자기 자신을 사용하여 정의될 때 재귀적(recursive)이라고 한다. 일단 무언가를 설명할 때 자기를 포함한 것이라고 이해하면 편하다.
5.클래스의 구성요소는 무엇인가? |
자바에서 클래스는 멤버(member)로 속성을 표현하는 필드(field)와 기능을 표현하는 메소드(method)를 가진다. 또한, 클래스는 생성된 객체의 필드를 초기화해주는 특별한 메소드인 생성자(constructor)를 가진다.
클래스의 구성 : 변수(데이터)와 함수(기능: 변수 컨트롤)
클래스 의미
1) 클래스명.java (반드시 클래스명 이어야 한다.) 코딩 상에서의 클래스
2) 클래스명.class (컴파일 된 파일)
6.원의 넓이는 구하는 프로그램을 아래와 같이 작성하시오. |
조건
-원클래스를 만들것
-메인 메소드를 가진 다른 클래스에서 원 객체를 생성할것
// 파일이름 : No3_1
// 작성자 : 박지인
// 작성일 : 2022년 12월 5일
// 목 적 : 원 넓이 구하기_출력
public class No3_1 {
public static void main(String[] args) {
No3_2 circle = new No3_2();
circle.setRadius(3.5);
double area;
area = circle.circleArea(5);
System.out.println("원의 넓이는: " + area);
}
}
//결과
//원의 넓이는: 78.53981633974483
// 파일이름 : No3_2
// 작성자 : 박지인
// 작성일 : 2022년 12월 5일
// 목 적 : 원 넓이 구하기_공식
public class No3_2 {
double radius;
public double getRadius() {
return radius;
}
public void setRadius(double radius) {
this.radius = radius;
}
//getter, setter함수는 기본적으로 생성하자.
public double circleArea(double radius) { // 원의 넓이를 구하는 함수
return radius * radius * Math.PI; // 결과값을 호출한 곳으로 리턴함
}
}
// 결과 : 단일 출력 안 됨.
7.객체란 무엇인가? |
객체(Object)란 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신과 다른 것을 식별가능한 것을 말한다. 예를 들어 물리적으로 존재하는 학생, 회원 등과 추상적인 생산, 주문, 배송 등이 모두 객체가 될 수 있다.
8. 아래의 클래스에 대하여, 메모리 그림을 그리시오. |
// 파일이름 : No4
// 작성자 : 박지인
// 작성일 : 2022년 12월 5일
// 목 적 : 메모리 그림 그리기
Rectangle rec = new Rectangle();
public class No4 {
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.클래스와 객체의 차이는 무엇인가? |
클래스란 객체를 정의하고 만들어 내기 위한 설계도 혹은 틀을 말한다. 클래스 안에는 객체를 만들어내기 위해 필요한 변수와 메서드들이 존재한다. 객체란 클래스에 선언된 모양 그대로 생성된 실체를 말하며 '클래스의 인스턴스'라고 부른다.
10.아래의 프로그램을 작성하시오. |
// 파일이름 : No5
// 작성자 : 박지인
// 작성일 : 2022년 12월 5일
// 목 적 : 1~50까지의 합
public class No5 {
public static void main(String[] args) {
GetSum getsum = new GetSum(); //1)객체 생성
int num; //2)num 변수 선언
num = 50;
getsum.setNum(num); //3)getsum 객체의 setNum함수 호출, num값 50 저장
getsum.sum(); //4)getsum객체의 sum함수 호출, 1-50까지 합 구함
}
}
// 결과 : 1275// 파일이름 : No5
// 작성자 : 박지인
// 작성일 : 2022년 12월 5일
// 목 적 : 1~50까지의 합
public class No5 {
public static void main(String[] args) {
GetSum getsum = new GetSum(); //1)객체 생성
int num; //2)num 변수 선언
num = 50;
getsum.setNum(num); //3)getsum 객체의 setNum함수 호출, num값 50 저장
getsum.sum(); //4)getsum객체의 sum함수 호출, 1-50까지 합 구함
}
}
// 결과 : 1275
// 파일이름 : No5
// 작성자 : 박지인
// 작성일 : 2022년 12월 5일
// 목 적 : 1~50까지의 합_수식
public class GetSum{
int num;
void setNum(int num) {
this.num = num;
}
void sum() {
int sum = 0;
for (int i = 1; i <= num; i++) {
sum += i;
}
System.out.println(sum);
}
}
11-1.아래의 클래스를 작성하시오. (상 스타프린트) |
// 파일이름 : No6
// 작성자 : 박지인
// 작성일 : 2022년 12월 5일
// 목 적 : 스타프린트 상
public class No6 {
public static void main(String[] args) {
StarPrint starPrint = new StarPrint();
starPrint.printTriangle(3);
System.out.println();
}
}
// *
// **
// ***
// 파일이름 : StarPrint
// 작성자 : 박지인
// 작성일 : 2022년 12월 5일
// 목 적 : 스타프린트 상
public class StarPrint{
void printTriangle(int num) {
for(int i = 1; i <= num; i++) {
for(int j = 1; j <= i; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
11-2.아래의 클래스를 작성하시오. (상하 스타프린트) |
// 파일이름 : No6_1
// 작성자 : 박지인
// 작성일 : 2022년 12월 5일
// 목 적 : 스타프린트 상하
public class No6_1 {
public static void main(String[] args) {
StarPrint1 starPrint1 = new StarPrint1();
starPrint1.printTriangle(3);
System.out.println();
starPrint1.printReverseTriangle(3);
}
}
// *
// **
// ***
// ***
// **
// *
// 파일이름 : StarPrint1
// 작성자 : 박지인
// 작성일 : 2022년 12월 5일
// 목 적 : 스타프린트 상하
public class StarPrint1{
void printTriangle(int num) {
for(int i = 1; i <= num; i++) {
for(int j = 1; j <= i; j++) {
System.out.print("*");
}
System.out.println();
}
}
void printReverseTriangle(int num) {
for(int i = 1; i <= num; i++) {
for(int j = 1; j <= 4-i; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
12.아래의 프로그래밍을 작성하시오. (1단부터 20단 구구단 출력) |
// 파일이름 : No7.java
// 작성자 : 박지인
// 작성일 : 2022년 12월 5일
// 목 적 : 구구단 1~20단
public class No7 {
public static void main(String[] args) {
Gugudan gugudan = new Gugudan();
gugudan.printGugu(10); //1단부터 10단까지 출력
gugudan.printGugu(20); //1단부터 20단까지 출력
}
}
// 1 X 1 = 1
// 1 X 2 = 2 ..
// 20 X 8 = 160
// 20 X 9 = 180
// 파일이름 : Gugudan.java
// 작성자 : 박지인
// 작성일 : 2022년 12월 5일
// 목 적 : 구구단 1~20단
public class Gugudan {
int num;
public void printGugu(int num) {
for (int i = 1; i <= num; i++) {
for (int j = 1; j <= 9; j++) {
System.out.println(i + " X " + j + " = " + i * j);
}
}
}
}
13. 아래의 BankAccount 객체에 대하여 그림을 그리시오. |
// 파일이름 : No8.java
// 작성자 : 박지인
// 작성일 : 2022년 12월 5일
// 목 적 : BankAccount
BankAccount ref1 = new BankAccount();
BankAccount ref2 = ref1;
둘은 다른 객체이지만 같은 주소를 가리키고 있기 때문에, 각각의 객체에서
함수를 실행할 때 같은 주소에 있는 메모리 공간 안에서 값의 변동이 일어난다.
'JAVA개념 시작하기' 카테고리의 다른 글
JAVA 9일차 - 클래스패스, 접근제한자, 패키지 (0) | 2022.12.05 |
---|---|
JAVA 8일차 - 생성자 (0) | 2022.12.05 |
JAVA 6일차 - 클래스와 인스턴스 (0) | 2022.10.31 |
Java 5일차 - 1주일 치 정리 (변수~메소드) (0) | 2022.10.31 |
JAVA 4일차 - 실행 흐름과 컨트롤 (0) | 2022.10.27 |