在学习Thinking In java时, 遇到 Chapter 2 的 Exercise 1, 问题是这么说的 "/** 创建一个类, 它包含一个 int 域, 一个 char 域, 他们都没有初始化, 将他们的值打印出来, 验证 Java 执行了默认初始化". 刚拿到这道题目我是这么写的.
- 1.
- package Two;
- public class ExerciseOne {public static void main(String [] args)
- {
- int a;
- char c;
- System.out.println(a);
- System.out.println(c);
- }
- }
- /**
- 后果很容易想到, 第一次动手写肯定不咋地, 就成了不能编译的程序了
- **/
对程序稍作修改之后, 成了下面这个样子
- 2.
- package Two;
- public class ExerciseOne{
- static int a;
- static char c;
- public static void main(String [] args)
- {
- System.out.println(a);
- System.out.println(c);
- }
- }
- /**** 这次能够运行的原因是, 将类 Exercise 里面的成员变量修饰为 static, 之所以这么做的原因是, 我们都知道 main() 方法是 static 修饰的, 所以其只能访问 static 修饰的成员, 原因是没有被 static 修饰的成员需要先创建对象才能访问, 而静态方法则在被调用时可以不创建任何对象.**/
而关于对象与引用之间的说明, 请大家自己阅读 Java 书籍, 相信会有很多收货.
最后, 我又看了看标准答案, 如下:
/** 标准答案
package Two;
public class ExerciseOne{
int i;
char c;
public ExerciseOne(){
System.out.println("i="+i);
System.out.println("c="+c);
}
public static void main(String []args){
new ExerciseOne();
}
}**/
标准答案的关键是用生成一个实例对象来 "发送消息" 给类 ExerciseOne 的 Int 与 char 成员变量, 说我要调用你们了, 接着就打印出值了.
来源: http://www.bubuko.com/infodetail-2729233.html