码迷,mamicode.com
首页 > 其他好文 > 详细

PPT动手动脑3

时间:2020-10-07 21:41:22      阅读:39      评论:0      收藏:0      [点我收藏+]

标签:lazy   str   必须   static   代码   引用   his   idt   out   

1.

技术图片

public class test5 
{
    public static void main(String[] args) 
    {
        Foo obj1=new Foo();
        Foo obj2=new Foo();
        Foo obj3=obj1;
        System.out.println(obj1==obj2);
        System.out.println(obj1==obj3);
    }
}
class Foo
{
    int value=100;
}

输出结果:

技术图片

当“==”施加于原始数据类型变量时,是比较变量所保存的数据是否相等。

而施加于引用类型变量时,是比较两个变量是否引用同一个对象。

引用代表地址值,所以“==”实际上是比较对象的地址是否相等。

obj1,obj2都开辟了一个空间所以地址值不同,

obj3的地址实际指向obj1,所以为true。

2.

技术图片

 

 

public class test5 
{
    public static void main(String[] args) 
    {
        Foo obj1=new Foo();
    }
}
class Foo
{
    int value;
    public Foo(int initValue)
    {
        value=initValue;
    }
    public Foo() {}
}

由于Foo定义了构造方法,所以系统不会再提供默认构造方法,

所以必须定义Foo的无参构造方法。

3.

技术图片

 

代码如下:

public class test5 
{
    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 InitializeBlockClass
{
    {
        field=200;
    }
    public int field=100;
    public InitializeBlockClass(int value)
    {
        this.field=value;
    }
    public InitializeBlockClass()
    {
        
    }
    
}

运行结果:

技术图片

 

 我们可以调整

{

   field=200;

}

的位置观察结果

技术图片技术图片

 

 

 技术图片技术图片

 

 技术图片技术图片

 

技术图片技术图片

 

 

 从这几个实验中不难看出规律;

对于对象的无参构造,field最终的值与初始化类字段的位置有关,即是按照线性顺序执行初始化类字段与其他语句的。

但对于对象的有参数的构造,field的值与初始化类字段无关至于有参构造方法有关。

 

PPT动手动脑3

标签:lazy   str   必须   static   代码   引用   his   idt   out   

原文地址:https://www.cnblogs.com/fengchuiguobanxia/p/13778144.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!