在main方法中创建对象,只有这个方法才可以使用这个对象,别的方法使用必须要在创建一个对象
在main方法外创建别的类对象,首先得在main方法中创建当前类的对象,这时候才会加载出你在main方法外创建的别的类的对象,这样类中其他方法才可以使用这个对象,如果你没有在main方法中创建当前类的对象,在其他方法中也不能使用这个对象
package com.unique.java;
public class TestDemo {
Zoo zoo = new Zoo(1);
public static void main(String[] args) {
TestDemo testDemo = new TestDemo();
Zoo zoo1 = new Zoo(2);
}
}
class Zoo{
Zoo(int idx){
System.out.println("Zoo("+idx+")");
}
}
输出
Zoo(1)
Zoo(2)
//----------------------------------------------------------------------------------------
package com.unique.java;
public class TestDemo {
Zoo zoo = new Zoo(1);
public static void main(String[] args) {
//TestDemo testDemo = new TestDemo();
Zoo zoo1 = new Zoo(2);
}
}
class Zoo{
Zoo(int idx){
System.out.println("Zoo("+idx+")");
}
}
}
输出:
Zoo(2)
public class TestDemo {
Zoo zoo = new Zoo(1);
public static void main(String[] args) {
Zoo zoo1 = new Zoo(2);
}
}
class Zoo{
Zoo(int idx){
System.out.println("Zoo("+idx+")");
}
}
//为什么值输出Zoo(2)???/
因为main方法传入的参数是2,java虚拟机找到main方法入口后传入是2所以调用的就是2,调用方法需要在方法中调,你在类里面调肯定不起作用,不信你把main方法的对象删除,绝对输出不了任何东西
在输入java XXX的时候调用的方法
public class TestDemo {
Zoo zoo = new Zoo(1);
public static void main(String[] args) {
Zoo zoo1 = new Zoo(2);
}
}
class Zoo{
Zoo(int idx){
System.out.println("Zoo("+idx+")");
}
}
//为什么只输出Zoo(2)???/
public class TestDemo {
Zoo zoo = new Zoo(1);
public static void main(String[] args) {
Zoo zoo1 = new Zoo(2);
TestDemo testDemo = new TestDemo();
}
}
class Zoo{
Zoo(int idx){
System.out.println("Zoo("+idx+")");
}
}
加上
TestDemo testDemo = new TestDemo();
就可以输出Zoo(1);
你这个问题和main方法没有关系。只和类的初始化顺序相关