方法一public class Dollar{ public Dollar(){
  System.out.println("Dollar is construct");
 }
 public static void main(String []args)
 {
  Money r=new Money();
  new Dollar();
 }
}
   class Money{    public Money(){
     System.out.println("Money is construct");
    }
   }方法二public class Dollar{Money r=new Money();
 public Dollar(){
  System.out.println("Dollar is construct");
 }
 public static void main(String []args)
 {
    new Dollar();
 }
}
   class Money{    public Money(){
     System.out.println("Money is construct");
    }
   }

解决方案 »

  1.   

    变量的作用范围不同。而且没有 new Dolloar() 这种用法
      

  2.   

    对象在哪里生成的区别不大,在哪里定义的区别很大
    在方法体外面定义是成员变量, 类里的所有方法都能访问到, 默认初始值是null, 只要类存在变量就一直存在
    在方法体里面定义是局部变量, 只有方法体中才能访问到, 必须显示定义初始值, 方法结束之后变量就消亡了
      

  3.   

    我也觉得没有new  Dollar()这种方法,但是却能编译并且执行.这是怎么回事啊
      

  4.   

    它本身没有问题,就是new一个Dollar类的一个对象,肯定能编译执行,但你这么写没有意义而已。
      

  5.   

    public class jiSuan1 {    public static void main(String[] args) {
    int num = getNum(); System.out.println(num);
    }
    public int getNum() {
    int num = 1;return num++;
    }}这行代码为什么不能被编译。。该怎么改下
      

  6.   

    修改如下:
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    int num = getNum(); System.out.println(num);
    }
    public static int getNum() { //表示这个方法属于这个类的静态方法,在这个类里面就可以直接使用
    int num = 1; return num++;
    }
    方法二:
    public static void main(String[] args) {
    jiSuan1 t = new  jiSuan1(); //先生成本类的一个对象,然后用这个对象调用里面的方法
    int num = t.getNum(); System.out.println(num);
    }
    public  int getNum() {
    int num = 1; return num++;
    }
      

  7.   


    public class jiSuan1 {    public static void main(String[] args) {
         int num =(new jiSuan1()).getNum();//必须new一个jiSuan1类的对象,用“对象.方法”调用getNum()方法
         System.out.println(num);
        }
        public  int getNum() {
         int num = 1;
         return num++;
        }
    }
      

  8.   

    因为在静态方法中,只能访问静态的方法和属性!main方法是静态方法不能访问getNum()方法!!
      

  9.   

    lz
    方法一:进入main方法,先执行Money r=new Money();会进入Money类的构造函数,在执行new Dollar()
    (这种写法为匿名对象,可以执行)进入Dollar类的构造函数
    方法二:进入main方法,执行new Dollar(),但是会先执行Dollar类中的Money r=new Money();,再执行构造函数,这也是为什么会有
    public class A{
     int b=4;
     {
       b=7;//构造块
     }
     public A(){
      b=5;
     }
    }
    最后new A()会发现b=5 一样,因为构造函数是最后执行的,(第一个执行的是int b=4;第二个执行的是构造块b=7)