- 浏览: 92955 次
- 性别:
- 来自: 深圳
最新评论
文章列表
一,简介
修饰变量,用于标明该变量不用序列化到字节流中。
static class User implements Serializable{
private static final long serialVersionUID = 1L;
private String username = null;
private transient String password = null; //使用 transient 关键字标明该变 ...
一,案例情景
/** Integer案例**/
Integer i1 = 128;
Integer i2 = 128;
Integer i3 = 127;
Integer i4 = 127;
System.out.println(i1 == i2);//false
System.out.println(i3==i4); //true
/** Long案例**/
Long l1 = 128L;
Long l2 = 128L;
Long l3 = ...
一,区别介绍
对于引用类型 == 比较的是引用的地址是否相等。即两个变量是否指向同一个内存空间。对于基本数据类型byte,short,int,long,float,double,boolean,char(8种基本数据类型),则是比较的值(即内容)相等。
equals 用于比较对象内容是否相等。
二,Object类中的equals方法
源码:
public boolean equals(Object obj) {
return (this == obj);//Object中默认是比较引用地址是否指向同一内存空间
}
...
一,深拷贝与浅拷贝的区别
对于引用类型类型变量,深拷贝是对变量所指向实例的完全拷贝,而浅拷贝则只是对该变量引用地址进行拷贝。
二,深拷贝与浅拷贝的实现
浅拷贝:
深拷贝:
三,备注
Object中的clone()方法只是对实例进行浅拷贝,如果要实现深拷贝,必须对其进行重写。而且该方法能够识别出实例的具体类型,所以上述的强制转换不会出错!。java串行化实现深拷贝比较耗时。
在JDK中提供了一些原子操作类: java.util.concurrent.atomic原子操作。
对于原子类变量的操作是不会存在并发性问题的,不需要使用synchronized关键字额外的实现线程同步。它底层自身的实现即可保证变量的可见性以及操作的原子性。一般我们可以使用AtomicInteger,AtomicLong等实现计数器等功能,利用AtomicBoolean实现标志位等功能。
实现线程安全的常见两种机制:
加锁机制(常见synchronized和