Tôi biết nó là bài cũ, nhưng nhìn vào trường hợp rất giống nhau và sau đó bỏ phiếu cho tôi: P
Trả lời câu hỏi ban đầu: chỉ có một toán hạng được đánh giá NHƯNG:
@Test
public void test()
{
Integer A = null;
Integer B = null;
Integer chosenInteger = A != null ? A.intValue() : B;
}
Thử nghiệm này sẽ ném NullPointerException
và trong trường hợp này IF statemat không tương đương với toán tử?:.
Lý do là ở đây http://docs.oracle.com/javase/specs/jls/se5.0/html/expressions.html#15.25. Phần về boxing/unboxing được lôi kéo, nhưng nó có thể được dễ dàng hiểu nhìn:
"If one of the second and third operands is of type boolean
and the type of the other is of type Boolean
, then the type of the conditional expression is boolean
."
cũng áp dụng như Integer.intValue()
Trân trọng!
Nguồn
2013-02-26 06:44:09
Cũng đơn giản là bạn chỉ có thể thử và xem điều gì xảy ra :) –
Cung cấp cho bạn thông tin về một trường hợp cụ thể. Tốt hơn để tìm những gì tiêu chuẩn nói. –