pricvate static final の使い方
pricvate static final String str = "test";
こんなやつをコードないでみることはよくある。
staticってなにって人は↓↓↓
【Java】 staticって何? | 一番かんたんなJava入門
staticで宣言された変数はクラス変数って呼ばれてクラスに一つになる。
クラスに属するのがstatic、インスタンスに属するのが非static。
public void func(){ // なんらかのの処理 }
みたいなやつはnewしたときに使ったりするようにnewごと(インスタンスごと)のもの。
呼び方も
Test test = new Test();
test.func
みたいな感じ
static の場合の呼び方は
Test.str
って感じでnewせずに使える。。メモリ領域が違う。
本題
pricvate static final ってなんなの。
自クラスしか使えない、staticで変更効かない 変数
servletはひとつのインスタンスを共有して使う。(マルチスレッドの話)
HTTPリクエストが同時にたくさん来た時
pricvate static final みたいな変更されない定数を使うと同一インスタンスでも問題ない。
じゃあ private finalでよくない?
実際問題ない。
けど、なんこもインスタンス生成する必要があるケースだと、
private finalで定義された変数はその都度メモリ領域を喰ってしまう。そのためstaticを追加するとこで多少のメモリの節約を狙うことがよくあり
その慣例でpricvate static finalってなってたりするみたい。
ほかにも理由はあると思うけど。。
スレッドローカルで定義した定数はマルチスレッドにおいても安全に処理されます。(グローバル変数みたいな感じで)
むやみに使うのは良くないけど