java基础

1、为什么要使用内部类?

①主要原因:使用内部类最吸引人的原因是:每个内部类都能独立地继承一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现,对于内部类都没有影响。

②内部类的其他好处

      1、内部类可以用多个实例,每个实例都有自己的状态信息,并且与其他外围对象的信息相互独立。

      2、在单个外围类中,可以让多个内部类以不同的方式实现同一个接口,或者继承同一个类。

      3、创建内部类对象的时刻并不依赖于外围类对象的创建。

      4、内部类并没有令人迷惑的“is-a”关系,他就是一个独立的实体。

      5、内部类提供了更好的封装,除了该外围类,其他类都不能访问。

注意点:

        在成员内部类中要注意两点,第一:成员内部类中不能存在任何static的变量和方法;第二:成员内部类是依附于外围类的,所以只有先创建了外围类才能够创建内部类。推荐使用getXXX来获取成员内部类。尤其是该内部类的构造函数无参时

 

2、【推荐】类成员变量与方法访问控制从严:

①如果不允许外部直接通过new来创建对象,那么构造方法必须是private。

②工具类不允许有public或default构造方法(工具类一般所有方法都是静态方法)。

③类非static 成员变量并且与子类共享,必须是protected。

④类非static成员变量并且仅在本类使用,必须是private

⑤类static 成员变量如果尽在本类使用,必须是private

⑥若是static成员变量,必须考虑是否为final

⑦类成员方法只供类内部使用,必须是private

⑧类成员方法只对继承公开,那么限制为protected

 

3、BigDecimal使用:

①要精确表示浮点数应该使用BigDecimal,而不是Double

②BigDecimal的Double入参构造方法存在精度丢失问题,需要使用String入参构造或者BigDecimal.valueof方法来初始化

③BigDecimal比较需要使用CompareTo,不能使用Equal

 

4、值比较总结:

①基本类型使用==,其他类型都需要使用equals。经典案例如下,Integer.valueof(127),在内部做了缓存,使得指向同一对象,因为默认缓存范围是[-128,127],所以针对包装类的比较只能使用equals。

System.out.println(Integer.valueOf(127) == Integer.valueOf(127));
System.out.println(Integer.valueOf(128) == Integer.valueOf(128));

 

 

 

参考:https://www.cnblogs.com/chenssy/p/3388487.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值