类与对象
一。
结果为:
二。
结果:
1)当“==”施加于原始数据类型变量时,是比较变量所保存的数据是否相等
2)当“==”施加于引用类型变量时,是比较这两个变量是否引用同一对象。
3)引用代表地址,所以“==”实际上相当于比较两个引用类型变量中保存的对象地址是否相同。两个对象各有各的地址,所以结果为false。
三。
原因:如果提供了一个自定义的构造方法,将导致系统不再提供默认构造方法。
四。
结果:
java字段初始化的规律:执行类成员定义时指定的默认值或类的初始化块,前面的先执行。也可通过执行类的构造函数为其赋值。
五。示例结果截图:
静态初始化块的执行顺序:
如果定义初始化块时使用了static修饰符,则变成了静态初始化块。静态初始化块时类相关的,系统将在类初始化阶段执行静态初始化块,而不是在创建对象时才执行。
因此静态初始化块总是比普通初始化块先执行。
与普通初始化块类似的是,系统在类初始化阶段执行静态初始化块时,不仅会执行本类的静态初始化块,而且还会一直上溯 到java.lang.Object类,先执行java.lang.Object类中的静态初始化块,然后执行其父类的静态初始化块,最后才执行该类的静态初始化块。经过这个过程,才完成了该类的初始化过程。只有当类初始化完成后,才可以在系统中使用这个类,包括访问类method、类Field,或者用这个类来创建实例。
六。如何在静态方法中访问类的实例成员?
public class T1
{ int x = 2;//类的实例变量,初始化值为2
static int y = 6;//类的静态变量,初始化值为6
public static void method()//静态方法
{
System.out.println("实例变量x = " + new T1().x);//在静态方法中访问类的实例变量需首先进行类的实例化
System.out.println("静态变量y = " + y);//在静态方法中可直接访问类的静态变量
}
public static void main(String[] args)
{
T1.method();
T1 ex = new T1();
System.out.println("x = " + ex.x);
}
}
结果截图:
七。Integer类的装箱和拆箱是怎样实现的:在装箱的时候自动调用的是Integer的valueOf(int)方法。而在拆箱的时候自动调用的是Integer的intValue方法。
八。请写一个类,在任何时候都可以向它查询“你已经创建了多少个对象?”
package demo;
public class T2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Number a1 = new Number();
Number a2 = new Number();
Number a3 = new Number();
Number.showCount();
}
}
class Number{
private static int number = 0;
{
number++;
}
public static void showCount(){
System.out.println("创建了"+number+"个对象");
}
}
实验结果截图: