java 大杂烩

2017-03-06  本文已影响81人  时芥蓝

Http

代理

正向代理代理的对象是客户端,反向代理代理的对象是服务端

Integer 值的比较

在jdk1.5的环境下,有如下4条语句:

Integer i01 = 59; //1
int i02 = 59; //2
Integer i03 =Integer.valueOf(59);//3
Integer i04 = new Integer(59)。//4

解析:

  public static Integer valueOf(int i) {
     assert IntegerCache.high>= 127;
     if (i >= IntegerCache.low&& i <= IntegerCache.high)
     return IntegerCache.cache[i+ (-IntegerCache.low)];
     return new Integer(i); }

这个方法就是返回一个 Integer 对象,只是在只是在返回之前,看作了一个判断,判断当前 i 的值是否在** [-128,127]** 区别,且IntegerCache 中是否存在此对象,如果存在,则直接返回引用,否则,创建一个新的对象。
在这里的话,因为程序初次运行,没有 59 ,所以,直接创建了一个新的对象。


内部类

public interface Father {}
public interface Mother {}
public class Son implements Father, Mother {}
public class Daughter implements Father{
    class Mother_ implements Mother{  }
}

其实对于这个实例我们确实是看不出来使用内部类存在何种优点,但是如果Father、Mother不是接口,而是抽象类或者具体类呢?这个时候我们就只能使用内部类才能实现多重继承了
其实使用内部类最大的优点就在于它能够非常好的解决多重继承的问题,但是如果我们不需要解决多重继承问题,那么我们自然可以使用其他的编码方式,但是使用内部类还能够为我们带来如下特性:

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

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

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

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

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

上一篇下一篇

猜你喜欢

热点阅读