[문제1] 다음과 같은 조건을 만족하는 프로그램을 작성하라.
1. int, double, char, boolean 자료형을 각각 변수로 선언하고, 해당 변수의 값과 자료형을 출력하라. 2. 출력 시 변수의 자료형과 변수에 저장된 값을 함께 서술하라. |
구현 클래스
클래스 이름 | 메소드 | 기타 |
Test01 | +main(String args[]) : void | main 함수 안에서 모든 코드 진행 |
실행 결과
정수형 변수의 값은 100이며, 자료형은 int 이다. 실수형 변수의 값은 3.14이며, 자료형은 double 이다. 문자형 변수의 값은 A이며, 자료형은 char 이다. 논리형 변수의 값은 true이며, 자료형은 boolean 이다. |
1. 변수 선언
package likeLion;
public class Chore01 {
public static void main(String[] args) {
int a = 100;
double b = 3.14;
char c = 'A';
boolean d = true;
변수를 선언하고, 각 형식에 따라 값을 입력한다.
2. 출력 코드 입력
System.out.println("정수형 변수의 값은 " + a + "이며, 자료형은 " + ((Object) a).getClass().getTypeName() + "입니다.");
System.out.println("정수형 변수의 값은 " + b + "이며, 자료형은 " + ((Object) b).getClass().getTypeName() + "입니다.");
System.out.println("정수형 변수의 값은 " + c + "이며, 자료형은 " + ((Object) c).getClass().getTypeName() + "입니다.");
System.out.println("정수형 변수의 값은 " + d + "이며, 자료형은 " + ((Object) d).getClass().getTypeName() + "입니다.");
총 2개의 다른 변수가 하나의 코드에서 출력된다. 따라서 코드는 아래와 같은 구조로 작성된다.
[구문1] + [int a] + [구문2] + [메소드] + [구문3]
이때, 각 자료형이 무엇인지 출력하기 위해서는 메소드가 필요하다.
기본자료형의 데이터타입은 Object로 캐스트한 후 출력할 수 있다.
((Object) a).getClass().getTypeName()
int형인 a를 Object로 캐스트한 후, getClass() 로 현재 참조하고 있는 클래스를 확인하여
getTypeName()으로 그 값을 확인하는 개념이다.

정상적으로 출력된다.
그런데 java.lang.object 슈퍼클래스의 참조관계가 함께 표시되는 듯 하다.
이때 아래 코드를 사용하면 보다 간결한 결과가 출력된다.
((Object) a).getClass().getSimpleName()

최종 결과물. 자료형 유형이 단축형으로 나오지 않는다는 문제가 있다.
[문제2] 다음 조건을 만족하는 프로그램을 작성하라.
변수 선언이 아래와 같을 때 아래와 같이 실행 결과가 출력 될 수 있도록 프로그램을 작성하라. ascii 값 ‘A’ -> 65 ascii 값 ‘B’ -> 66 ascii 값 ‘1’ -> 49 ascii 값 ‘2’ -> 50 |
class Chore02 {
public static void main(String[] args)
{ String s1 = "1";
String s2 = "2";
boolean bnx = false;
char c1 = 'A';
char c2 = 'B';
char c3 = '1';
char c4 = '2';
int inx = 2;
System.out.println();
System.out.println();
System.out.println();
System.out.println();
}
}
구현 클래스
클래스 이름 | 메소드 | 기타 |
Test01 | +main(String args[]) : void | main 함수 안에서 모든 코드 진행 |
실행 결과
12 true 131 51 99 |
class Chore02 {
public static void main(String[] args)
{ String s1 = "1";
String s2 = "2";
boolean bnx = false;
char c1 = 'A';
char c2 = 'B';
char c3 = '1';
char c4 = '2';
int inx = 2;
}
}
선언된 변수의 유형을 살펴보고, 이를 잘 조합해야 하는 문제다.
[12 만들기]
String인 s1, s2은 각각 "1"과 "2"로 정의되어 있다. 이를 첨부된 아스키 코드에 각각 대입하면 49와 50에 해당한다.
s1과 s2 모두 문자열이며, 자바에서는 + 연산자를 이용해 단일 문자를 순차적으로 이을 수 있다.
따라서 아래의 코드는 12를 출력한다.
System.out.println(s1 + s2);
[False 만들기]
boolean인 bnx는 다른 변수와 조합할 필요가 없다. 값을 뒤집는 연산자인 !를 변수 앞에 붙여주기만 하면 된다.
System.out.println(!bnx);
[131 만들기]
주어진 값 중 131을 가장 간단하게 만들기 위해서는 각각 아스키 값 65와 66를 지칭하는 A, B를 더하면 된다.
각각 'A'와 'B'로 선언된 char c1, c2를 더하면 된다.
System.out.println(c1 + c2);
[51 만들기]
int형과 char형을 연결해 만들 수 있다. 21과 비슷한 조합이다.
2로 선언된 int형인 inx 뒤에 + 연산자를 넣고, 이어서 3으로 선언된 char형인 c3을 붙인다.
System.out.println(inx + c3);
[99만들기]
49와 50을 더해 만드는 것이 가장 수월하다. 12와 유사하게 아스키 값 49와 50으로 지정된 1과 2를 사용할 것이다.
각각 1과 2로 지정된 char형인 c3와 c4를 + 연산자를 이용해 더하면 된다.
System.out.println(c3 + c4);