JAVA

4.[JAVA]형변환

Gunadian 2021. 11. 4. 18:46

형변환=> 연산중간에 형이 변환이 일어나는 경우

=>객체형변환과 연관

**형변환 종류**

1.자동형변환(=묵시적형변환) (적은데이터가 큰데이터일어날때 변환)

①값을 저장할때 일어남

②계산중간에(연산할때) 자동으로 바뀌는 경우

byte -> short -> int -> long -> float -> double

char

boolen은 형변환 x(배제)

-피연산자 중 하나라 double형이면 다른 피연산자도 double형으로 변환

-피연산자 중 하나라 float형이면 다른 피연산자도 float형으로 변환

-피연산자 중 하나라 long형이면 다른 피연산자도 long형으로 변환

-그렇지 않으면 모든 피연산 자는 int 형으로 변환

2.강제형변환(=명시적인 형변환) +(++) (적은데이터방향으로 큰데이터가 들어가는것)

=>명확하게 형변환을 표시해줘야 한다

형식) (변환시킬 자료형)변수명

ex) float f=3.5; // (x) double(8) 형이다.

ex) float f=(float)3.5; -> 강제형변환

int+double = >double+double

3+5.7====>30.+5.7 = 8.7

ㄴ 더블형으로 바뀜

 

public static void main(String[] args) {
                // TODO Auto-generated method stub
                System.out.println("작은형변환");
                //1.적은데이터가 큰 데이터공간에 저장 -> 자동으로 형변환(메모리낭비심하다)
                //1 4 8 16 32 64 128 256
                //byte s=12; 00001100
                short s=12; //00000000 00001100
                int n=s; // 00000000 00000000 00000000 00001100
                //2.계산중간에 자료형이 변환
                char c='A'; //65
                int n2=c+1; //char(2byte)+int(4byte)=>int(65)+int(1)=66
                System.out.println("n2=>"+n2);
                // int(4byte) -> char(2byte)
                System.out.println("(char)n2=>"+(char)n2); //명시적인형변환
                //명시적인 형변환=>단점=>데이터 손실이 일어날수있다.
                int su=(int)3.5;
                System.out.println("su=>"+su); //.5는 뺴고나옴
                
                int x=123;
                float y=x+12.3f; //int+float => float+float=>123.0f로바뀜
                //123.0f+12.3f
                System.out.println("y=>"+y);
                
                byte s2=12; short s3=45;
                System.out.println("형변환주의할점");
                
                int re=s2+s3;  //byte+short=>short+short=short (x)
                //short+short=>int(연산의 기본자료형은 int)
                //int+float or double => float,double로 변환
                //byte,short ==> int 범위내에 존재 =>int
                short re2=(short)(s2+s3);  //수식의 경우에는 ( )괄호로 묶어줘야한다.
                System.out.println("rt=>"+re);
                System.out.println("rt=>"+re2);