Java:子例程和方法有什么区别?

时间:2013-05-26 14:58:47

标签: java definition subroutine

有什么区别?

public write(){
// dostuff
}

代码是在子程序,方法还是程序块之上?

我不理解这些术语,因为它们的含义都非常相似?

所以,如果我非常严格和迂腐,那么它会是哪一个?我更喜欢称它们为子程序,这是严格的吗?

编程语言:JAVA

编辑: 谢谢,我现在明白了,但最安全的方法是什么呢?块? 我使用多种编程语言,术语“阻塞”是否足够?

我可以将一个函数称为块吗?

那么我可以将所有内容都视为一个块吗?这对我来说会更容易,对吗?

我不会将块调用为函数或子例程,但我会调用函数,方法和块作为块。那会没关系,把它们称为块?

那么,这是否意味着这有点准确? 在程序块之外不访问局部变量(是的,有一些情况并非如此)。

3 个答案:

答案 0 :(得分:1)

以上都不是,因为它没有返回值。如果它是名为write的类的无参数构造函数,则在名为write.java的文件中,它只是“正确的”。甚至违反了Sun Java编码标准。

子程序是来自FORTRAN和COBOL等功能/过程语言的术语。这些语言将数据和方法分开,方法根据给定的数据进行操作。

对象将数据和方法封装到实例中。大多数面向对象的程序员更喜欢方法。您对子程序的“偏好”会将您标记为古怪且不合时宜。

我再也听不到“子程序”了。如果我是你,我会习惯“方法”。

答案 1 :(得分:1)

首先,你所拥有的是一个构造函数,而不是一个方法,返回void(没有)的正确方法就是这样(根据C#或Java语法):

public void write()
{}

现在,关于你最初的问题:子程序和方法之间有什么区别? 好吧,基本上没有。但如果你想更深入,那么我们将不得不去组装编程IMO。汇编中的子程序实际上与两个方面的方法不同:

  1. 他们没有传递参数
  2. 他们不会返回任何内容
  3. 而且,您可能会问自己:那么我该如何处理任何事情,这个子程序如何工作? 在汇编中,这里是寄存器的作用,而不是将参数传递给子例程,就像在每个高级编程语言中使用方法一样,你必须在调用子例程之前保存你要处理的值(参数),确保在到达子例程之前该值不会受到影响。以相同的方式,您将结果值保存在另一个寄存器中以便以后使用它。 还有其他方法可以在汇编中执行此操作,通常也使用堆栈推送和弹出值,但我认为我的观点已经足够明确了。 如果可以提供任何东西,我会在装配中使用一个简单的子程序向你发布一段代码来添加两个数字:

    org 00H
    
    mov R3,#10                 ;save the first parameter
    mov R4,#20                 ;save the second parameter
    
    call Sum                   ;execute the subroutine
    
    mov A,R3                   ;mov 30 to accumulator
    
    Sum:                       ;subroutine declaration
    add R3,R4
    ret
    
    end
    

答案 2 :(得分:1)

  1. 您可以调用的子程序返回给您。
  2. 函数是返回值的子例程。
  3. 方法是一个子程序或函数,可以用OO语言调用对象。
相关问题