2012-03-09 28 views
42

Tôi có một danh sách các chuỗi liên tục mà tôi cần hiển thị vào các thời điểm khác nhau trong chương trình Java của mình.Xác định chuỗi không đổi trong Java?

Trong CI có thể xác định các chuỗi như thế này ở trên cùng của mã của tôi

#define WELCOME_MESSAGE "Xin chào, chào mừng đến các máy chủ"

#define WAIT_MESSAGE "Xin vui lòng chờ 5 giây"

#define EXIT_MESSAGE "Tạm biệt!"

Tôi tự hỏi cách tiêu chuẩn để thực hiện loại điều này trong Java là gì?

+4

'Chuỗi cuối cùng tĩnh WELCOME_MESSAGE =" Hello ";'? –

+5

Bạn đã thực hiện bất kỳ nghiên cứu nào chưa? – Madbreaks

+3

Có nhưng tôi đọc một số trang web mà họ đang nói 'cuối cùng' không phải là một hằng số trong java, vì vậy tôi đã không chắc chắn. – csss

Trả lời

94

Thông thường, bạn muốn xác định này về phía đầu của một lớp:

public static final String WELCOME_MESSAGE = "Hello, welcome to the server"; 

Tất nhiên, sử dụng khả năng hiển thị thành viên thích hợp (public/private/protected) dựa trên nơi bạn sử dụng liên tục này.

+1

Tôi đã luôn luôn tự hỏi, không phải là không cần thiết để đặt hằng số là 'tĩnh' nếu bạn định nghĩa hằng số là 'riêng tư'? – ChallengeAccepted

+4

Không, nó vẫn phải là 'tĩnh'. Làm cho nó riêng tư và không tĩnh sẽ vẫn tạo ra một bản sao mới của chuỗi mỗi khi bạn khởi tạo kiểu. Xem http://stackoverflow.com/q/1415955/247763 – derekerdmann

10

Nó sẽ trông như thế này:

public static final String WELCOME_MESSAGE = "Hello, welcome to the server"; 

Nếu hằng số được sử dụng chỉ trong một lớp học duy nhất, bạn muốn làm cho họ thay vì privatepublic.

4
public static final String YOUR_STRING_CONSTANT = ""; 
3

Bạn có thể sử dụng

public static final String HELLO = "hello"; 

nếu bạn có nhiều hằng chuỗi, bạn có thể sử dụng tập tin bất động sản bên ngoài/"liên tục giữ" class đơn giản

1

chỉ cần sử dụng

final String WELCOME_MESSAGE = "Hello, welcome to the server"; 

phần chính của hướng dẫn này là từ khóa 'cuối cùng'.

3

Hoặc một tiêu chuẩn điển hình khác trong ngành là có tệp lớp có tên Constants.java có chứa tất cả các hằng số được sử dụng trên toàn bộ dự án.

1

Chúng tôi thường khai báo hằng số là static. Lý do là vì Java tạo ra các bản sao của các biến không tĩnh mỗi khi bạn khởi tạo một đối tượng của lớp.

Vì vậy, nếu chúng tôi tạo các hằng số static, nó sẽ không làm như vậy và sẽ tiết kiệm bộ nhớ.

Với final chúng tôi có thể tạo hằng số biến.

Do đó việc thực hành tốt nhất để xác định một biến liên tục như sau:

private static final String YOUR_CONSTANT = "Some Value"; 

Các modifier truy cập có thể private/public tùy thuộc vào logic kinh doanh.

+0

Bạn đã sai. Nó không giúp đỡ để tiết kiệm bộ nhớ vì chuỗi hồ bơi, được sử dụng bởi JVM. – Mirimas

+0

@Mirimas Nope. Bạn đang sai ở đây dude. Tĩnh được khởi tạo chỉ một lần, nhưng một biến không tĩnh được khởi tạo mỗi khi mọi đối tượng được khởi tạo. –

+1

Đây là chuỗi được sử dụng bởi vì bạn không sử dụng từ khóa "mới" để tạo chuỗi. Vì vậy, ngay cả khi bạn không sử dụng tĩnh cho chuỗi, nó sẽ sử dụng tham chiếu đã được tạo từ nhóm chuỗi. Xem thêm: http://stackoverflow.com/questions/3297867/difference-between-string-object-and-string-literal – Mirimas

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