2012-03-09 11 views
42

Javaプログラム中に異なる時間に表示する必要がある定数文字列のリストがあります。 "こんにちは、サーバーへの歓迎"Javaで定数文字列を定義していますか?

の#define WAIT_MESSAGE "5秒待ってください" 私のコード

の#define WELCOME_MESSAGEの最上部に、次のように

を文字列を定義することができCIで

#define EXIT_MESSAGE「さようなら!」

Javaでこのようなことを行う標準的な方法は何ですか?もちろん、

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

この定数を使用する場所に基づいて適切なメンバーの可視性を(public/private/protected)を使用:

+4

'static final String WELCOME_MESSAGE =" Hello ";'? –

+5

研究をしましたか? – Madbreaks

+3

はい、しかし、私は彼らが「最終的な」と言っていたいくつかのウェブサイトを読んでいます。 – csss

答えて

94

典型的には、クラスの上部に向かってこれを定義したいです。

+1

定数を 'プライベート'として定義する場合、定数を '静的'に設定する必要はありませんか? – ChallengeAccepted

+4

いいえ、まだ静的でなければなりません。プライベートで非静的にすると、型をインスタンス化するたびに文字列の新しいコピーが作成されます。 http://stackoverflow.com/q/1415955/247763 – derekerdmann

10

それは次のようになります。定数は1つだけのクラスで使用するためのものである

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

場合は、代わりにpublicのそれらprivateようにしたいと思います。

4
public static final String YOUR_STRING_CONSTANT = ""; 
3

あなたは

public static final String HELLO = "hello"; 

を使用することができますが、多くの文字列定数を持っている場合、あなたは外部のプロパティを使用することができ、ファイル/シンプル "定数ホルダー" クラス

1

単に

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

この命令の主な部分は「最終的な」キーワードです。

3

業界の別の標準では、プロジェクト全体で使用されるすべての定数を含むConstants.javaという名前のクラスファイルがあります。

1

通常、定数はstaticと宣言します。理由は、Javaがクラスのオブジェクトをインスタンス化するたびに非静的変数のコピーを作成するためです。

したがって、定数をstaticとすると、そうではなく、はメモリを保存します。

finalとすると、変数を定数にすることができます。

したがって、一定の変数を定義するためのベストプラクティスは次のとおりです。

private static final String YOUR_CONSTANT = "Some Value"; 

アクセス修飾子は、ビジネスロジックに依存private/publicすることができます。

+0

あなたは間違っています。 JVMで使用される文字列プールのためにメモリを節約するのに役立ちません。 – Mirimas

+0

@Mirimas Nope。あなたはここで間違っています。 Staticは一度だけ初期化されますが、静的でない変数は、そのオブジェクトが初期化されるたびに初期化されます。 –

+1

文字列の作成に「新しい」 キーワードを使用していないため、ここでは文字列プールを使用しました。したがって、文字列にstaticを使用しない場合でも、文字列プールからすでに作成された参照が使用されます。もっと見る:http://stackoverflow.com/questions/3297867/difference-between-string-object-and-string-literal – Mirimas

関連する問題