第三次课后作业
一.程序设计思想
(1).首先建立一个类,设置几个函数。
(2).定义int型变量num=0,每个函数调用一次num便会加1。
(3).在最后main函数中调用几次函数,输出num。
二.程序源代码
package 创建对象个数;
public class Duixiang
{
static int num=0;
public void s1()
{
num++;
}
public void s2(int a)
{
num++;
}
public void s3(int b,int c)
{
num++;
}
public static void main(String[] args)
{
Duixiang a1=new Duixiang();
a1.s1();
a1.s2(666);
a1.s3(666,666);
System.out.println("共创建了"+num+"对象");
}
}
三.实验结果截图
动手动脑问题答案
1.int value=100;和MyClass obj=new MyClass();这两种方式定义的变量是一样的么?
答:不一样。前面只定义一个变量,后者定义的对象变量。
2.请输入以下代码,得到什么结果?
结果:
3.动手动脑:以下代码为何无法通过编译?哪出错了?
答:构造函数未定义。new Foo()缺少参数。
4.进行实验:以下代码输出结果是什么?请根据代码的输出结果,自行总结Java字段初始化规律。
运行结果:100
300
规律:所有类的变量都默认初始化null,数字类的原始数据类型默认初始化为0。执行类的成员定义的默认值或类的初始化块,到底执行哪个要看哪一个排在前面。类的初始化块不接收任何的参数,而且只要一创建类的对象,它们就会被执行。因此,适合于封装那些“对象创建时必须执行的代码”。
5.运行示例,观察输出结果,总结出“静态初始化块的执行顺序”。
答:静态初始化块只执行一次。创建子类型的对象时,也会导致父类型的静态初始化块的执行。
6.静态方法中只允许访问静态数据,那么,如何在静态方法中访问类的实例成员(即没有附加static关键字的字段或方法)?
调用了java.lang.String类,包含了字符串的值和实现比较特殊,可以不适用构造方法,就可以直接获得一个字符串对象。
7.两对整数明明完全一样,为何一个输出true,一个输出false?