Java程序剖析

时间:2015-06-22 17:39:28

标签: java methods parameters field local-variables

以下类中每个表达式的术语是什么:

例如:

class Test {
    int a=0;
    void method(boolean boo){
        String b="";
        try
        {
            new Thread().sleep(1000);
        }
        catch(InterruptedException e){}
        JOptionPane.showMessageDialog(null,"test");
        BufferedImage image=ImageIO.read(new File("C:\\file.png"));
    }
}

据我所知a字段boo参数bimage局部变量

使用的术语是什么
  1. new Thread().sleep()
  2. JOptionPane.showMessageDialog()
  3. ImageIO.read()
  4. new File()
  5. InterruptedException

3 个答案:

答案 0 :(得分:6)

new Thread()是一个构造函数调用。您立即在实例上调用sleep。这很奇怪,因为sleep是一个静态方法,因此您只需Thread.sleep(1000)进行静态调用(确保捕获并处理InterruptedException

JOptionPane.showMessageDialog()是一个静态方法调用ImageIO.read()new File()是一个构造函数调用,它返回一个File对象。

关于命名约定的一句话:字段名称(不是static final常量),变量名称和方法名称应为camelCase,而类名称应为PascalCase。< / p>

答案 1 :(得分:1)

你可能还需要注意程序的顶部,你会发现String,Thread(你通常可能看不到那两个),JOptionPane,ImageIO和BufferedImage是从某个地方导入的。

为了更好地编程,您需要遵循命名约定,请查看:http://www.oracle.com/technetwork/java/codeconventions-135099.html

另外请将修饰符放在类变量和方法前面

答案 2 :(得分:1)

new Thread().sleep()

这是一个由两部分组成的表达。第一部分,即new Thread()实际上在Java Language Specification (JLS)中记录为非限定类实例创建表达式:

  

类实例创建表达式有两种形式:

     

非限定类实例创建表达式以   关键字new。

     

可以使用非限定类实例创建表达式   创建一个类的实例,无论该类是否为   顶级(§7.6),成员(§8.5,§9.5),本地(§14.3)或匿名   class(§15.9.5)。

当您说Thread时,您基本上会创建new Thread()课程的实例。该语句的第二部分是.sleep(),它被称为方法调用。

new File()

这也是一个非限定类实例创建表达式,就像表达式new Thread()一样,但创建了File类的实例,而不是Thread类。

JOptionPane.showMessageDialog()

如果您查看JOptionPane.showMessageDialog方法的源代码,您会发现该方法是static方法。此外,JLS解释了如何访问静态方法:

  

始终在不引用特定对象的情况下调用类方法。

JLS间接表示的是,您可以使用类的名称访问定义它的类之外的static方法。

这里要理解的另一个重要事实是,有明确定义的Java命名约定。

  1. 类名以大写字母开头,后面的任何单词都大写。因此,当您看到XyzAbc形式的任何文字时,请假设它是classinterface。例如,JOptionPaneImage是类名。
  2. 同样,对于称为camel case的方法名称也有一个约定。例如,每当您看到doSomethinggetSomethingsetSomethingshowMessageDialog()等文字时,您应该知道它是一种方法。
  3. 将所有这些理解结合在一起,我们可以推断JOptionPane.showMessageDialog()static调用JOptionPane方法。

    InterruptedException

    如果您了解上述命名约定,那么您现在应该知道InterruptedExceptionclass。它与Java中任何其他类的不同之处在于它可以使用throw子句抛出,然后使用try-catch语句捕获。您可以在Oracle文档中阅读有关异常处理的更多信息。