Các thành phần bắt buộc duy nhất của một khai báo phương thức là kiểu trả về của phương thức, tên, một cặp dấu ngoặc đơn,
run runFast getBackground getFinalData compareTo setX isEmpty9 và phần thân giữa các dấu ngoặc nhọn,
calculateAnswer[double, int, double, double]0
Tổng quát hơn, khai báo phương thức có sáu thành phần, theo thứ tự
- Công cụ sửa đổi — chẳng hạn như
calculateAnswer[double, int, double, double]
1,calculateAnswer[double, int, double, double]
2 và những công cụ khác mà bạn sẽ tìm hiểu sau - Kiểu trả về—kiểu dữ liệu của giá trị được trả về bởi phương thức hoặc
calculateAnswer[double, int, double, double]
3 nếu phương thức không trả về giá trị - Tên phương thức—các quy tắc cho tên trường cũng áp dụng cho tên phương thức, nhưng quy ước hơi khác một chút
- Danh sách tham số trong ngoặc đơn—một danh sách các tham số đầu vào được phân tách bằng dấu phẩy, trước các loại dữ liệu của chúng, được bao quanh bởi dấu ngoặc đơn,
run runFast getBackground getFinalData compareTo setX isEmpty
9. Nếu không có tham số, bạn phải sử dụng dấu ngoặc đơn rỗng - Một danh sách ngoại lệ—sẽ được thảo luận sau
- Phần thân của phương thức, nằm giữa các dấu ngoặc nhọn—mã của phương thức, bao gồm cả phần khai báo các biến cục bộ, ở đây
Công cụ sửa đổi, kiểu trả về và tham số sẽ được thảo luận sau trong bài học này. Ngoại lệ được thảo luận trong một bài học sau
Sự định nghĩa. Hai trong số các thành phần của khai báo phương thức bao gồm chữ ký phương thức—tên của phương thức và các loại tham sốChữ ký của phương thức được khai báo ở trên là
calculateAnswer[double, int, double, double]
Đặt tên cho một phương pháp
Mặc dù tên phương thức có thể là bất kỳ mã định danh hợp pháp nào, quy ước mã giới hạn tên phương thức. Theo quy ước, tên phương thức phải là một động từ viết thường hoặc tên nhiều từ bắt đầu bằng một động từ viết thường, theo sau là tính từ, danh từ, v.v. Trong các tên có nhiều từ, chữ cái đầu tiên của mỗi từ thứ hai và các từ tiếp theo phải được viết hoa. Dưới đây là một số ví dụ
run runFast getBackground getFinalData compareTo setX isEmpty
Thông thường, một phương thức có một tên duy nhất trong lớp của nó. Tuy nhiên, một phương thức có thể trùng tên với các phương thức khác do nạp chồng phương thức
phương pháp quá tải
Ngôn ngữ lập trình Java hỗ trợ nạp chồng các phương thức và Java có thể phân biệt giữa các phương thức có chữ ký phương thức khác nhau. Điều này có nghĩa là các phương thức trong một lớp có thể có cùng tên nếu chúng có các danh sách tham số khác nhau [có một số tiêu chuẩn về điều này sẽ được thảo luận trong bài học có tiêu đề "Giao diện và Kế thừa"]
Giả sử rằng bạn có một lớp có thể sử dụng thư pháp để vẽ các loại dữ liệu khác nhau [chuỗi, số nguyên, v.v.] và có chứa một phương thức để vẽ từng loại dữ liệu. Thật khó để sử dụng một tên mới cho mỗi phương thức—ví dụ:
calculateAnswer[double, int, double, double]0,
calculateAnswer[double, int, double, double]1,
calculateAnswer[double, int, double, double]2, v.v. Trong ngôn ngữ lập trình Java, bạn có thể sử dụng cùng một tên cho tất cả các phương thức vẽ nhưng chuyển một danh sách đối số khác cho mỗi phương thức. Như vậy, lớp vẽ dữ liệu có thể khai báo bốn phương thức có tên là
calculateAnswer[double, int, double, double]3, mỗi phương thức có một danh sách tham số khác nhau
public class DataArtist { ... public void draw[String s] { ... } public void draw[int i] { ... } public void draw[double f] { ... } public void draw[int i, double f] { ... } }
Các phương thức quá tải được phân biệt bởi số lượng và loại đối số được truyền vào phương thức. Trong mẫu mã,
calculateAnswer[double, int, double, double]4 và
calculateAnswer[double, int, double, double]5 là các phương thức riêng biệt và duy nhất vì chúng yêu cầu các loại đối số khác nhau
Bạn không thể khai báo nhiều hơn một phương thức có cùng tên, cùng số lượng và loại đối số, vì trình biên dịch không thể phân biệt chúng
Trình biên dịch không xem xét kiểu trả về khi phân biệt các phương thức, vì vậy bạn không thể khai báo hai phương thức có cùng chữ ký ngay cả khi chúng có kiểu trả về khác nhau
ngói kim cương. Viết chương trình DiamondTile. java nhận một đối số dòng lệnh N và tạo một ô kim cương N-by-N. Bao gồm các phương thức tĩnh diamond[] và fillDiamond[]
gạch lục giác. Viết chương trình HexTile. java nhận một đối số dòng lệnh N và tạo một ô hình lục giác N-by-N. Bao gồm các phương thức tĩnh hexagon[] và fillHexagon[]
Phân phối tích lũy Gaussian nghịch đảo. Giả sử điểm toán SAT có phân phối chuẩn với trung bình 500 và độ lệch chuẩn. Ước tính học sinh phải đạt điểm cao bao nhiêu để lọt vào top 10%. Để làm điều này, bạn cần tìm giá trị z sao cho Φ[z, 500, 100] = 0. 9. Dấu. sử dụng tìm kiếm nhị phân
điểm SAT. Một trường đại học nổi tiếng phía đông bắc nhận được 20.000 đơn đăng ký của sinh viên. Giả sử rằng điểm SAT của những cá nhân này được phân phối bình thường với trung bình 1200 và độ lệch chuẩn 100. Giả sử trường đại học quyết định nhận 5.000 sinh viên có điểm SAT cao nhất. Ước tính điểm thấp nhất vẫn sẽ được nhận
máy bỏ phiếu. Giả sử trong dân số 100 triệu cử tri, 51% bầu cho ứng cử viên A và 49% bầu cho ứng cử viên B. Tuy nhiên, các máy bỏ phiếu dễ mắc lỗi và 5% thời gian chúng đưa ra câu trả lời sai. Giả sử các lỗi được thực hiện một cách độc lập và ngẫu nhiên, liệu tỷ lệ lỗi 5% có đủ để làm mất hiệu lực kết quả của một cuộc bầu cử sát sao không?
Biểu đồ của người đánh bạc. Viết chương trình RandomWalk. java nhận một tham số dòng lệnh M và mô phỏng một người đánh bạc bắt đầu bằng M, người đặt chính xác M cược một đô la
- Tạo biểu đồ về số tiền mà người chơi cờ bạc thu được bằng cách chạy thử nghiệm này N lần
- Số tiền mà con bạc thu được tuân theo phân phối nhị thức với trung bình M và phương sai N/4. Phân phối có thể được xấp xỉ bằng một phân phối bình thường với cùng một giá trị trung bình và phương sai. Tạo một biểu đồ trong khoảng thời gian mà bạn mong muốn người đánh bạc kết thúc với số tiền trong mỗi thùng biểu đồ
Lấy mẫu thống kê. Viết chương trình Lấy mẫu. java lấy một mẫu ngẫu nhiên gồm N người và hỏi họ một câu hỏi có/không. Tính khoảng tin cậy 95%
bài xì dách. Viết chương trình Blackjack. java chơi chiến thuật cơ bản hay viết chương trình BlackjackCounter. java triển khai hệ thống đếm thẻ cao thấp
Wavelet. Các ứng dụng cho thị giác máy tính, thị giác con người, xử lý giọng nói, nén cơ sở dữ liệu dấu vân tay của FBI, lọc dữ liệu nhiễu, phát hiện sự tương tự trong chuỗi thời gian, tổng hợp âm thanh, đồ họa máy tính, hình ảnh y tế, phân tích sự kết tụ của các thiên hà và phân tích nhiễu loạn. Hàm Haar được xác định bởi Φ[x] = 1 nếu 0 ≤ x < 1/2, Φ[x] = -1 nếu 1/2 ≤ x < 1 và Φ[x] = 0 nếu ngược lại. Đối với số nguyên m và n, hàm cơ sở Haar Φm,n[x] = 2-m/2 Φ[2-mx - n]. Viết chương trình Haar. java nhận hai đầu vào số nguyên M và N, và một đầu vào thực x và in ra Φm,n[x]. Hoặc có thể âm mưu nó?
bài baccarat. Baccarat là một trò chơi bài đơn giản đã được lãng mạn hóa trong phim James Bond. Khi người chơi được chia chín, người chia bài tuyên bố "neuf a la banque". Viết chương trình xác định cơ hội chiến thắng của bạn
public boolean areCollinear[int x1, int y1, int x2, int y2, int x3, int y3]
trả về true nếu ba điểm [x1, y1], [x2, y2] và [x3, y3] nằm trên cùng một đường thẳng và trả về false nếu không
Tích phân không có nghiệm dạng đóng xét về hàm sơ cấp nên ta dùng xấp xỉ. Khi z không âm, ước tính phù hợp Ch Quashev dưới đây chính xác đến 7 chữ số có nghĩa
Nếu z âm, hãy sử dụng danh tính erf[z] = -erf[-z]. Một cách đặc biệt hiệu quả để thực hiện nó là thông qua việc sử dụng hợp lý các dấu ngoặc đơn được gọi là phương pháp của Horner. Viết hàm erf[] trong ErrorFunction. java lấy một đầu vào thực z và tính toán hàm lỗi bằng công thức trên
- nếu x là 7 hoặc 11, bạn thắng ngay lập tức
- nếu x là 2, 3 hoặc 12, bạn thua ngay lập tức
- mặt khác, liên tục tung hai con xúc xắc cho đến khi tổng của chúng là x hoặc 7
- nếu tổng của họ là x, bạn thắng
- nếu tổng của họ là 7, bạn thua
chương trình craps. java nhận tham số dòng lệnh N và mô phỏng N lần đặt cược. Tổ chức của chương trình được hưởng lợi từ hai chức năng trợ giúp. sumOfTwoDice và thắngPassBet. Cả hai hàm đều có một tính năng thú vị - chúng không nhận bất kỳ đối số đầu vào nào. Chức năng đầu tiên mô phỏng việc ném hai con xúc xắc. Điều này trả về một số nguyên từ 2 đến 12, nhưng không phải tất cả các giá trị đều có khả năng như nhau. Để mô phỏng xác suất một cách chính xác, chúng tôi gọi StdRandom. random[6] hai lần và một để tạo số từ 1 đến 6. Sau đó, chúng tôi thêm hai giá trị. Hàm thứ hai trả về giá trị boolean. đúng nếu chúng tôi thắng cược vượt qua và sai nếu không. Hàm này có một số câu lệnh trả về. Ngay khi cái đầu tiên được thực thi, hàm sẽ kết thúc với giá trị trả về đã cho
run runFast getBackground getFinalData compareTo setX isEmpty0
3 a1 + 7a2 + a3 + 3a4 + 7a5 + a6 +3a7 +7a8 +a9 mod 10 = 0Kiểm tra tham chiếu chữ số
- Viết một phương thức fv tính toán số tiền bạn sẽ có nếu hôm nay bạn đầu tư C đô la với lãi suất kép của r mỗi kỳ, trong T kỳ. Công thức cho giá trị tương lai được đưa ra bởi C*[1 + r]^T
- Viết phương pháp pv tính toán số tiền sẽ phải được đầu tư ngay bây giờ, với lãi suất kép r mỗi kỳ, để thu được dòng tiền C trong T kỳ. Công thức cho giá trị hiện tại được đưa ra bởi C/[1 + r]^T
run runFast getBackground getFinalData compareTo setX isEmpty1
Giá trị lớn nhất của n mà hàm của bạn có thể xử lý mà không bị tràn là bao nhiêu?
run runFast getBackground getFinalData compareTo setX isEmpty2
Câu trả lời. Hàm được khai báo để trả về giá trị kiểu int. Câu lệnh return đầu tiên là sai vì nó không trả về gì cả. Câu lệnh return thứ hai sai vì nó trả về giá trị kiểu double
run runFast getBackground getFinalData compareTo setX isEmpty3
Câu trả lời. Nó in 17 hai lần. Một hàm không thể thay đổi giá trị của một biến kiểu nguyên thủy trong một hàm khác
run runFast getBackground getFinalData compareTo setX isEmpty4
Câu trả lời. bạn không thể hy vọng kiểm tra nó trên mọi đầu vào có thể tưởng tượng được vì có 2128 đầu vào có thể khác nhau. Thay vào đó, hãy kiểm tra nó trên cả 4. = 24 trường hợp tùy thuộc vào a < b, a < c,. , c < đ. Hoặc tất cả 4^4 hoán vị của 0, 1, 2 và 3
run runFast getBackground getFinalData compareTo setX isEmpty5
Nó khai báo lại biến y khi gọi hàm sqrt[]
run runFast getBackground getFinalData compareTo setX isEmpty6
run runFast getBackground getFinalData compareTo setX isEmpty7
Dung dịch. Thông thường, các quy tắc thăng hạng kiểu của Java sẽ thúc đẩy một trong hai đối số int tăng gấp đôi. Tuy nhiên, trong trường hợp này, điều đó sẽ dẫn đến hai chữ ký quá tải phù hợp. Vì Java không thể giải quyết sự mơ hồ, Quá tải. java dẫn đến lỗi thời gian biên dịch
run runFast getBackground getFinalData compareTo setX isEmpty8
Lấy một đối số dòng lệnh N và tạo N số ngẫu nhiên, sử dụng một mảng a[20] để đếm các số được tạo nằm trong khoảng i*. 05 và [i+1]*. 05 cho tôi từ 0 đến 19. Sau đó, sử dụng StdDraw để vẽ các giá trị và so sánh kết quả của bạn với đường cong hình chuông thông thường
Nhận xét. Phương pháp này được ưa thích hơn phương pháp được mô tả trong Bài tập XYZ về cả hiệu quả và độ chính xác. Mặc dù nó liên quan đến một vòng lặp, nhưng vòng lặp do-while chỉ được thực hiện 4 / π = 1. trung bình 273 lần. Điều này làm giảm tổng số cuộc gọi dự kiến đến các chức năng siêu việt