第三章:面向对象编程1
1、
程序运行结果
b=true
c=A
i=100
f=0.8
d=100.0
s=hello
2、
程序运行结果
b=false
c=
i=0
f=0.0
d=0.0
s=null
各个数据类型未初始化的值,char为空
3、
程序运行结果
Area of r1 is:1
x 和 y 在无参构造函数中进行了初始化
4、
程序运行结果
Area of r1 is:0
x 和 y 未初始化的值是 0
5、
程序运行结果
Area of r1 is:0
Area of r1 is:6
第一行使用了无参构造函数,x 和 y 都是 0
第二行使用了有参构造函数,x 是 2,y 是 3
6、
程序运行结果
Person初始化块:局部变量a的值大于4
Person初始化块
Person类的无参构造器
{
a = 6;
if(a>4){
System.out.println("Person初始化块:局部变量a的值大于4");
}
System.out.println("Person初始化块");
}
上式为”代码初始化块“,类创建时会在执行构造方法前隐式调用它
执行顺序:代码初始化块 -> 构造函数
7、
程序运行结果
2
3
无参构造函数内部初始化
8、
程序运行结果
W:1
W:3
W:2
执行顺序:分配空间 -> 清零 -> 指定初始化 -> 构造函数初始化
上题的指定初始化是指:
Window w1 = new Window(1);
Window w2 = new Window(3);
构造函数初始化是指:
House(){w2 = new Window(2);}
因此,输出:
W:1
W:3
W:2
9、
程序运行结果
100
200
- 传递的参数是基本数据类型(boolean、char、byte、short、int、long、float、double)则传递后,原值不发生改变。
- 传递的参数是引用数据类型(类、数组、接口)则传递后,原值发生改变。
由于 temp 是 int 型属于基本数据类型,所以传参后 temp 维持原值不变。
而 pvt 是 类 类型属于引用数据类型,所以传参收要随着参数后续的变化而变化。
10、
程序运行结果
100
-100
200
解析:
- 第一行:temp 是 int 型属于基本数据类型,所以传参后 temp 维持原值不变
- 第二行:输出了 obj.i 的初始值,即-100
- 第三行:pvt 是 类 类型属于引用数据类型,所以传参收要随着参数后续的变化而变化
11、
程序运行结果
A
1
66
A
B1
67
解析:
- 第一行:由于 65 对应着 'A',所以输出 'A'
- 第二行:输出 int 类型的 1
- 第三行: char + int 或者 int + char 输出 int 类型,即输出 66(65 + 1)
- 第四行:先输出 'A',再将 c 的值变为 'B'('A' ++)
- 第五行:由于上句已将 c 的值改为了 'B',整句话是将 s、c、i 以字符串的方式连起来,所以会输出 B1(s 为空,c 为 B,i 为 1)
- 第六行:
- 由于 s 在尾部,整句话以 int 的方式进行输出,即输出 67(B 对应 66,66 + 1 = 67)
- 如果 s 在第一位(s + i + c)或第二位(i + s + c),则均以字符串的形式输出
12、
程序运行结果
no paramenters
char
int
double
int, float
float, int
观察数据类型及其顺序
13、
程序运行结果
27
34
14、
程序运行结果
x=3 y=2
z=100
15、
程序运行结果
x=3 y=0
z=100
16、
程序运行结果
无法运行。
错误原因:java: 可能尚未初始化变量x
局部变量未初始化
17、
程序运行结果
无名氏说:你好
无语...
无参构造函数中使用 this 关键字调用了有参构造函数,初始化了name、age 和 gender
18、
程序运行结果
10,10,10,0
-1,-1,10,-1
20,20,10,-1
static 所修饰的变量,为所有成员所共享
19、
程序运行结果
static block
f
static { System.out.println("static block"); }
上述代码为静态初始化块,在类加载时执行,在构造函数前
注意:
如果程序同时有静态初始化块和代码初始化块时,先执行静态初始化块,再执行代码初始化块
20、
程序运行结果
static block
f
f
f
静态初始化块只执行一次,但是代码初始化块可执行多次
21、
程序运行结果
static block
As
实例化对象(new As())会自动加载类 -> 执行静态初始化块 -> 执行构造函数
22、
程序运行结果
static block
As
As
As
静态初始化块只执行一次
23、
程序运行结果
A:1
static block
A:2
静态属性安定义顺序执行
如果上述代码有代码初始化块,则代码初始化块在最后执行
24、
程序运行结果
W:3
W:1
House
W:2
优先执行静态变量 -> 非静态后续执行