繁体   English   中英

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

[英]Java: What is the difference between subroutine and methods?

有什么区别?

public write(){
// dostuff
}

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

我不理解这些术语,因为它们的含义是如此相似?

因此,如果我非常严格和学究,那会是哪一个? 我更喜欢将它们称为子例程,这严格正确吗?

编程语言:JAVA

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

我可以将函数称为块吗?

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

我不会将块称为函数或子例程,但会将函数,方法等称为块。 称它们为方块会好吗?

那么,这是否意味着有些准确? 不能在程序块外部访问局部变量(是的,在某些情况下,这是不正确的)。

  1. 子例程是您可以调用并返回给您的东西。
  2. 函数是返回aa值的子例程。
  3. 方法是可以用OO语言调用对象的子例程或函数。

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

子例程是功能语言或过程语言(例如FORTRAN和COBOL)的术语。 这些语言将数据和方法分开,方法对它们给出的数据进行操作。

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

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

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

public void write()
{}

现在,关于您最初提出的问题: 子例程和方法之间有什么区别 ?恩,基本上没有任何区别 但是,如果您想更深入一点,那么我们将不得不进行IMO的汇编编程。 实际上,汇编中的子例程与方法在两点上有所不同:

  1. 他们没有传递参数
  2. 他们什么也没退

而且,您可能会问自己:那么,我该如何处理任何事情,该子例程如何工作? 在汇编程序中,寄存器是在其中发挥作用的,而不是像在每种高级编程语言中使用方法那样将参数传递给子例程,而必须在调用子例程之前保存要处理的值(参数),确保在到达子例程之前该值不会受到影响。 以同样的方式,将结果值保存在另一个寄存器中,以备后用。 还有其他一些在组装中执行此操作的方法,通常也可以通过使用堆栈中的推入和弹出值来完成此操作,但是我想我的观点很清楚。 如果可以满足任何要求,我将使用简单的子例程在程序集中向您发布一个o代码,以添加两个数字:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM