java - 试图理解简单的代码

标签 java

我刚开始学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 的类型为 ClassWTP 的类型为 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/

相关文章:

java - 特殊形式的字符串输入验证

java - 为什么 Jar Bundler 在 Mac OS X Mountain Lion 10.8.2 中消失了

java - JPanel说不透明是什么意思?

java - 在后台使用 JSch 运行程序

java - "this"是什么意思?

java - 如何在android中获得支持的摄像机分辨率?

java - HashMap 条目不会进入列

java - 在当前 View 中的所有其他内容上显示一个 fragment ,然后在单击按钮时将其删除

java - java中没有指数科学的字符串到Double

java - 如何以列表为值深度克隆映射