基本变量传递混乱

时间:2013-10-12 16:13:39

标签: java

我在网上找到了一个教程,但我真的不知道怎么会这样:

Passed Name is :tommy

以下是代码:

public class Puppy {

    public Puppy(String name) {
        // This constructor has one parameter, name.
        System.out.println("Passed Name is :" + name);
    }

    public static void main(String[] args) {
        // Following statement would create an object myPuppy
        Puppy myPuppy = new Puppy("tommy");
    }
}

它究竟在哪里说name = tommy?我认为它至少可以使用像("passed Name is :" + myPuppy)这样的东西。

有人能帮我理解吗?

5 个答案:

答案 0 :(得分:7)

作为构造函数参数传递的值

Puppy myPuppy = new Puppy( "tommy" ); // the String reference to "tommy"

绑定到构造函数参数name

public Puppy(String name){

答案 1 :(得分:1)

它永远不会说name = tommy,你是对的。构造函数只打印传递给它的String name参数(实际上没有为`Puppy'的类实例设置成员名变量。)

答案 2 :(得分:1)

运行程序时,将执行main方法。

所以你执行这一行

Puppy myPuppy = new Puppy( "tommy" );

这意味着“创建可变的myPuppy,其类型是Puppy。 然后使用构造函数创建新对象,该构造函数只将一个String作为变量,并且此字符串的值为“tommy”。

这是一个构造函数,它与类名相同,没有void / return参数

public Puppy(String name)

因此它会运行并执行此行

System.out.println("Passed Name is :" + name );

变量名是“tommy”。

答案 3 :(得分:1)

在行中:

Puppy myPuppy = new Puppy( "tommy" ); // the String reference to "tommy"

请注意,“myPuppy”是java程序中的变量名,但“tommy”是您传递给Puppy类构造函数的String值。

因此,在行:

System.out.println("Passed Name is :" + name );

java变量“name”的值为“tommy”,这就是为什么最终结果是预期的结果:

“通过姓名是:汤米”

答案 4 :(得分:1)

这是传递变量的一个坏例子。它的一个类有main和一个构造函数。什么是构造函数是正确的问题。在java中,您可以拥有类,如果该类中的方法与该类相同,那么它就是构造函数。构造函数创建一个对象,就像你熟悉的原始对象一样,如int,boolean,float等...最大的区别是这个对象有附加到它的方法,其他基元,指针,其他对象。要将变量从一种方法传递到另一种方法,有两种方法。一个传递指针,两个传递一个值。

在此示例中,您没有传递正在创建具有值“tommy”的对象的变量,此对象的构造函数需要插入字符串。然后对象将屏幕作为其构造的一部分打印到屏幕上。