• ベストアンサー

staticな有効範囲の配列の作り方(Java)

ブロック内(ローカル)以外でも使える配列をつくるにはどうすればいいでしょうか? Javaは配列を宣言、生成する必要がありますが、同じ配列を(同じクラスの)複数のメソッドで使うたびに毎回宣言、生成しないほうがコスト削減になると思いましたので。 宣言、生成する位置、それぞれに何かキーワード(static?)をつけるのが条件と思われますがどうでしょうか。 今回はint型の要素数2の配列aを使います

質問者が選んだベストアンサー

  • ベストアンサー
  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.2

こんにちは。 同一クラス内でよければ、フィールド変数と呼ばれるところに宣言すればよいです。 public class Test { //ここがクラス内から参照できる宣言 private int[] a = { 10, 20 } public void a() { // ここだとローカル変数 int[] b = new int[2]; System.out.println ( a[0] ); } public void b() { System.out.println ( a[0] ); } } こうすれば、A,Bともにaの参照が可能です。 staticはまた別の話になります。

その他の回答 (2)

  • Ogre7077
  • ベストアンサー率65% (170/258)
回答No.3

No.1 の補足について private/public は、カプセル化という哲学(中略)なので、さして意味がありません。 マルチスレッド云々は、デバッグ困難な同期処理を(中略)なので、必要になるまで考えずとも良いです。 this は、メソッド内から変数を特定するための書き方で、お決まりすぎて省略可能な程です。 というわけで、本質的な回答としては class こうすれば複数のメソッドで同じ配列オブジェクトを使いまわせます { int[] a = new int[2]; void 書く(){ a[0] = 1; } void 読む(){ 表示(a[0]); } } obj = new こうすれば複数のメソッドで同じ配列オブジェクトを使いまわせます(); obj.書く(); obj.読む();

studenteacher
質問者

お礼

二人以上にありがとうポイントを差し上げられるのなら差し上げたいところでした。

  • Ogre7077
  • ベストアンサー率65% (170/258)
回答No.1

class 一般的な共有のしかた { private int[] a = new int[2]; public void 書く(){ this.a[0] = 1; } public void 読む(){ 表示(this.a[0]); } public void 書いて読む(){ this.書く(); this.読む(); } } class マルチスレッドでも安全な共有のしかた・ちょっとダサいのが難点 { public void 書く(int[] a){ a[0] = 1; } public void 読む(int[] a){ 表示(a[0]); } public void 書いて読む(){ int[] a = new int[2]; this.書く(a); this.読む(a); } }

studenteacher
質問者

補足

こちら側の都合で申し訳ないですが、まだ文法の知識(特にクラス)がかなり未熟なので 「private, public, 'this.', マルチスレッド」の言葉の意味をまだよく理解できていません。 漠然と「非公開にする」「公開する」「このクラスの」「複数の処理の並行」といった意味であるとだけは分かりますが...

関連するQ&A