public class J {
public Integer method(Integer x)
{
Integer val = x;
try
{
return val;
}
finally
{
val = x + x;
}
}
public static void main(String[] args)
{
J littleFuzzy = new J();
System.out.println(littleFuzzy.method(new Integer(10)));
}
}
Nó sẽ trả về "10".Hành vi của tuyên bố trả lại khi bắt và cuối cùng là
Bây giờ tôi chỉ cần thay thế kiểu số nguyên trả về thành StringBuilder và đầu ra đã được thay đổi.
public class I {
public StringBuilder method(StringBuilder x)
{
StringBuilder val = x;
try
{
return val;
}
finally
{
val = x.append("aaa");
}
}
public static void main(String[] args)
{
I littleFuzzy = new I();
System.out.println(littleFuzzy.method(new StringBuilder("abc")));
}
}
ra là "abcaaa"
Vì vậy, Ai cũng có thể giải thích cho tôi một cách chi tiết.? sự khác biệt là gì.?
Tôi cũng bối rối khi tôi thực hiện chương trình này trên máy của mình. Trong trường hợp đầu tiên nó quay trở lại 10 (tôi đã mong đợi nó sẽ trở lại 20), trong trường hợp thứ hai nó trở về abcaaa (đó là sau khi phụ thêm). Tôi cũng bối rối trước hành vi này. (ở giữa tôi không phải là người đã bỏ phiếu cho nó.) – JProgrammer
Đó là một câu hỏi hay. Đã lấy lại một số kỷ niệm của cơ bản. Có gì sai với điều đó? – Siddharth