关于使用带参数的方法的疑惑

时间:2016-02-04 14:35:24

标签: java

首先,我刚开始通过教程学习java。 所以我按照这个教程。 我有一个问题 - 为什么我们使用带参数的方法? 下面是教程的屏幕截图,其中有两个类--Apples.java(Main),Tuna.java。 现在,在Tuna.java中,为什么他把' String name'在simpleMessage方法中? 不能是这样的:

public class tuna {
    public void simpleMessage(){
        String name;
        system.out.println("Hello"+name);
    }
}

苹果

Apples.java Class

金枪鱼

Tuna.java class

4 个答案:

答案 0 :(得分:0)

在方法中将其声明为参数的原因是您可以将值传递给它:

public static void main(String[] args)
{
    Tuna tuna = new Tuna();
    tuna.simpleMessage("Manpreet");
}

输出:

  

Manpreet

如果在方法中声明name,则无法向其传递任何内容。

public void simpleMessage()
{
    String name = "Manpreet";
    system.out.println("Hello"+name);
}

在上面的情况下,名称是在方法中声明的,所以我可以在方法中填充它,但不能通过向它传递值。

在下面的示例中,我将值“Manpreet”传递给参数name

public void simpleMessage(String name)

tuna.simpleMessage("Manpreet");

答案 1 :(得分:0)

您编写的代码会产生NullPointerException,因为您只声明了您的变量。如果您使用带参数的建议构造,变量name中将有一个值,因为它已作为参数传递。

您假设的代码会输出Hellonull因为您的变量没有值。

答案 2 :(得分:0)

  

难道不是吗?

public class tuna {
    public void simpleMessage(){
        String name;
        System.out.println("Hello"+name);
    }
}

不,这段代码会产生错误,因为必须为局部变量赋值。

而且:

public class tuna {
    public void simpleMessage(){
        String name = "Manpreet";
        System.out.println("Hello "+name);
    }
}

将始终打印相同的

Hello Manpreet

(不是很有用,对吗?)

正确的方法是你在图片中发布的那个,让我们看看:

在此行中,您等待用户的输入:

String name = input.nextLine();

按下enter键时,输入的内容存储在变量name中,并通过方法中的参数传递给tuna对象

tunaObject.simpleMessage(name);

关键是,name只是两个类中匹配的变量名...但是这将是相同的:

String userName = input.nextLine();
tunaObject.simpleMessage(userName);

您在此处传递的是值,变量名称在到达tuna对象时会丢失。

答案 3 :(得分:-1)

该字符串是该方法的参数。方法可以采用参数,这些参数成为方法签名的一部分,如:

public void receiveString(String test)

private int receiveInt(int test)

参数用于在方法之间传递信息。请记住,Java始终是按值传递的(您传递的变量不会在其原始范围内受到影响)。