这是一个程序
public class MovieTitle {
public static void main(String[] args) {
Movie one = new Movie();
one.title = "I am title";
one.playIt();
System.out.println(one.title);
}
}
class Movie {
String title;
void playIt() {
this.title = "I am title of movie";
}
}
输出“我是电影的标题” 我试图理解它,但直到现在我还是不理解它。 我想知道:为什么不打印“我是标题”
答案 0 :(得分:5)
事件顺序:
// create a new Movie called "one"
Movie one = new Movie();
// at this point, one.title is still null
// set the title to "I am title"
one.title = "I am title";
// call playIt, which in turn ...
one.playIt();
// sets the title to something else again
=> this.title = "I am title of movie";
如果您在致电playIt
之前打印了标题,它仍会显示为“我是标题”。
答案 1 :(得分:1)
这说明了原因:
public class MovieTitle {
public static void main(String[] args) {
Movie one = new Movie();
System.out.println(one.title);
one.title = "I am title";
System.out.println(one.title);
one.playIt();
System.out.println(one.title);
}
}
class Movie {
String title;
void playIt() {
this.title = "I am title of movie";
}
}
这是相应的输出:
java MovieTitle
null
I am title
I am title of movie
答案 2 :(得分:0)
因为你在调用playIt()时设置标题为“我是电影的标题”; 尝试更改两行的顺序
one.title = "I am title";
one.playIt();
答案 3 :(得分:0)
如果你追踪这些电话,它应该变得相当明显。
Movie one = new Movie();
此时标题将为NULL(即,它没有赋值)
one.title = "I am title";
现在你的电影对象有一个标题"我是标题"
one.playIt();
在一个上调用playIt()方法,该方法设置&#34的标题;这个" (这是一个)和#34;我是电影的标题"
答案 4 :(得分:0)
您将"I am title"
设置为title
类型的对象one
中的Movie
变量。
当你在同一个对象中调用方法playIt()
时,varible title会被另一个值"I am title of movie"
作为对象。
如果你反转这样的行
one.playIt();
one.title = "I am title";
输出将为"I am title"
,因为您在调用playIt()
方法后设置了此值。