"Khoảng trống tĩnh" có nghĩa là gì trong Java?


149

Không gì public static voidcó nghĩa là trong Java?

Tôi đang trong quá trình học tập. Trong tất cả các ví dụ trong cuốn sách tôi đang làm việc public static voidxuất hiện trước bất kỳ phương pháp nào đang được sử dụng hoặc tạo ra. Điều đó có nghĩa là gì?

Câu trả lời:


230

Đó là ba điều hoàn toàn khác nhau:

publiccó nghĩa là phương thức có thể nhìn thấy và có thể được gọi từ các đối tượng khác thuộc các loại khác. Lựa chọn thay thế khác là private, protected, packagepackage-private. Xem ở đây để biết thêm chi tiết.

staticcó nghĩa là phương thức được liên kết với lớp, không phải là một thể hiện (đối tượng) cụ thể của lớp đó. Điều này có nghĩa là bạn có thể gọi một phương thức tĩnh mà không cần tạo một đối tượng của lớp.

voidcó nghĩa là phương thức không có giá trị trả về. Nếu phương thức trả về, intbạn sẽ viết intthay vìvoid .

Sự kết hợp của cả ba điều này thường thấy nhất trên mainphương pháp mà hầu hết các hướng dẫn sẽ bao gồm.


12
Vì người hỏi vẫn đang học: thứ tự của các từ khóa này cũng rất quan trọng. Tất cả các từ bổ nghĩa đầu tiên ( public, static, private, vv) thì kiểu trả về ( voidtrong trường hợp này).
Pindatjuh

1
@markbyres ok tôi hiểu bạn trả lời, tôi biết phương thức chính phải tĩnh nhưng tôi không biết tại sao nó lại công khai ?? Có bất kỳ lý do cụ thể cho điều đó ??
hardik

9
môi trường thời gian chạy java phải gọi phương thức chính để khởi động ứng dụng của bạn. Nó không thể làm điều đó khi nó là riêng tư.
Philipp

44

Ba từ có ý nghĩa trực giao.

public có nghĩa là phương thức sẽ hiển thị từ các lớp trong các gói khác.

staticcó nghĩa là phương thức này không được đính kèm với một thể hiện cụ thể và nó không có " this". Nó ít nhiều là một chức năng.

voidlà loại trả về. Nó có nghĩa là "phương pháp này không trả về gì".


22

Công chúng từ khóa là một specifier truy cập, cho phép các lập trình viên để kiểm soát khả năng hiển thị của các thành viên lớp. Khi một thành viên của lớp được đi trước bởi công chúng, thì thành viên đó có thể được truy cập bằng mã bên ngoài lớp mà nó được khai báo. (Đối lập với công khai là riêng tư, điều này ngăn thành viên không được sử dụng bởi mã được xác định bên ngoài lớp.)

Trong trường hợp này, main( )phải được khai báo là công khai, vì nó phải được gọi bằng mã bên ngoài lớp khi chương trình được khởi động.

Từ khóa tĩnh cho phép main( )được gọi mà không cần phải khởi tạo một thể hiện cụ thể của lớp. Điều này là cần thiết vìmain( ) được trình thông dịch Java gọi trước khi bất kỳ đối tượng nào được tạo.

Từ khóa void chỉ đơn giản là thông báo cho trình biên dịch main( )không trả về giá trị. Như bạn sẽ thấy, các phương thức cũng có thể trả về các giá trị.


18

Nó có nghĩa là:

  • public - nó có thể được gọi từ bất cứ đâu
  • static - nó không có bất kỳ trạng thái đối tượng nào, vì vậy bạn có thể gọi nó mà không cần khởi tạo một đối tượng
  • void - nó không trả lại bất cứ thứ gì

Bạn nghĩ rằng việc thiếu lợi nhuận có nghĩa là nó không hoạt động nhiều, nhưng nó có thể đang lưu những thứ trong cơ sở dữ liệu chẳng hạn.


4

Nó có nghĩa là ba điều.

Đầu tiên publiccó nghĩa là bất kỳ đối tượng khác có thể truy cập nó.

static có nghĩa là lớp mà nó cư trú không phải được khởi tạo trước khi hàm có thể được gọi.

void có nghĩa là hàm không trả về giá trị.

Vì bạn chỉ đang học, đừng lo lắng về hai cái đầu tiên quá nhiều cho đến khi bạn tìm hiểu về các lớp học, và cái thứ ba sẽ không còn quan trọng cho đến khi bạn bắt đầu viết các chức năng (ngoài chính là).

Lời khuyên tốt nhất tôi nhận được khi học lập trình, và điều mà tôi truyền lại cho bạn, là đừng lo lắng về những chi tiết nhỏ bạn không hiểu ngay lập tức. Nhận một cái nhìn bao quát về các nguyên tắc cơ bản, sau đó quay lại và lo lắng về các chi tiết. Lý do là bạn phải sử dụng một số thứ (như public static void) trong các chương trình đầu tiên của mình, điều này thực sự không thể giải thích được nếu không dạy bạn về một loạt các thứ khác trước. Vì vậy, hiện tại, hãy chấp nhận rằng đó là cách nó được thực hiện và tiếp tục. Bạn sẽ hiểu chúng trong thời gian ngắn.


3

Xem xét các lớp cấp cao điển hình. Chỉ có thể sử dụng công cụ sửa đổi truy cập công khai và không có công cụ sửa đổi ở cấp cao nhất để bạn sẽ thấy công khai hoặc bạn sẽ không thấy bất kỳ công cụ sửa đổi truy cập nào cả.

`static`` được sử dụng vì bạn có thể không có nhu cầu tạo một đối tượng thực tế ở cấp cao nhất (nhưng đôi khi bạn sẽ muốn để không phải lúc nào bạn cũng có thể nhìn thấy / sử dụng tĩnh. Có những lý do khác khiến bạn không bao gồm tĩnh quá nhưng đây là một điển hình ở cấp cao nhất.)

voidđược sử dụng vì thông thường bạn sẽ không trả về giá trị từ cấp cao nhất (lớp). (đôi khi bạn sẽ muốn trả về một giá trị khác ngoài NULLkhoảng trống có thể không luôn luôn được sử dụng, đặc biệt là trong trường hợp khi bạn đã khai báo, khởi tạo một đối tượng ở cấp cao nhất mà bạn đang gán một số giá trị).

Tuyên bố miễn trừ trách nhiệm: Bản thân tôi là người mới nên nếu câu trả lời này sai trong bất kỳ cách nào, xin đừng treo cổ tôi. Ban ngày tôi là một nhà tuyển dụng công nghệ không phải là nhà phát triển; mã hóa là sở thích của tôi. Ngoài ra, tôi luôn cởi mở với những lời chỉ trích mang tính xây dựng và thích tìm hiểu vì vậy xin vui lòng chỉ ra bất kỳ lỗi nào.


2
  • public có nghĩa là bạn có thể truy cập lớp từ bất cứ nơi nào trong lớp / đối tượng hoặc bên ngoài gói hoặc lớp
  • static có nghĩa là hằng số trong đó khối lệnh chỉ được sử dụng 1 lần
  • void có nghĩa là không có loại trả lại

6
Câu hỏi này đã được bảo hiểm đầy đủ, có lẽ hãy thử trả lời các câu hỏi mới thay vì trả lời các câu hỏi cũ hơn với thông tin trùng lặp. Cảm ơn.
Kev

Nó giống như giải thích về con voi. Mọi người cố gắng giải thích nó phụ thuộc vào nơi anh ta đứng. Tôi hài lòng với tất cả các câu trả lời ở trên, nhưng chỉ tự hỏi làm thế nào bất kỳ ai có thể nói "Mua một cuốn sách java".
Sulung Nugroho

2

Public - có nghĩa là lớp (chương trình) có sẵn để sử dụng bởi bất kỳ lớp nào khác.

Static- tạo ra một lớp. Cũng có thể được áp dụng cho các biến và phương thức, biến chúng thành các phương thức / biến lớp thay vì chỉ cục bộ cho một thể hiện cụ thể của lớp.

Void- điều này có nghĩa là không có sản phẩm nào được trả về khi lớp hoàn thành xử lý. So sánh điều này với các lớp của trình trợ giúp cung cấp giá trị trả về cho lớp chính, các lớp này hoạt động giống như các hàm; những điều này không có khoảng trống trong tuyên bố.


0

staticcó nghĩa là phương thức được liên kết với lớp, không phải là một thể hiện (đối tượng) cụ thể của lớp đó. Điều này có nghĩa là bạn có thể gọi một phương thức tĩnh mà không cần tạo một đối tượng của lớp. Do sử dụng statictừ khóa main()là phương thức đầu tiên của bạn được gọi .. statickhông cần bất kỳ đối tượng nào ... vì vậy, main( )được trình thông dịch Java gọi trước khi bất kỳ đối tượng nào được tạo.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.