Java学习笔记04

Java学习笔记04

  • volatile关键字只能保证可见性,不能够保证原子性。但是jvm在操作long和double型变量的时候,若该变量使用volatile修饰,则jvm会保证对变量的操作是原子性的。

  • wait()方法最好是放在循环里而不是If里面,因为该线程获得CPU运行的时候,可能其他条件尚未满足,以下为示例代码:

// The standard idiom for using the wait method
synchronized (obj) {
    while (condition does not hold)
        obj.wait(); // (Releases lock, and reacquires on wakeup)
        ... // Perform action appropriate to condition
}
  • a = a + b 和 a += b的区别:前者不会进行类型的自动转换,而后者会进行类型的自动提升。
byte a = 127;
byte b = 127;
b = a + b; // error : cannot convert from int to byte
b += a; // ok
  • int 和 Integer 相比,Integer会占用更多的内存,因为Integer是对象,需要存储对象的元数据。

  • 在JDK7之后 ,我们可以在switch中使用String,但是内部是使用对String的hash code

  • Java中的四种引用

    StrongReference(强引用):Java的默认实现,会尽可能时间长的存活于JVM内,当没有任何对象指向它时会被GC
    SoftReference(软引用):尽可能时间长的保存知道JVM内存不足时才会被回收。
    WeakReference(弱引用):当引用的对象在JVM内不再有强引用时,会被GC回收。
    PhantomReference(虚引用):虚引用必须和引用队列一起使用。当GC时若发现存在虚引用,会在回收对象的内存之前,把该虚引用加入关联的引用队列中。

  • WeakHashMap:与正常的HashMap类似,但是是使用弱引用作为key,当key没有任何引用时,key/value将会被回收

  • 数组没有实现toString()方法,因此想要打印数组元素的时候要使用Arrays.toString(int[] var0)或者Arrays.deepToString(Object[] var0)。

  • Java中的LinkedList是双向链表

  • Java中的HashSet内部采用HashMap实现。所有的key都有一个默认的value。

  • ArrayList默认大小是10个元素,HashMap默认大小是16个元素。

  • DateFormat的所有实现包括SimpleDateFormat都不是线程安全的。在多线程环境使用时,可以限制在ThreadLocal中或者使用joda-time库。

  • Java中计算两个日期的差距:

public static int dateDiff(Date d1, Date d2) throws Exception {
    long n1 = d1.getTime();
    long n2 = d2.getTime();
    long diff = Math.abs(n1 - n2);

    diff /= 3600 * 1000 * 24;
    return diff;
}
  • 适配器模式和装饰器模式的不同

    虽然适配器模式和装饰器模式的结构类似,但是每种模式的出现意图不同。适配器模式被用于桥接两个接口,而装饰模式的目的是在不修改类的情况下给类增加新的功能。

  • 适配器模式和代理模式的不同

    适配器模式和代理模式的区别在于他们的意图不同。由于适配器模式和代理模式都是封装真正执行动作的类,因此结构是一致的,但是适配器模式用于接口之间的转换,而代理模式则是增加一个额外的中间层,以便支持分配、控制或智能访问。

  • JDK7中的新特性

    1. try-with-resource语句:在使用流或者资源的时候不需要手动关闭
    2. 允许switch中使用String变量
    3. 菱形操作(<>)用于类型推断,不再需要在变量声明的右边声明泛型
    4. 允许在同一个catch块中捕获多个异常
  • JDK8中的新特性

    1. Lambda表达式:允许像对象一样传递匿名函数
    2. Date与Time API
    3. 接口中允许定义默认方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值