String s =
"hello"
;
String t =
"hello"
;
1.char
c [ ] = {
'h'
,
'e'
,
'1'
,
'1'
,
'o'
};
System.out.println(s.equals (t));
//true s和t指向内存常量区的同一个字符串 ;
System.out.println(t.equals (c));
//false 一个返回字符串,一个返回对象 ;
System.out.println(s==t);
// true s和t指向内存常量区的同一个字符串 ;
System.out.println(t.equals (
new
String (
"hello"
)));
//true equal用于比较两个对象的值是否相同,和内存地址无关
2.Java线程之间的通信由Java内存模型(简称为JMM)控制,JMM决定一个线程对共享变量的写入何时对另一个线程可见。从抽象的角度来看,JMM定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在主内存(main memory)中,每个线程都有一个私有的本地内存(local memory),本地内存中存储了该线程以读/写共享变量的副本。本地内存是JMM的一个抽象概念,并不真实存在。它涵盖了缓存,写缓冲区,寄存器以及其他的硬件和编译器优化
volatile变量的写-读可以实现线程之间的通信。
从内存语义的角度来说,volatile与监视器锁有相同的效果:volatile写和监视器的释放有相同的内存语义;volatile读与监视器的获取有相同的内存语义。
3.ArrayList就是动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了如下一些好处:
1> 动态的增加和减少元素
2> 实现了ICollection和IList接口
3> 灵活的设置数组的大小
4.重载在一个类中,重写在继承中,重写中子类和父类相同方法名,参数类型和参数表