Trình biên dịch java thực sự tạo một StringBuilder
và gọi phương thức append()
. Nó có thể được nhìn thấy trong các byte-code:
22 invokespecial java.lang.StringBuilder(java.lang.String) [40]
...
29 invokevirtual java.lang.StringBuilder.append(int) : java.lang.StringBuilder [47]
32 invokevirtual java.lang.StringBuilder.toString() : java.lang.String [51]
Tuy nhiên, hành vi này là giống hệt nhau lại sàn đấu và sau đó gọi toString()
: "Four" + new Integer(4).toString()
- mà tôi tin những gì các nhà thiết kế ngôn ngữ đã có trong tâm trí.
(1) Chính xác hơn, các biên dịch đã concatting chuỗi chữ và int đen thành một chuỗi đơn đen "Four4"
. Bạn có thể nhìn thấy nó trong các mã byte trong dòng sau trong byte-code:
0 ldc <String "Four4"> [19]
Bạn đang sử dụng ngôn ngữ nào? – skunkfrukt
Hình như Java để tôi – TeaOverflow
nếu bạn nói về C#, nhìn vào đây: [chuỗi concat] [1] [1]: http: // stackoverflow.com/questions/3398604/string-string-int-whats-đằng sau-cảnh-c – meirrav