데이터 과학

Cast 연산자와 연산 본문

프로그래밍 언어론/JAVA 기초

Cast 연산자와 연산

티에스윤 2022. 5. 22. 18:53

JAVA는 cast 연산이 가능합니다. 

 

아래는 간단하게 작성한 cast 연산인데, cast 연산은 형변환을 나타내는 것으로 int연산을 float 연산으로 float 연산을 int로 변경하여 나타낼 수 있습니다. 

 

 

public class Test {
    public static void main(String[] args) {
        int a=7;
        int b=6;
        
        System.out.println(a/b);
        System.out.println((float)a/b);
        System.out.println(a/(float)b);
        System.out.print((float)(a/b));
    }
}

 

 

이 예제에 대한 결과는 

 

1
1.1666666
1.1666666
1.0

 

마지막 출력물을 보면 

 

System.out.print((float)(a/b));

 

float가 전체 a/b의 결과에 대하여 cast 연산을 하고 있습니다. 연산자 우선순위로 볼 때 a/b가 먼저이고 그 이후에 float를 이용한 cast 연산이 나타납니다. 

 

 

public class MyClass {
    public static void main(String args[]) {
      int a=10;
      double b=a;
      
      double c=20.0;
      int d=c;      //error

      System.out.print(b+" "+d);
    }
}

 

 

위 예제에서는 정수형 int 값을 실수형인 double로 대입했을 때 나오는 결과물과 double로 선언된 변수를 정수형인 int에 반영했을 때 나타는 결과입니다. 

 

int d=c;에서 error가 발생하는데 이유는 double이 int보다 범위가 크기 때문에 큰 범위에 저장된 값은 작은 범위로 지정한 변수에 입력할 수가 없습니다. 이럴때 cast 연산을 사용해서 형 변환을 일으켜서 double을 int로 만들어야 합니다. 

 

 

 

public class MyClass {
    public static void main(String args[]) {
      int a=10;
      double b=a;
      
      double c=20.0;
      int d=(int)c;      

      System.out.print(b+" "+d);
    }
}

 

이렇게 하면 결과나 10.0 20으로 결과나 나옵니다. 

 

 

 

그리고, 출력물을 보면 println과 print 이렇게 혼용해서 사용하는데 println에서 ln은 line의 줄임말입니다. 

이후 결과는 다음줄에서 나타내라라고 하는 line의 줄임말로 ln을 사용하는데 ln이 없으면 옆에 글들이 붙여집니다. 

 

public class Test {
    public static void main(String[] args) {
        int a=1;
        int b=2;
        
        System.out.print(a);
        System.out.println(b);
        System.out.println(a);
        System.out.print(b);
    }
}

 

 

12
1
2

 

이렇게 결과물이 나타는데 무엇이 차이가 있는지 확인해 보시기 바랍니다. 

 

 

 

 

예시1) 

 

변수이름 선언할 때 중간에 특수문자가 오는 경우는 컴파일이 안됩니다. 

 

public class MyClass {
    public static void main(String args[]) {
      int x123=10;
      int y&1=25;
      int z=x123+y*1;

      System.out.println(z);
    }
}

 

 

이렇게 y&1 을 변수명으로 선언하면 &는 논리곱을 의미하기에 에러가 나옵니다. 

int y_1=25; 이렇게 변경하면 에러가 없이 컴파일 결과가 나타납니다. 

 

 

 

예시2)

 

public class MyClass {
    public static void main(String args[]) {
      int x=10;
      int y=25;
    
      System.out.println(x+y);
    }
}

 

이 예제의 결과는 1025일까요? 35일까요? 

답은 35입니다. 

 

정수형끼리의 + 기호는 뎃셈연산으로 계산되고 있습니다. 

 

연결자-concatenation인 +는 변수와 변수의 결합으로 사용되며 정수형 선언인 경우에는 연산으로 진행됩니다. 

 

 

 

1025를 나타내려면 다음과 같이 변경해야 합니다. 

 

public class MyClass {
    public static void main(String args[]) {
      int x=10;
      int y=25;
      
      System.out.println(x+""+y);
    }
}

 

이러면 결과가 1025가 나타납니다. 

 

+ 연결자가 ( ) 안에서 정수형(or 실수형)일 경우에는 연산이 이루어집니다. 

 

public class MyClass {
    public static void main(String args[]) {
      double x=10.56;
      double y=25.343;

 

      System.out.println(x+y);
    }
}

 

결과: 35.903

 

 

 

public class MyClass {
    public static void main(String args[]) {
      double x=10.56;
      double y=25.343;
      
      System.out.println(x+""+y);
    }
}

 

결과: 10.5625.343

'프로그래밍 언어론 > JAVA 기초' 카테고리의 다른 글

연산자  (2) 2022.08.21
class 와 method 정의  (8) 2022.08.14
기본형 데이터 형식, 참조형 데이터 형식  (25) 2022.05.29
JAVA 변수형식, 상수  (12) 2022.05.15
JAVA 언어 기본문법  (14) 2022.05.15