it-swarm-vi.tech

Các ký tự hợp lệ trong tên lớp Java

Những ký tự nào là hợp lệ trong một tên lớp Java? Những quy tắc nào khác chi phối các tên lớp Java (ví dụ, tên lớp Java không thể bắt đầu bằng một số)?

64
Zach

Bạn có thể có hầu hết mọi ký tự, kể cả hầu hết các ký tự Unicode! Định nghĩa chính xác là trong Đặc tả ngôn ngữ Java trong phần 3.8: Mã định danh .

Một định danh là một chuỗi có độ dài không giới hạn gồm các chữ cái JavaJava, đầu tiên phải là một chữ cái Java. ...

Các chữ cái và chữ số có thể được rút ra từ toàn bộ bộ ký tự Unicode, ... Điều này cho phép các lập trình viên sử dụng các định danh trong các chương trình được viết bằng ngôn ngữ bản địa của họ.

Một mã định danh không thể có cùng một cách viết (chuỗi ký tự Unicode) như một từ khóa (§3.9), boolean bằng chữ (§3.10.3) hoặc lỗi bằng chữ (§3.10.7) hoặc xảy ra lỗi thời gian biên dịch.

Tuy nhiên, hãy xem câu hỏi này để biết bạn có nên làm điều đó hay không.

54
Jason Cohen

Mỗi ngôn ngữ lập trình có một bộ quy tắc và quy ước riêng cho các loại tên mà bạn được phép sử dụng và ngôn ngữ lập trình Java cũng không khác. Các quy tắc và quy ước để đặt tên cho các biến của bạn có thể được tóm tắt như sau:

  • Tên biến là trường hợp nhạy cảm. Tên của một biến có thể là bất kỳ số nhận dạng hợp pháp nào - một chuỗi các chữ cái và chữ số Unicode không giới hạn, bắt đầu bằng một chữ cái, ký hiệu đô la "$" hoặc ký tự gạch dưới "_". Tuy nhiên, quy ước là luôn luôn bắt đầu tên biến của bạn bằng một chữ cái, không phải "$" hoặc "_". Ngoài ra, ký tự đô la, theo quy ước, không bao giờ được sử dụng. Bạn có thể tìm thấy một số tình huống trong đó tên được tạo tự động sẽ chứa ký hiệu đô la, nhưng tên biến của bạn phải luôn luôn tránh sử dụng nó. Một quy ước tương tự tồn tại cho ký tự gạch dưới; mặc dù về mặt kỹ thuật để bắt đầu tên biến của bạn bằng "_", thực tế này không được khuyến khích. Không gian trắng không được phép.

  • Các ký tự tiếp theo có thể là chữ cái, chữ số, ký hiệu đô la hoặc ký tự gạch dưới. Các quy ước (và lẽ thường) cũng áp dụng cho quy tắc này. Khi chọn tên cho các biến của bạn, hãy sử dụng các từ đầy đủ thay vì viết tắt khó hiểu. Làm như vậy sẽ làm cho mã của bạn dễ đọc và dễ hiểu hơn. Trong nhiều trường hợp, nó cũng sẽ làm cho mã của bạn tự ghi lại; các trường có tên là nhịp, tốc độ và thiết bị, chẳng hạn, trực quan hơn nhiều so với các phiên bản rút gọn, chẳng hạn như s, c và g. Ngoài ra, hãy nhớ rằng tên bạn chọn không phải là từ khóa hoặc từ dành riêng.

  • Nếu tên bạn chọn chỉ bao gồm một từ, hãy đánh vần từ đó trong tất cả các chữ cái viết thường. Nếu nó bao gồm nhiều hơn một từ, hãy viết hoa chữ cái đầu tiên của mỗi từ tiếp theo. Tên gearRatio và currentGear là ví dụ điển hình của quy ước này. Nếu biến của bạn lưu trữ một giá trị không đổi, chẳng hạn như static final int NUM_GEARS = 6, quy ước sẽ thay đổi một chút, viết hoa mỗi chữ cái và tách các từ tiếp theo bằng ký tự gạch dưới. Theo quy ước, ký tự gạch dưới không bao giờ được sử dụng ở nơi khác. 

Từ Hướng dẫn Java chính thức .

16
Ivan Bosnic

Hơn nữa với các câu trả lời trước đó đáng chú ý rằng:

  1. Java cho phép mọi ký hiệu tiền tệ Unicode trong các tên ký hiệu, vì vậy tất cả những thứ sau đây sẽ hoạt động:

$ var1 £ var2 € var3

Tôi tin rằng việc sử dụng các ký hiệu tiền tệ bắt nguồn từ C/C++, trong đó các biến được thêm vào mã của bạn bởi trình biên dịch thường bắt đầu bằng '$'. Một ví dụ rõ ràng trong Java là tên của các tệp '. Class' cho các lớp bên trong, theo quy ước có định dạng 'Outer $ Inside. Class'

  1. Nhiều lập trình viên C # và C++ chấp nhận quy ước đặt 'I' trước các giao diện (còn gọi là các lớp ảo thuần trong C++). Điều này là không bắt buộc và do đó không được thực hiện trong Java vì từ khóa thực hiện làm cho nó rất rõ ràng khi một cái gì đó là một giao diện.

So sánh:

lớp Nhân viên: IPayable công khai // C++

với

lớp Nhân viên: IPayable // C #

và 

lớp Nhân viên thực hiện phải trả // Java

  1. Nhiều dự án sử dụng quy ước đặt dấu gạch dưới trước tên trường, để có thể dễ dàng phân biệt chúng với các biến và tham số cục bộ, ví dụ:.

tư nhân đôi;

Một nhóm thiểu số nhỏ đặt dấu gạch dưới sau tên trường, ví dụ:.

lương gấp đôi tư nhân_;

9
Garth Gilmour

Như Jason Cohen đã nêu, Đặc tả ngôn ngữ Java xác định định danh pháp lý là gì trong phần 3.8:

"Mã định danh là một chuỗi các chữ cái Java và chữ số Java có độ dài không giới hạn, Đầu tiên phải là một chữ cái Java. [...] Một 'chữ cái Java' là một ký tự mà phương thức Character.isJavaIdentifierStart ( int) trả về true. Một 'chữ cái hoặc chữ số Java' là một ký tự mà phương thức Character.isJavaIdentifierPart (int) trả về true. "

Điều này hy vọng trả lời câu hỏi thứ hai của bạn. Về câu hỏi đầu tiên của bạn; Tôi đã được các giáo viên dạy và (theo như tôi có thể nhớ) các trình biên dịch Java rằng tên lớp Java phải là một định danh bắt đầu bằng chữ in hoa A-Z, nhưng tôi không thể tìm thấy bất kỳ nguồn đáng tin cậy nào về điều này. Khi dùng thử với OpenJDK, không có cảnh báo nào khi bắt đầu tên lớp bằng chữ in thường hoặc thậm chí là ký tự $. Tuy nhiên, khi sử dụng ký hiệu $, bạn phải thoát nó nếu bạn biên dịch từ bash Shell.

4
EriF89

Tôi muốn thêm vào câu trả lời của bosnic rằng bất kỳ ký tự tiền tệ hợp lệ nào đều hợp pháp đối với mã định danh trong Java. € là một định danh pháp lý, cũng như € này, và € là tốt. Tuy nhiên, tôi không thể tìm ra cách chỉnh sửa câu trả lời của anh ấy hoặc cô ấy, vì vậy tôi buộc phải đăng phần bổ sung tầm thường này.

2
MetroidFan2002

Những quy tắc nào khác chi phối các tên lớp Java (ví dụ, tên lớp Java không thể bắt đầu bằng một số)?

  • Tên lớp Java thường bắt đầu bằng chữ in hoa.
  • Tên lớp Java không thể bắt đầu bằng một số.
  • nếu có nhiều từ trong tên lớp như "MyClassName" thì mỗi từ sẽ bắt đầu bằng chữ in hoa. ví dụ: "MyClassName". Quy ước đặt tên này dựa trên CamelCase Type.
1
Deepak Kumar

Tên lớp nên là danh từ trong UpperCamelCase, với chữ cái đầu tiên của mỗi từ được viết hoa. Sử dụng toàn bộ từ - tránh các từ viết tắt và viết tắt (trừ khi chữ viết tắt được sử dụng rộng rãi hơn nhiều so với dạng dài, chẳng hạn như URL hoặc HTML) . Có thể đọc các quy ước đặt tên ở đây:

http://www.Oracle.com/technetwork/Java/codeconventions-135099.html

0
Sachin Tiwari

Mã định danh được sử dụng cho tên lớp, tên phương thức và tên biến. Một định danh là bất kỳ chuỗi mô tả nào về chữ hoa và chữ thường, số hoặc ký tự dấu gạch ngang và ký tự đô la. Họ không được bắt đầu bằng một số, vì sợ rằng họ phải sử dụng một chữ số. Một lần nữa, Java phân biệt chữ hoa chữ thường, vì vậy VALUE là một định danh khác với Giá trị . Một số ví dụ về các định danh hợp lệ là:

AverageTemp, đếm a4, $ test, this_is_ok

Tên biến không hợp lệ bao gồm:

2 đếm, nhiệt độ cao, Không/ok

0
navneet kumar