본문 바로가기

카테고리 없음

멋쟁이사자처럼 부트캠프 자바 백엔드 과정 (4일차) / 워크샵 1

 

 

[문제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);