动手动脑--类与对象

一、

public class Test {
public static void main(String[] args) {
	Foo obj1=new Foo();
	Foo obj2=new Foo();
	System.out.println(obj1==obj2);
		}
	
}

class Foo{
	int value=100;
	
}

  

当“==”施加于原始数据类型变量时,是比较变量所保存的数据是否相等
当“==”施加于引用类型变量时,是比较这两个变量是否引用同一对象。
引用代表地址,所以“==”实际上相当于比较两个引用类型变量中保存的对象地址是否相同

二、

出现错误

public class Test {
public static void main(String[] args) {
	Foo obj1=new Foo();
	
		}
	
}

class Foo{
	int value;
	public Foo(int initValue) {
		
		value=initValue;
	}
	
}

  没有初始化

三、

public class InitializeBlockClass {
    {
        field=200;
    }
    public int field=100;
    public InitializeBlockClass(int value) {
        this.field=value;
    }
    public InitializeBlockClass() {
        
    }
    public static void main(String[] args) {
        InitializeBlockClass obj=new InitializeBlockClass();
        System.out.println(obj.field);
        
        obj=new InitializeBlockClass(300);
        System.out.println(obj.field);
    }
}

  

按顺序依次执行

四、

class Root
{
	static{
		System.out.println("Root的静态初始化块");
	}
	{
		System.out.println("Root的普通初始化块");
	}
	public Root()
	{
		System.out.println("Root的无参数的构造器");
	}
}
class Mid extends Root
{
	static{
		System.out.println("Mid的静态初始化块");
	}
	{
		System.out.println("Mid的普通初始化块");
	}
	public Mid()
	{
		System.out.println("Mid的无参数的构造器");
	}
	public Mid(String msg)
	{
		//通过this调用同一类中重载的构造器
		this();
		System.out.println("Mid的带参数构造器,其参数值:" + msg);
	}
}
class Leaf extends Mid
{
	static{
		System.out.println("Leaf的静态初始化块");
	}
	{
		System.out.println("Leaf的普通初始化块");
	}	
	public Leaf()
	{
		//通过super调用父类中有一个字符串参数的构造器
		super("Java初始化顺序演示");
		System.out.println("执行Leaf的构造器");
	}

}

public class TestStaticInitializeBlock
{
	public static void main(String[] args) 
	{
		new Leaf();
		

	}
}

  

由父类到子类先输出静态初始化块,然后是普通初始化块,无参数和有参构造器。

五、

public class Stac {

	public  int num;
	 static void change(Stac a)
	 {
	 a.num=10;
	 }
	public static void main(String[] args)
	{
		Stac b=new Stac();
	b.num=100;
	b.change(b);
	System.out.println(b.num);
}
}

  

如果先要在静态成原函数中调用非静态中的变量或方法,可以在静态成员函数中声明一个类的对象,然后再调用类的非静态成员或方法。

猜你喜欢

转载自www.cnblogs.com/sonofdemon/p/9825401.html