错题集

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.重载在一个类中,重写在继承中,重写中子类和父类相同方法名,参数类型和参数表
原文地址:https://www.cnblogs.com/bb3q/p/5089545.html