动手动脑--类与对象

Posted sonofdemon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了动手动脑--类与对象相关的知识,希望对你有一定的参考价值。

一、

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);
}
}

  技术分享图片

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

 



以上是关于动手动脑--类与对象的主要内容,如果未能解决你的问题,请参考以下文章

动手动脑——类与对象

Java课后动手动脑 类与对象

类与对象的动手动脑

类与对象动手动脑

动手动脑--类与对象

类与对象 动手动脑