2012-03-09 25 views
6

Tôi muốn hiểu những gì hiện từ 'tĩnh' làm trong tiêu đề phương pháp 'writeNumbers' ?:ý nghĩa của 'tĩnh' trong tiêu đề phương thức là gì?

public class DisplayClass { 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 
     writeNumbers(); 
    } 

    public static void writeNumbers() 
    { 
     int count; 
     for(count=1; count<=20; count++) 
     { 
      System.out.println(count); 
     } 
    } 
} 

Trả lời

20

Thuật ngữ static có nghĩa là phương pháp có sẵn ở cấp Lớp và do đó không yêu cầu đối tượng được khởi tạo trước khi được gọi.

writeNumbers đã được gọi từ một phương pháp đó là bản thân static nó chỉ có thể gọi các phương thức tĩnh khác, trừ khi nó lần đầu tiên khởi tạo một đối tượng mới của DisplayClass sử dụng một cái gì đó như:

DisplayClass displayClass = new DisplayClass(); 

chỉ một lần đối tượng này đã được có thể gọi các phương thức không tĩnh, ví dụ:

displayClass.nonStaticMethod(); 
2

Từ Oracle Java Tutorial đúng nguyên văn:

Các ngôn ngữ lập trình Java hỗ trợ phương pháp tĩnh cũng dưới dạng biến tĩnh. Các phương thức tĩnh có trình sửa đổi tĩnh trong khai báo của chúng, cần được gọi với tên lớp mà không cần tạo một thể hiện của lớp ...

Bạn sẽ không phải khởi tạo lớp sử dụng phương pháp được đề cập. Bạn sẽ nạp phương thức đó vào các tham số thích hợp và nó sẽ trả về một số điều thích hợp.

0

Tĩnh thông báo cho trình biên dịch rằng phương thức không được liên kết với bất kỳ thành viên thể hiện nào của lớp mà nó được khai báo. Nghĩa là, phương thức được kết hợp với lớp chứ không phải với một thể hiện của lớp.

1

các phần tử tĩnh thuộc về lớp chứ không phải đối tượng.

vì vậy static method thuộc về lớp học có thể được truy cập trực tiếp như dưới đây.

public class MyClass{ 
public static void display(){ 
} 
.. 
.. 
} 
. 
. 
.. 
MyClass.display(); 
2

Để làm rõ câu trả lời của Crollster, tôi muốn chỉ ra 2 điều.

Đầu tiên:

Bằng cấp lớp, nó có nghĩa là bạn có thể truy cập nó bằng cách gõ "DisplayClass.writeNumbers()", mỗi ví dụ của bạn trong câu hỏi, mà không bao giờ cần phải sử dụng "DisplayClass mới();" .

Thứ hai:

Bằng cấp lớp, nó cũng có nghĩa là các cơ sở mã không được sao chép vào bất kỳ trường hợp, do đó bạn nhận được một bộ nhớ nhỏ hơn.

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