Java 기초

Java 기초 (2. 형변환과 연산자, 조건문)

Kw_w 2024. 2. 28. 16:59
성공은 우연이 아니다. 노력, 인내, 배움, 공부, 희생, 그리고 무엇보다 자신이 하고 있는 일에 대한 사랑, 하는 법을 배우는 것이다.

 

  • 형변환

서로 다른 타입간에 연산을 수행 할 경우

수행전에 타입을 맞추어 주는 행위 → 하나의 자료형으로 통일

 

묵시적 형변환 → 컴파일러가 수행

작은 타입에서 큰 타입 갈 때

byte b = 10;
int i = b;

명시적 형변환 → 개발자가 수행

큰타입에서 작은 타입으로

int j = 12345;
short s = (short)j;
public class TypeTest {
    public static void main(String[] args) {
        int intVal = 10;
        double doubleVal = intVal;
        System.out.println(doubleVal);

        double doubleVal2 = 10.99;
        int intVal2 = (int)doubleVal2;
        System.out.println(intVal2);

        int bigNum = 1000000;
        byte smallNum = (byte)bigNum;
        System.out.println(smallNum);
				
				// 크기가 큰 형태로 자동 변환됨
        double dNum = 1.2;
        float fNum = 0.9F;
        float fSum = (float)(dNum + fNum);
    }
}
  • 연산자들
* 단항 연산자
!, ++, --
!true -> false

++ : 피연산자의 값을 1증가 (후위/전위 증가)
-- : 피연산자의 값을 1감소 (후위/전위 감소)
* 이항 연산자

산술 연산자 : +, =, *, /, %
비교 연산자 : >, <, >= , =<, !=, ==
* 3항 연산자
조건항 ? 항1 : 항2
ex) 
int a = 10, int b = 20
a > b ? a : b

* 대입 연산자
int a = 10;

* 복합 연산자
+=, *=, /=, %=, -=
public class LogicalTest {
    public static void main(String[] args) {
        //입력 장치를 값들을 가져오기 위한 util class
        Scanner scanner = new Scanner(System.in);
        System.out.println("정수하나를 입력하세요. : ");

        var num = scanner.nextInt();
//        String result1;
//        if (num > 0){
//            result1 = "양수";
//        }else if(num == 0){
//            result1 = "0";
//        }else{
//            result1 = "음수";
//        }
//        System.out.println(result1);
        // 3항 연산자
        String result1 = (num>0)? "양수" : (num==0)?"0" : "양수아님";
        System.out.println(result1);
    }
}

문제 1. 세 자리 수 정수를 입력받아 각 자리수 숫자의 총합을 구하시오.

public class IntegerSum {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("3자리 정수를 입력하세요 : ");
        int num = sc.nextInt();

        int a = num / 100;
        int b = (num - (100*a)) /10;
        int c = num - 100*a -10*b;

        int sum = a+b+c;
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
        System.out.println(sum);

    }
}

→ 논리 연산자를 사용시 제일 처음 조건식에 좀 더 집중해야한다.

int num1 = 0;
int i = 0;
//둘 다 true일 때만 true가 된다
boolean value =((num1 += 10) < 10 && ((i += 2) < 10));
//논리연산자의 첫번째 조건이 false 이기에 두번째 조건이 실행되지 않는다
num1 = 10, i = 0, value = False

boolean value =((num1 += 10) < 10 || ((i += 2) < 10));

//num1, i의 값은 얼마인가?
num1 = 10 ,i = 2, value = True
  • 조건식

조건에 따른 명령을 수행

문제 2. 사용자로 부터 키와 몸무게를 입력받고 BMI를 계산하여 저체중, 정상, 과체중, 비만을 판별해보자

public class CTest {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("키와 몸무게를 공백으로 구분하여 입력하세요: ");
        String input = sc.nextLine();
        String[] numbers = input.split(" ");

        double height = Integer.parseInt(numbers[0])*0.01;
        double weight = Integer.parseInt(numbers[1]);

        System.out.println("height = "+height+"m");
        System.out.println("weight = "+weight);
        double obesity = weight /(height*height) ;
        System.out.println(obesity);
        if (obesity < 18.5){
            System.out.println("저체중");
        }else if (obesity > 18.5 && obesity < 25){
            System.out.println("정상");
        } else if (obesity > 25 && obesity < 30) {
            System.out.println("과체중");
        } else{
            System.out.println("비만");
        }
    }
}

문제 3. 사용자로 부터 년도를 입력받고 그 해가 윤년인지 아닌지 판별해보자

public class FeburaryTest {
    public static void main(String[] args) {
        System.out.print("해당 년도를 입력해주세요 : ");
        int years = new Scanner(System.in).nextInt();

        if (years % 4==0 || years % 100 ==0 || years % 400 == 0) {
            System.out.println("윤년 2월달에 29일이 있습니다");
        }else{
            System.out.println("윤년이 아닙니다 2월달에 28일까지 있습니다");
        }
    }
}

'Java 기초' 카테고리의 다른 글

Java 기초 (4. Overload vs Override)  (2) 2024.03.12
Java 기초 (연습하기-1)  (0) 2024.03.12
Java 기초 (3. Switch문, While문)  (0) 2024.02.29
Java 기초 (1. 메모리와 데이터 타입)  (2) 2024.02.27
Java 개론  (0) 2024.02.26