비전공자의 개발과 친해지기/연산자

[JAVA : 연산자]4. 연산자의 우선순위 및 문자열의 연결

justdoIT0730 2022. 4. 8. 09:55
728x90
728x90

- 연산자의 우선순위

 연산자가 한 줄의 코드에 여러 개 존재할 경우, 각 연산자가 실행되는 순서는 연산자의 우선순위에 의해 실행됩니다.

 

 

 

- 문자열의 연결

(+) 연산자는 산술연산자의 덧셈 연산자로 사용되지만, 문자열을 결합할 때도 사용할 수가 있습니다. 

 

import java.io.*;

class Main {
    public static void main(String[] args) {
        int i = 3;
        int j = 1;

        // 문자열 연결을 사용하지 않고 표시
        System.out.print("1줄의 문자열을 ");
        System.out.print(i);
        System.out.println("줄의 코드로 표시하고 있습니다.");

        // 문자열 연결을 사용해서 표시
        System.out.println("실은 " + j + "줄의 코드로 표시할 수 있습니다.");

        // 연산자 우선순위에 의한 문자열 연결과 계산의 순서를 확인
        System.out.println("i + j = " + i + j);
        System.out.println("i + j = " + (i + j));
    }
}

 

 9~11번째 줄의 소스코드를 보면 print() 메소드와 println() 메소드를 사용하고 있는 것을 볼 수 있습니다. 두 메서드의 사용방법은 거의 동일하나 차이점은 print() 메소드의 경우에는 줄 바꿈이 없이 출력하고, println() 메소드의 경우에는 출력 후 줄바꿈이 됩니다.

 

 이 차이점을 이용하여 3줄의 코드 결과 값을 1줄로 출력하도록 표시하였습니다. 이렇게 사용할 경우, 중간에 사용하는 변수의 개수가 늘을수록 소스코드의 줄 수는 늘을 수밖에 없습니다.

 그리고, 프로그래밍을 하다 보면 여러 개의 문자열을 하나로 만들어야 하는 경우도 생깁니다. 이럴 경우 문자열을 연결하기 위해 사용하는 연산자가 + 연산자입니다.

 

 

 

 

14번째 줄의 소스코드는 위와 비슷한 코드를 + 연산자를 이용하여 1줄의 코드로 나타내었습니다. 

 

 

 

 17~18번째 줄의 소스코드는 문자열 연결과 산술 연산을 동시에 사용하였을 때의 처리결과를 알아보기 위한 코드입니다.

17번째 줄의 코드를 보면 "i + j = "라는 문자열을 출력하고 이어서 i + j의 결괏값을 출력할 목적으로 작성 한 코드인데, 실제 실행시켜 보면 결괏값은 " i + j = 31 " 라고 출력되는 것을 확인할 수 있습니다. 

  이렇게 출력되는 이유는 앞에서 배웠던 연산자의 우선순위 문자열에서의 + 연산자 처리방법과 관련되어 있습니다. 

 

 

 

 같은 순위 연산자의 처리 순서는 가장 왼쪽부터 처리되어집니다. 그리고, 문자열 다음에 + 연산자가 오게 되면 다음 항은 자료형과 상관없이 문자열로 처리하여 문자열을 연결시킵니다. 그래서 "i + j = "의 문자열에 이어서 변수 i의 값인 3이 문자열로 연결되어 "i + j = 3"인 문자열로 중간 결괏값으로 가지고 있습니다.

 다음 연산에서 다시 + j 연산이 나와서 + 연산자의 왼쪽 항의 값은 "i + j = 3"이라는 문자열이고 오른쪽 항의 값은 j 변수가 가지고 있는 1 이어서 문자열 연결로 처리하게 됩니다. 그러므로 연산의 최종 결괏값은"i + j = 31"인 문자열이 되어 출력된 것입니다.

 

 

 

 문자열 결합과 산술 연산이 혼재되어 있는 경우에는 ()를 이용하여 산술 연산의 우선순위를 높이는 것으로 해결할 수 있습니다. 18번째 줄의 소스코드가 결괏값이 제대로 나오게 수정한 소스코드입니다.

 
728x90
728x90