• 动手动脑--类与对象


    一、

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

      

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

  • 相关阅读:
    【前端学习笔记】函数柯里化(自网易云课堂)
    【前端学习笔记】call、apply、bind方法
    【前端学习笔记】arguments相关
    【前端学习笔记】函数定义、函数调用、this
    【前端学习笔记】闭包的作用及案例
    【前端学习笔记】利用iframe实现表单的无刷新提交案例
    【前端学习笔记】JavaScript 常用方法兼容性封装
    【前端学习笔记】JavaScript 小案例合集
    【前端学习笔记】JavaScript JSON对象相关操作
    牛客多校第10场J Wood Processing 分治优化/斜率优化 DP
  • 原文地址:https://www.cnblogs.com/sonofdemon/p/9825401.html
Copyright © 2020-2023  润新知