慕粉3814228
2017-12-26 14:47
//外部类
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不一样
不太懂你想表达的意识。如果你是想问@1540e19d这里每次都输出不同,那么我猜测可能是因为你的方法是return一个值,但这个值你没有手动赋予它存储空间,它就系统自动存放,因此可能会不一样。
可以尝试手动定义变量,给他赋值后用指针查看空间地址。然后比对一下应该就知道是不是上述猜想了。
不好意思,我看错问题了。我的想法是,换了一个ide,应该又重新new一个MInner,内存就会给newScore重新分配一个地址。我试了一下,同一个ide输出的地址是相同的。
你在调用内部类的方法时,输出的是newScore (是一个对象,最后得到的是它的存储地址),如果你想得到93这个结果,你需要声明一个int型的变量(我这里面是s),再把 newScore.getScore() 的结果赋给变量s(也就是 int s = newScore.getScore() ),最后输出s (这才是个整型变量)。
//外部类
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();
}
}Java入门第二季
531291 学习 · 6327 问题
相似问题