2017-09-17 1 views
-4

enter image description here ("bc" + 2 + 3)에 대한 두 가지 답변이있는 이유는 무엇입니까? 그리고 (2 + 3 + "bc") 난 단지 "bc"32의 순서를 변경하지만 시스템은 또한 사전에왜 두 가지 결과가 있습니까?

감사 완전히 다른 답변을 제공

+4

평가 순서 – UnholySheep

+0

A [mcve]을 입력하세요 때문에, 예를 들어 작업 코드 예제 및 샘플 출력 – juzraai

+0

질문을 수정하고 스크린 샷 대신 코드와 출력을 복사/붙여 넣기하십시오. 색인 생성이 훨씬 쉽게됩니다. –

답변

3

+ 작품 모두 연산뿐만 아니라 연결 연산자로. 그리고 모든 표현은 왼쪽에서 오른쪽으로 실행됩니다. 따라서 2 + 3 + "bc"의 경우 산술 연산자로 2와 3을 추가 한 다음 한쪽에 문자열이 있고 다른쪽에 숫자가있는 경우 해당 시간에 연결 연산자로 작동합니다.

0

+을 사용하여 문자열에 어떤 것이 추가 될 때 Java는 해당 문자열을 문자열에 연결하려는 것으로 처리합니다.

각 사례를 살펴 보겠습니다.

"bc" + 2 + 3 

+

2는 좌측의 피연산자가 먼저 평가 즉 왼쪽부터 결합된다. 이 경우는 "bc" + 2입니다. 이 값은 "bc2"입니다. 그런 다음 "bc2" + 3을 평가하여 "bc23"을 산출합니다.

2 + 3 + "bc" 

개의 최 좌측 피연산자 제 평가 : 2 + 3 표현식에는 캐릭터가 없기 때문이다 5. 평가. +은 수학적으로 더하기를 수행합니다. 그런 다음 5 + "bc"을 평가하여 "5bc"을 산출합니다.

0

자바가 왼쪽에서 오른쪽으로 작업을 읽습니다. 첫 번째 변수가 문자열이면 나머지 값이 연결됩니다. 두 번째 경우에는 먼저 숫자를 합산 한 다음 그 값을 다음 문자열로 연결해야합니다. 첫 번째 경우 : "bc23"이고 두 번째 경우는 "23bc"입니다.

0

첫 번째 자바에 문자열 값을 입력하면 처음 두 값을 계산할 수 없다면 모든 값을 문자열로 처리합니다.
여기에 기본 개념을 이해하는 데 도움이되는 예제 코드가 나와 있습니다.

public static void main(String[] args) { 
    // TODO code application logic here 
    System.out.println("bc"+2+3); //bc23 
    System.out.println("bc"+(2+3)); //bc5 
     System.out.println(2+3+"bc"); //5bc 
     System.out.println(2+3+"bc"+2+3); //5bc23 
     System.out.println("bc"+2+3==2+3+"bc");// false 

    } 
enter image description here

관련 문제