자바 시작한지 얼마안된 초보가 문의를 드립니다.

nana588의 이미지

public class OperatorEx5 {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
byte b= 10;
System.out.println("b="+b);
System.out.println("~b="+~b);
System.out.println("~b+1="+~b+1);

}
이런식으로 작성하고 돌려보았을때
~b+1은 -10이 나와야합니다. 근데 111이 나오네요.
코딩을 확인할때 +(~b+1) 이렇게 하면 잘-10이 나오지만 +~b+1은 왜 111이 나오는지 이해할수가 없어서 문의를 드립니다. 답변 기달리겠습니다.

익명 사용자의 이미지

"~b+1="+~b+1
=("~b+1="+(~b))+1
=("~b+1="+(-11))+1
=("~b+1="+"-11")+1
="~b+1=-11"+1
="~b+1=-11"+"1"
="~b+1=-111"

익명 사용자의 이미지

이 분 말을 좀 더 풀어서 설명하면, + 연산자가 적용되는 순서 때문입니다.

첫번째 + 의 결과는 문자열("~b+1=-11")이 되고, 그 문자열에다 두번째 + 를 하면 "1"이라는 문자열이 덧붙겠죠.

만약 "~b+1="+(~b+1) 이라고 하셨으면, 예상하신 결과가 나왔겠죠.

nana588의 이미지

댓글 내용 지금 확인했습니다. 왜 111이 되는지를 알겠네요 +1이 문자화되서 그런거였군요
감사합니다.