LZ应该是新手,之所以有这个疑问,是因为你对内存分配还是不是很了解。class a 是在栈内存中声明了一个标识,他不是真的一个对象,他仅仅标识了对象具体的位置。可以说他只能对外代表,而没有实权。new class 是在对内存中动态的声明了一个对象,这个是真的对象。由于它是动态声明的,所以产生的位置是不可预知的,如果不给他指定一个位置标记,那你只能在创建他的时候调用一次。
public void paint(Graphics g){}为什么不能写成public void paint(new Graphics()){}? 这句话中,()内的叫做形势参数,只是告诉系统说我需要一个什么类型的参数,而没必要真的给一个参数。这就好比,我对你说:哥们儿,帮我带瓶可乐。这里的“可乐”只是告诉你我要的是可乐,而并不是一瓶真正的可乐。
addKeyListener(new KeyAdapter(){});就不能写成addKeyListener(KeyAdapter k{});?这句话就正好相反,他是要真正执行,就给给真正的对象才行。这里就好比,你说:给,哥们儿,这是你要的可乐。这里的“可乐”可就是真的一瓶可乐 |