2014-02-06 2 views
1

가변 문자열은 정수 값을 받아 들일 수 있습니까? 또는 정수를 문자열과 연결할 수 있습니까?문자열에서 정수를 허용하는 방법은 무엇입니까?

예 : 문자열이 정수와 연결하기 때문에

public class TestString1 { 
     public static void main(String[] args) { 
     String str = "420"; 
     str += 42; 
     System.out.print(str); 
    } 
} 

내가 여기에 컴파일 오류를 기대하고 있었다.

답변

0

Stringint을 추가하면 int가 문자열에 추가되어 int가 문자열로 변환됩니다.

+0

비교를 위해, 'System.out.print ("값은"+42 "입니다.)를 고려하십시오. 문자열에 추가하는 것은 추가하는 것을 의미하며 필요한 경우 두 번째 인수를 문자열로 변환하는 것을 의미합니다. – keshlam

0

큰 따옴표로 묶인 것은 모두 문자열이며 +은 문자열을 임의의 값 (int 값)으로 연결하는 것입니다.
그래서 정수 값이 문자열에 추가됩니다. 여기

String str = "420"; 
    str += 42; // 42 will be appended to 420 and result will be 42042 
2
문자열 concatination 연산자

JLS 문서 (+) -

15.18.1 String Concatenation Operator +

하나의 피연산자 식 String 타입이면 문자열 변환은 다른 피연산자에 대해 수행된다 런타임에 문자열을 생성합니다. 결과는 두 피연산자 문자열의 연결 인 표현식이 컴파일 시간 상수 표현 (§15.28)이 아니면 새로 작성된 문자열 객체에 대한 참조입니다. 왼쪽 피연산자의 문자는 새로 생성 된 문자열의 오른쪽 피연산자 문자보다 앞에옵니다. 유형 문자열의 피연산자가 null의 경우, 문자열 "null가"문자열 + INT는 오류를 생성하지 않는 이유입니다 피연산자

대신 사용됩니다. 그리고 그것은 인쇄합니다 42042

1

다른 답변은 실제로 여기에서 실행되는 것을 설명하지 못했습니다.

귀하의 코드가 같은 것을 변환됩니다

:

String str = "420"; 

// str += 42; 
StringBuilder sb = new StringBuilder(str); 
sb.append(42); // which internally does something similar to String.valueOf() 
str = sb.toString(); 

System.out.print(str); 
0

X = 20, Y = 10

나는 아래 낮음에서 높은 우선 순위의 순서를 보여주는 오전 :

B - 브라켓 O - 전원 DM - 나누기 및 곱하기 AS - 더하기 및 빼기

T 운영자가

이제 우선 순위가 같은 경우 왼쪽에서 그의 작품은 오른쪽으로

에서 System.out.println ("인쇄 :"+ X + Y);

는 "인쇄 :"문자열 "

"인가 + ": 문자열에 숫자을 연결합니다 자바에서 유일하게 오버로드 된 연산자입니다.여기에 2 "+"연산자가 있고, x + y는 이미 "print :"+ 뒤에옵니다. x와 y도 문자열로 간주합니다.

그래서, 출력은 2010

에서 System.out.println하다 ("인쇄"+ X * Y); 여기

"*"+

그래서 출력은 200

이처럼 수행 +

너무 X * Y 먼저 인쇄보다 더 높은 우선 순위를 가지고 첫 번째 경우 200을 출력하려는 ​​경우 :

System.out.println ("printing :"+ (x + y));

브래킷의 우선 순위가 추가보다 높습니다.

관련 문제