2023.03.14 : Java 기초(자료형2)

이준영·2023년 3월 14일
0

Java


실수형 자료형

자바에서 모든 실수의 기본형은 double

public class VariableEx01 {
    public static void main(String[] args) {
        //int i =2.5;   --> 에러
        //System.out.println(i);
        
        //float f = 2.5; -->에러 : 2.5f라고 f를 명시해줘야 한다.
        double d = 2.5;
        System.out.println(d);
        
		//지수
        double d1 = 1.0e3;    --> 1000.0
        System.out.println(d1);
    }
}

기본형 자료의 형변환 에러



형변환(묵시적 / 명시적)

작은 -> 큰 자료형 --> 자동으로 형변환
(char -> int 형변환 가능)
반대 --> 강제 형변환 해줘야 함

####묵시적 형변환(자동 형변환)

public class TypeCastingEx01 {
    public static void main(String[] args) {
        short s1 = 10;
        //묵시적 형변환(자동 형번환)
        int i1 = s1;
        System.out.println(i1);

        float f1 = 10.0f;
        double d1 = f1;
        System.out.println(d1);

        char c1 ='A';
        int i2 = c1;
        System.out.println(i2); //아스키 코드 값 출력
    }
}



####명시적 형변환(강제 형변환)

public class TypeCastingEx02 {
    public static void main(String[] args) {
        //명시적 형변환(강제 형변환)
        //() --> 캐스팅 하기 위함
        int i1 = 20;
        short s1 = (short)i1;
        System.out.println(s1);

        //char int 사이 형변환은 가능하다.
        char c1 = 'A';
        int i2 = c1 + 3;
        c1 = (char)i2;
        System.out.println(i2);
        System.out.println((char)i2);
        System.out.println(c1);

    }
}



정수 타입 형변환 (int)

public class TypeCastingEx02 {
    public static void main(String[] args) {
    	int i1 = 10;
        int i2 = 20;
        int sum1 = i1 + i2;
        System.our.println(sum1);
        
        short s1 = 10;
        short s2 = 20;
        short sum2 = (short)(s1+s2)
        // int sum2 = s1 + s2;    --> int 보다 작은 타입들은 자동으로 변환되어 연산 수행하기 떄문에 short로 연산하지 못함(하려면 캐스팅)
        	}
        }

참고로 long으로 연산하게 되면 모두 long으로 처리된다.



오버 플로우(overflow)

자신의 범위를 벗어날 때 나타나는 현상

public class TypeCastingEx02 {
    public static void main(String[] args) {
        int i1 = 1000000;
        int i2 = 1000000;

        //int product1 = i1 * i2;
       // System.out.println(product1);   -727379968 --> 이상한 값 출력
        long product1 = (long)i1 * i2;  --> long으로 변환해서 타입을 맞춰주기
    }
}



논리 연산자 특이점

public class OperatorEx01 {
    public static void main(String[] args) {
        int a = 7;
        int b = 2;

        boolean result;
        //&&연산자는 a b 전부 참이어야 참, 따라서 a가 거짓이면 b도 자동 거짓이므로 연산을 하지 않고 바로 거짓으로 출력함
        result = (a -= 3) > 7 && (b += 1) <7;
        System.out.println(result);
        System.out.println(a + " / " + b);
    }
}

따라서 b는 연산을 하지 않고 그대로 2가 나온다. (or 연산자도 똑같이 전자가 참이면 후자도 참이기 때문에 계산 할 필요가 없어 하지 않음)



비트연산자들은 뒤의 연산까지 처리 한다.

public class OperatorEx01 {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;

        System.out.println((a += 10) > 15 | (b -= 10) > 15);
        System.out.println(a + " / " + b);

        a= 10;
        b= 20;
        System.out.println((a += 10) > 15 || (b -= 10) > 15);
        System.out.println(a + " / " + b);    

    }
}



Java의 제어문

조건 - 비교연산자와 논리연산자의 결과(true/false)

조건의 의한 분기 (if / switch)

조건의 의한 반복 (for / while / do~ while)

switch로 학점 만들기

public class ConditionEx01 {
    public static void main(String[] args) {
        //학점
        int score = 51;
        switch(score/10) {  --> 10으로 나눠서 하기
            case 9: System.out.println(score + "는 S등급입니다.");
            break;
            case 8: System.out.println(score + "는 A등급입니다.");
            break;
            case 7: System.out.println(score + "는 B등급입니다.");
            break;
            case 6: System.out.println(score + "는 C등급입니다.");
            break;
            case 5: System.out.println(score + "는 D등급입니다.");
            break;
            case 4: System.out.println(score + "는 E등급입니다.");
            break;
            default : System.out.println(score + "는 F등급입니다.");
            break;
        }
    }
}

삼항 연산자

profile
끄적끄적

0개의 댓글