Java 构造函数排序

Java 构造函数排序,java,constructor,Java,Constructor,我正在做一个项目,我想知道传递给构造函数的参数的顺序是否重要。例如,如果我创建了一个程序: public class Test{ int t3; String h; Test(int t1, String t2){ t3 = t1; String h = t2; } } 我这样做是否重要: Test t4 = new Test( "hello", 6); 而不是 Test t4 = new Test(6, "hello");

我正在做一个项目,我想知道传递给构造函数的参数的顺序是否重要。例如,如果我创建了一个程序:

public class Test{
    int t3;
    String h;
    Test(int t1, String t2){
        t3 = t1;
        String h = t2;
    }
}
我这样做是否重要:

Test t4 = new Test( "hello", 6);
而不是

Test t4 = new Test(6, "hello");
像构造器中的顺序?谢谢

您可以执行以下操作:

public class Test{
  int t3;
  String h;
  Test(int t1, String t2){
    h = t2;
    t3 = t1;
    }
  }
但并非如此:

Test t = new Test(t2,t1);
因为当您调用任何方法时,都需要遵守参数顺序。
如果您愿意,您可以这样做(您的代码将编译并执行),但随后您将进行值切换。

是的……您必须尊重参数的顺序,因为构造函数将期望整数作为第一个参数,字符串作为第二个参数;与此不同的任何内容都可能引发错误。

是的,顺序很重要,但您可以“重载”,这意味着添加另一个参数列表颠倒的构造函数,如

Test(String t2, int t1){
 this.Test(t1,t2);
}

…如您所见,您可以调用内部的第一个构造函数,java将找到签名使用的正确版本,这很重要,就像任何方法调用都很重要一样。如果你有这样的东西怎么办:

public SomeClass(int a, int b)...
如果是的话

new SomeClass(1, 2);
编译器怎么知道您实际上是想让
a
为2,而
b
为1?唯一一种情况是,如果所有参数的类型都不同,编译器可能会破译您的意图——在大多数情况下,编译器不可能知道您的意图

即使所有类型都不同,编译器如何知道您有意以不同的顺序传递它们?据它所知,它正在把你从一个错误中解救出来


请注意,某些其他语言,如C#,确实允许您以与指定不同的顺序传递参数,但您必须标记这些参数,以便编译器能够知道哪个是哪个。

尝试一下,看看会发生什么。是的,这很重要。在上面的示例中,第一个参数必须是整数,第二个必须是字符串。构造函数是根据。TL;是的,必须有相同的数字,而且它们的顺序必须相同。假设你有一个有理数的构造函数,它取分子和分母的值?你不认为顺序很重要吗?