我刚开始学java,老师给了我们一段代码,下节课给他分析解释。我理解其中的大部分内容,但是我对 1 行代码有疑问。
public class Test {
public static void main(String[] args) {
PascalTriangle WTP;
try {
WTP = new PascalTriangle(Integer.parseInt(args[0]));
} catch (NegativeArraySizeException ex) {
System.out.println(args[0] + "\t- incorrect data");
return;
} catch (NumberFormatException ex) {
System.out.println(args[0] + "\t- incorrect data");
return;
}
for (int i = 1; i < args.length; i++) {
try {
System.out.println(args[i] + "\t-> " + WTP.wspolczynnik(Integer.parseInt(args[i])));
} catch (ArrayIndexOutOfBoundsException ex) {
System.out.println(args[i] + "\t- incorrect number");
} catch (NumberFormatException ex) {
System.out.println(args[i] + "\t- incorrect data");
}
}
}
}
其余的代码对我的问题并不重要,所以我跳过了它(这个程序是关于帕斯卡三角形的)。我不明白这一行:
PascalTriangle WTP;
PascalTriangle是另一个类的名称,负责这个程序中的所有操作。你能向我解释一下这行代码发生了什么吗?这是某种“捷径”吗,所以我们可以只写 WTP 而不是每次都输入 PascalTriangle ?如果我的问题看起来很愚蠢,我深表歉意,但我自己找不到答案,感谢您的帮助。
最佳答案
注意您所说的int i = 1
。这实际上是两个不同事物的简写:变量声明和初始化。您也可以将其分为两部分:
int i; // declaration
i = 1; // initialisation
声明部分告诉编译器您打算用i
来表示一个整型变量。初始化表达式将其值设置为1
。
以同样的方式,您拥有与变量 WTP
相关的两个部分:
PascalTriangle WTP; // declaration
WTP = new PascalTriangle(Integer.parseInt(args[0])); // initialisation
这两行中的第一行表示您打算在此函数中添加一个名为 WTP
的变量,并且其类型将为 PascalTriangle
。然后,创建一个新的 PascalTriangle
并将其分配给该变量。
WTP
绝不是 PascalTriangle
的快捷方式。 PascalTriangle
的类型为 Class
; WTP
的类型为 PascalTriangle
。或者,简单地说,PascalTriangle
是一个类,WTP
是该类的实例。想想“doghood”和“我的狗Fido”之间的区别。 “我的狗 Fido”可能有四条腿。 “狗”没有腿;或者说,如果我们数一数的话,会有数以百万计的数字。但“我的狗 Fido”是“doghood”的一个很好的例子,如果这有道理的话。同样,我们分配给 WTP
的东西是 PascalTriangle
的一个示例(“实例”);你可以有其他的 PascalTriangle
,就像我可以有另一只狗一样。当您编写 WTP.wspolczynnik
时,这是引用实例方法;如果您编写了 PascalTriangle.wspolczynnik
,则仅当该方法被声明为类方法(使用 static
关键字)时才有效,例如“doghood”具有人口但“狗”有腿。
关于java - 试图理解简单的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29336683/