Java

프로그래밍 기초 #1

장진혁 2023. 2. 13. 23:45

항해 2추차 시작으로 자바 프로그래밍 기초가 시작되었다.

알아도 복습한다는 마음으로 과제를 제출했고 

처음 자바 배울때 헷갈리는 부분인 변수 기본형의 표현 범위와 타입에따른 형변환을 복습했다.

 

byte b = 10;
char ch = 'A';
int i = 100;
long l = 1000L;
//3-1. 다음 중 형변환을 생략할 수 있는 것은? (모두 고르시오)

정답 :  b = (byte) i; NO - int i를 byte로 형변환 해야함
      ch = (char) b; NO - byte b를 char로 형변환 해야함
      short s = (short) ch; NO - short타입 s는 char타입 ch를 short타입으로 형변환 해야함
      float f = (float) l; OK - 1000Long 타입은 1000float타입으로 변경해도 값손실이 없어서 자동형변환됨
      i = (int) ch; OK - char는 정수형 변수 이기 떄문에 상과없이 자동 형변환됨
package report2;
//3-2. 다음 연산의 결과와 그 이유를 적으세요.
public class Report2_2 {
    public static void main(String[] args){
        int x = 2;
        int y = 5;
        char c = 'A'; // 'A'의 문자코드는 65

        System.out.println(y >= 5 || x < 0 && x > 2);
        // x는 0보다 작지도 않고 2보다 크지도 않는데 y가 5랑 같거나 큰 or조건에 하나라도 만족해서 true이다.
        System.out.println(y += 10 - x++);
        // x++ 부분은 후위연산이여서 먼저 값이 적용 후 +1이 됨. 5+8 이됨
        System.out.println(x += 2);
        // 바로 위 코드에서 x가 증감연산으로 3이 되고 +2가 되어 5가 됨.
        System.out.println(!('A' <= c && c <= 'Z'));
        // c는 'A' 아스티코드 65이다. and연산 으로 A와 A는 같고 A보다 Z가 큰게 맞아서 true이다.
        // 하지만 NOT연산 !로 인해 true가  false로 바뀜.
        System.out.println('C' - c);
        // C는 아스키코드 67이다. A는 아스키코드 65이다. 67-65 = 2이다.
        System.out.println('5' - '0');
        // 5는 아스키코드 53이고 0은 아스키코드 48이다. 53-48 = 5이다.
        System.out.println(c + 1);
        // 'A'는 아스키코드 65이다. 65+1 = 66이다.
        System.out.println(++c);
        // 전위연산으로 65+1이 되어 B가 된다.
        System.out.println(c++);
        // 후위연산으로 B값이 출력되고 +1이 된다.
        System.out.println(c);
        // 위에 코드에서 +1되어(66+1) 아스키코드67의 C가 나온다.
    }
}
package report2;

//3-6. 아래는 화씨(Fahrenheit)를 섭씨(Celcius)로 변환하는 코드이다.
//변환 공식이 'C = (F-32)*5/9'라고 할 때, 빈 칸에 알맞은 코드를 넣으시오.
// 단, 변환값은 소수점 셋째자리에서 반올림하며, Math.round() 함수를 사용하지 않고 처리할 것!
public class Report2_6 {
    public static void main(String[] args) {
        int fahrenheit = 100;
        float celcius = (float) (int) (((((float) fahrenheit - 32) * 5 / 9) * 100) + 0.5) / 100;

        System.out.println("Fahrenheit:" + fahrenheit);
        System.out.println("Celcius:" + celcius);
    }
}