자바 배열에대해 질문드립니다.

bingsinson의 이미지

import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
 
public class Base extends Applet
{
Label display;
		Button []button;
		TextArea ta;
		Panel p1;
		public void init()
		{
				setLayout(new BorderLayout());
				display = new Label("game");
				display.setAlignment(Label.RIGHT);
				add("North", display);
				p1 = new Panel();
				p1.setLayout(new GridLayout(4,3));
				for(int i = 0; i<9; i++)
				{
						button[i] = new Button(String.valueOf(i+1));
						p1.add(button[i]);
				}
				button[9] = new Button("<-");
				p1.add(button[9]);
				button[10] = new Button("다시입력");
				p1.add(button[10]);
				button[11] =new Button("입력완료");
				p1.add(button[11]);
				add("Center", p1);
 
				ta = new TextArea(10, 20);
				add("South", ta);
		}
}

이런식으로 한뒤 appletviewer로 확인해보면 위의 버튼 배열에서 에러가 나옵니다.
처음에 제가 썼던건
Button []button = new Button[12];
이렇게 한후 나중에 쓸때 new하지 않고 그냥 버튼문자열만 바꿔는식으로 했었는데
에러가 나서 이렇게 바꿨습니다.
왜 new를 두번이나 해야하는거죠??

dormael의 이미지

init()메소드가 불리기 전에 button = new Button[12] 식으로 어레이를 초기화 해주는 부분이 있나요?

없다면 NullPointerException 이 날 듯 한데요.

-- Signature --
青い空大好き。
蒼井ソラもっと好き。
파란 하늘 너무 좋아.
아오이 소라 더좋아.

narusas의 이미지

배열객체와 배열객체가 정보로 들고 있는 Button 객체는 서로 다른 객체입니다.
당연히 두가지 모두 생성을 해주어야 제대로 동작하겠죠.

C처럼 메모리로 접근하시지 말고, "객체"로 접근하시기 바랍니다.