Java构造代码块的使用

    在Java中,代码块{}分为好几种,其中一种就是构造代码块,何为构造代码块呢?简单来说就是用{}包起来的代码片段,在创建对象时会被调用,每次创建对象时都会被调用。

   在刷题的时候,发现有这样一种用法:

object a=new object(){

一个构造方法

};

  可以看到, 我们在new对象的时候,没有立即用“;”结束,而是在构造代码块中使用了一个构造方法。问题来了,这样的表达,是什么意思呢?上面不是提到,构造代码块在创建对象时会被调用,每次创建对象时都会被调用。在上面代码中,我们new后并没有立即用“;”结束,而是调用了代码块中构造方法,因此这相当于创建对象直接调用了方法。在new的时候,会在堆中开辟空间,并检查class是否存在,在上面的代码中,object是超类,因此可以直接进行调用。我大胆的发散思维一下,假如我们用的不是object,这样的代码块还能不能这样调用里面的构造方法呢?做了如下的试验:

package FF;
public class TestStu{
	public static void main(String[] args)
{ Student o=new Student(){
	public boolean equals(Student ss)
{ 
	return true;
	                                    } 
                                        };
System.out.println(o.equals("hs"));
                                        }
                                        } 

class Student{
	
}

运行结果为:

false

    为什么结果是false呢?说明并未能成功调用equals()方法,因为equals(“hs”)中的“hs”不是Student类。那么,假如我们将构造方法equals(“hs”)换成equals(o)会不会成功调用呢?

package FF;
public class TestObj{
	public static void main(String[] args)
{ Student o=new Student(){
	public boolean equals(Student ss)
{ 
	return true;
	                                    } 
                                        };
System.out.println(o.equals(o));
                                        }
                                        } 

class Student{
	
}

结果如下:

true

    说明是完全OK的。

    我们还可以发现new对象然后加个构造代码块,与构造方法是非常像,都是这样形式的:

A(){

}

细心的我们可以看到,若是构造方法的话,不会出现new和“;”等字眼。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值