第七章练习题part2
第八题
代码输出结果分析题
代码
public class Test{
int count = 9;
public void count1(){
count = 10;
System.out.println("count1=" + count);
}
public void count2(){
System.out.println("count1=" + count++);
}
public static void main(String[] args){
new Test().count1();
Test t1 = new Test();
t1.count2();
t1.count2();
}
}
输出结果
流程分析
new Test()为匿名对象,没有名字,不指向栈中的任何对象地址,用一次就被销毁
new Test().count1()即匿名对象调用方法count1():Test类中的属性count的初始值为9,在count1中执行count = 10;被赋值变成了10,所以此处也是输出10
t1.count2();在堆中开辟新的空间并指向栈中的t1,同时完成属性初始化,所以空间内存储了count = 9,t1调用count2(),count++先运算再自增,所以输出coutn1=9,同时空间内的count = 9----->count = 10;
二次执行t1.count2();原理同上所述,因为执行过上述语句后count = 10,所以输出count1=10;同时空间内的count = 10----->count = 11;
内存图如下
第九题
题目描述:定义music类,有音乐名name、音乐时长times、播放play功能和返回本身属性信息的功能方法getinfo
代码
public class HomeWork09 {
public static void main(String[] args){
Music m1 = new Music("笑傲江湖曲", 3.20);
m1.play();
System.out.println(m1.getInfo());
}
}
//定义music类,有音乐名name、音乐时长times、播放play功能和
//返回本身属性信息的功能方法getinfo
class Music{
String name;
double times;
//构造器完成对象属性的初始化
public Music(String name, double times){
this.name = name;
this.times = times;
}
//播放功能,方法play
public void play(){
System.out.println(&