为了账号安全,请及时绑定邮箱和手机立即绑定

求解这段代码打印结果

//外部类
public class HelloWorld {

    private String name = "爱慕课";

    // 外部类中的show方法
    public void show() {
        // 定义方法内部类
        class MInner {
            int score = 83;

            public int getScore() {
                return score + 10;
            }
        }

        // 创建方法内部类的对象
        MInner newScore = new MInner();

        // 调用内部类的方法
       newScore.getScore();


        System.out.println("姓名:" + name + "\n加分后的成绩:" + newScore);
    }

    // 测试方法内部类
    public static void main(String[] args) {

        // 创建外部类的对象
        HelloWorld mo = new HelloWorld();

        // 调用外部类的方法
        mo.show();
    }
}

结果是:

姓名:爱慕课

加分后的成绩:HelloWorld$1MInner@1540e19d

我知道代码写错了,奇怪的是后面输出的@1540e19d,似乎再不同的IDE不一样

正在回答

4 回答

  不太懂你想表达的意识。如果你是想问@1540e19d这里每次都输出不同,那么我猜测可能是因为你的方法是return一个值,但这个值你没有手动赋予它存储空间,它就系统自动存放,因此可能会不一样。

可以尝试手动定义变量,给他赋值后用指针查看空间地址。然后比对一下应该就知道是不是上述猜想了。

0 回复 有任何疑惑可以回复我~

不好意思,我看错问题了。我的想法是,换了一个ide,应该又重新new一个MInner,内存就会给newScore重新分配一个地址。我试了一下,同一个ide输出的地址是相同的。

0 回复 有任何疑惑可以回复我~

你在调用内部类的方法时,输出的是newScore (是一个对象,最后得到的是它的存储地址),如果你想得到93这个结果,你需要声明一个int型的变量(我这里面是s),再把 newScore.getScore() 的结果赋给变量s(也就是     int s = newScore.getScore() ),最后输出s (这才是个整型变量)。

1 回复 有任何疑惑可以回复我~
//外部类
	public class HelloWorld {
	 
	    private String name = "爱慕课";
	 
	    // 外部类中的show方法
	    public void show() {
	        // 定义方法内部类
	        class MInner {
	            int score = 83;
	 
	            public int getScore() {
	                return score + 10;
	            }
	        }
	 
	        // 创建方法内部类的对象
	        MInner newScore = new MInner();
	 
	        // 调用内部类的方法
	       int s = newScore.getScore();
	        
	 
	        System.out.println("姓名:" + name + "\n加分后的成绩:" + s);
	    }
	 
	    // 测试方法内部类
	    public static void main(String[] args) {
	 
	        // 创建外部类的对象
	        HelloWorld mo = new HelloWorld();
	 
	        // 调用外部类的方法
	        mo.show();
	    }
	}


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

求解这段代码打印结果

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信