我在网上找到了一个教程,但我真的不知道怎么会这样:
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)
这样的东西。
有人能帮我理解吗?
答案 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”的对象的变量,此对象的构造函数需要插入字符串。然后对象将屏幕作为其构造的一部分打印到屏幕上。