2011-12-15 31 views
5

Hãy xem đoạn mã sau trong Java. Tôi biết rằng tuyên bố temp[index] = index = 0; trong đoạn mã sau đây là khá nhiều không thể chấp nhận nhưng nó có thể là cần thiết trong một số trường hợp và do đó, có một cần phải biết.Chỉ định mảng chuỗi trong Java

package arraypkg; 

final public class Main 
{ 
    public static void main(String... args) 
    { 
     int[]temp=new int[]{4,3,2,1}; 
     int index = 1; 

     temp[index] = index = 0; 
     System.out.println("temp[0] = "+temp[0]); 
     System.out.println("temp[1] = "+temp[1]); 
    } 
} 

Nó hiển thị đầu ra sau trên console.

temp[0] = 4 
temp[1] = 0 

Tôi không hiểu tuyên bố này temp[index] = index = 0;. Làm thế nào để temp[1] chứa 0? Bài tập này diễn ra như thế nào?

+0

Bạn mong đợi gì về 'temp [1]'? –

+0

Tôi nghĩ rằng nó khá rõ ràng rằng ông hy vọng 'index' đầu tiên trở thành' 0' làm cho 'temp [index]' tương đương với 'temp [0]' để chỉ có phần tử đầu tiên được sửa đổi. –

+4

Tin nhắn mang về nhà ở đây phải là, không viết mã theo cách này. Biết được các bit khó hiểu của Java là một kỹ năng đáng kính, nhưng hầu hết là vô dụng. Mã như thế này chỉ đơn giản là không tồn tại, và nơi nó được tìm thấy nên được loại bỏ ngay lập tức. – rfeak

Trả lời

8

Bài tập được thực hiện (temp[index] = (index = 0)), đúng liên kết.

Nhưng trước tiên, biểu thức temp[index] được đánh giá cho biến LHS. Tại thời điểm đó index vẫn còn 1. Sau đó, RHS (index = 0) được thực hiện.

+1

+1 - Người đầu tiên trực tiếp giải quyết câu hỏi mà OP thực sự đang hỏi (về thứ tự đánh giá của LHS và RHS). –

+1

Bằng chứng hỗ trợ: http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#15.26.1 –

1

Báo cáo của bạn được gán không cho nó. Câu lệnh temp [index] = index = 0 đã viết 0 vào chỉ mục AND vào temp [index]. Đó là điều đó có nghĩa là gì. Chuyển tất cả các biến sang bên trái của toán tử gán 0.

1

Dòng nào có nghĩa là temp[index] phải bằng index sau index được gán giá trị 0.

Đây là lý do tại sao cú pháp này chủ yếu là không thể chấp nhận. Thật khó đọc và hầu hết mọi người không hiểu nó.

1

bạn đã gán cả nhiệt độ [1] và chỉ mục cho '0' nó chạy từ trái sang phải. nghĩ rằng nhiệt độ ass [index/* * /]

Các vấn đề liên quan