Java 7 hỗ trợ chuyển đổi với Strings
như mã dưới đâyCâu lệnh switch của Java 7 có sử dụng phương thức equals() bằng String không?
switch (month.toLowerCase()) {
case "january":
monthNumber = 1;
break;
case "february":
monthNumber = 2;
break;
default:
monthNumber = 0;
break;
}
Liệu Java gọi equals()
phương pháp theo từng trường hợp String
? Hoặc nó dựa trên ==
hoặc intern()
?
Đây có phải là chỉ đơn giản là tương đương với:
String month = month.toLowerCase();
if("january".equals(month)){
monthNumber = 1;
}else if("february".equals(month)){
monthNumber = 1;
}..
UPDATE:
Các String trong sự biểu hiện chuyển đổi được so sánh với các biểu thức gắn liền với từng trường hợp nhãn như thể phương pháp
String.equals
là đang được sử dụng.
Vì tài liệu chỉ ra rằng hành vi như thể là equals()
được gọi.
1) Tôi nghĩ rằng nó sẽ phải, vì nó không có ý nghĩa nếu nó không, phải không? 2) Bạn đã xem mã nguồn chưa? –
@HovercraftFullOfEels - Nó có thể sử dụng '==' và dựa vào 'intern' - nhưng tôi nghĩ rằng sẽ phá vỡ trong nhiều trường hợp. – OldCurmudgeon
@OldCurmudgeon: quá mạo hiểm, tôi nghĩ vậy. –