Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中有这样的方法吗?还是仅仅是一些;“哑巴”;从书中的方法来展示例子?_Java_Methods - Fatal编程技术网

在java中有这样的方法吗?还是仅仅是一些;“哑巴”;从书中的方法来展示例子?

在java中有这样的方法吗?还是仅仅是一些;“哑巴”;从书中的方法来展示例子?,java,methods,Java,Methods,下面的Java方法-method1通常做什么?它没有返回参数(因为为void)。它只是将输入参数(inta)修改为方法(6)主体中所述的值吗?或者它只是将一些int a作为输入,并将一些全局参数a修改为输入值?这些方法有什么意义 public void method1 (int a){ a = 6; } 是的,当脱离上下文考虑时,该代码片段是毫无意义的。你的教科书中可能有更大的课程,但我们只能猜测可能是什么,因为我们没有你的教科书 该方法接收包含某个数字的基元(不是对象)变量。然后,该

下面的Java方法-method1通常做什么?它没有返回参数(因为为void)。它只是将输入参数(inta)修改为方法(6)主体中所述的值吗?或者它只是将一些int a作为输入,并将一些全局参数a修改为输入值?这些方法有什么意义

public void method1 (int a){
    a = 6;
}

是的,当脱离上下文考虑时,该代码片段是毫无意义的。你的教科书中可能有更大的课程,但我们只能猜测可能是什么,因为我们没有你的教科书

该方法接收包含某个数字的基元(不是对象)变量。然后,该方法的唯一一行将丢弃传递的值,并将其替换为数字
6
。这毫无意义,原因有二:

  • 我们丢弃了调用程序员发送给我们的值。那个打电话的程序员试图给我们发消息,但我们忽略了消息的内容
  • 我们不做进一步的工作。在为变量赋值6之后,它将超出范围,最终将被垃圾收集。没有完成任何有成效的工作
要清楚的是,我们并没有改变调用程序员的任何内容。当我们的方法完成执行时,变量
a
超出范围,值
6
消失在烟雾中

顺便说一下,将
final
添加到参数声明中会告诉编译器将参数变量的重新赋值标记为不同的值

public void method1 ( final int a ){ …

重点可能是讨论按值调用,以及使用基本类型(如示例中)或引用类型(如此处所示)时产生的细微差异

int someA[] = ...
foo(someA);

List someA=。。。
富(someA)
void foo(列表a){a.clear()
实际上会在调用
foo()
的地方产生效果


换句话说:问题中显示的方法实际上是一个不可操作的方法,它不做任何外界可以观察到的事情(在另一个答案中有很好的解释)。

这可能是一个示例,表明Java是按值传递的,而不是按引用传递的,因为在执行
intx=1;obj.method(x)之后
x的值将保持不变(仍然为1)。编写一些代码并测试该方法,看看在不同场景中会发生什么。除了作为教程的一部分外,这没什么意义。基本上它什么都不做。(正如建议的那样,您可以尝试一下,看看会发生什么。)@标记空间这是我问题的重点。我应该键入什么来查看不做任何事情的方法的输出?如果没有适当的知识,我只能猜测它做什么。@Pshemo谢谢。我想我发现了有用的链接只是吹毛求疵,原语变量被分配到堆栈上,当方法返回时,如果没有g,则立即释放阿巴奇收集正在参与。
void foo(int a[]) { a[0] = 1;
List<Whatever> someA = ...
foo(someA)

void foo(List<Whatever> a) { a.clear()