dポイントプレゼントキャンペーン実施中!

ブロック内(ローカル)以外でも使える配列をつくるにはどうすればいいでしょうか?

Javaは配列を宣言、生成する必要がありますが、同じ配列を(同じクラスの)複数のメソッドで使うたびに毎回宣言、生成しないほうがコスト削減になると思いましたので。

宣言、生成する位置、それぞれに何かキーワード(static?)をつけるのが条件と思われますがどうでしょうか。
今回はint型の要素数2の配列aを使います

A 回答 (3件)

こんにちは。



同一クラス内でよければ、フィールド変数と呼ばれるところに宣言すればよいです。

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はまた別の話になります。
    • good
    • 0

No.1 の補足について



private/public は、カプセル化という哲学(中略)なので、さして意味がありません。
マルチスレッド云々は、デバッグ困難な同期処理を(中略)なので、必要になるまで考えずとも良いです。
this は、メソッド内から変数を特定するための書き方で、お決まりすぎて省略可能な程です。

というわけで、本質的な回答としては

class こうすれば複数のメソッドで同じ配列オブジェクトを使いまわせます {
int[] a = new int[2];
void 書く(){ a[0] = 1; }
void 読む(){ 表示(a[0]); }
}

obj = new こうすれば複数のメソッドで同じ配列オブジェクトを使いまわせます();
obj.書く();
obj.読む();
    • good
    • 0
この回答へのお礼

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

お礼日時:2014/03/06 23:13

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);
}
}

この回答への補足

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

補足日時:2014/02/26 20:07
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!