第一个问题:我问一下,java编程时,什么情况时创建一个变量或对象时,需要把声明和用new实例化的分开,也就是说能有class a=new class(); 一步完成.
最近编程一直遇到很怪的问题,
比如
class A implements Runnnable{
Thread newThread
public A()
{
newThread = new Thread(this) }
public void run()
{ }
其他东西....我省了.这里不写了...
}
我如果在其中,创建对象时,必须分两步,编译器才不会报错?就是说不能 Thread newThread=new Thread(this);
除了这个Thread类,我还在创建AWT组件的某些类的时候,也遇到过同样的问题,请高手指教这是为何?
是不是,在如果,这个类中,还含有内部类,而且内部类还要调用到那个对象,所以必须把它声名成成员实例变量,所以才需要把它的声明放到构造方法外面?而new()的话,可以放在构造方法内部?因为构造方法,也是这个类的成员方法,而且,在内部类,只能访问到外部类中的成员变量,而访问不到这个外部类的其他方法中的局部变量.
是这样的吗,请详细说一下,谢谢了!!!!
第二个问题:为什么有些类的静态常量,比如 Frame类的setExtendedState中的涉及到MAXIMIZED_BOTH,MAXMIZED_VERT和MAXIMIZED_HORIZ
为什么有些像这种样子的常量,引用的时候,不需要在其前面加上类名,但是诸如JOptionPane的INFORMATION_MESSAGE WARNING_MESSAGE等常量,是必须加上类名,编译才会让通过的.请问,这是为什么?
最近编程一直遇到很怪的问题,
比如
class A implements Runnnable{
Thread newThread
public A()
{
newThread = new Thread(this) }
public void run()
{ }
其他东西....我省了.这里不写了...
}
我如果在其中,创建对象时,必须分两步,编译器才不会报错?就是说不能 Thread newThread=new Thread(this);
除了这个Thread类,我还在创建AWT组件的某些类的时候,也遇到过同样的问题,请高手指教这是为何?
是不是,在如果,这个类中,还含有内部类,而且内部类还要调用到那个对象,所以必须把它声名成成员实例变量,所以才需要把它的声明放到构造方法外面?而new()的话,可以放在构造方法内部?因为构造方法,也是这个类的成员方法,而且,在内部类,只能访问到外部类中的成员变量,而访问不到这个外部类的其他方法中的局部变量.
是这样的吗,请详细说一下,谢谢了!!!!
第二个问题:为什么有些类的静态常量,比如 Frame类的setExtendedState中的涉及到MAXIMIZED_BOTH,MAXMIZED_VERT和MAXIMIZED_HORIZ
为什么有些像这种样子的常量,引用的时候,不需要在其前面加上类名,但是诸如JOptionPane的INFORMATION_MESSAGE WARNING_MESSAGE等常量,是必须加上类名,编译才会让通过的.请问,这是为什么?
Thread newThread = new Thread(this); public Test() {
} public void run() {
} public static void main(String[] args) {
}
}2 是否需要加上类名,取决于你当前的类。 如果那些常量属于你的父类,当然就不需要了,如果不是,就需要写上类名
jdk 5 新增加了静态import, 可以让你全不需要写类名,不过 我个人觉得不推荐建。import static java.lang.Math.*;
public class Test implements Runnable { public Test() {
Thread newThread = new Thread(this);
} public void run() {
} public static void main(String[] args) {
}
}这样也没问题啊 把你出问题的代码发出来吧看看吧
PS请把你的代码用中括号括起来放到code=Java标签中例如[code=Java]
public class Test{
}[/code]