java中的String可以使用==比较字符串内容

  • 格式:doc
  • 大小:25.50 KB
  • 文档页数:1

一句话概括:
java中的String是final类,final类是共享数据的,而java中==比较的是内存地址,而final 类的String相同字符串,指向的是同一个地址!
详细:
“==”在任何时候都是比较地址,这种比较永远不会被覆盖。

java中的String类是final类,final修饰类,被final修饰的类将不能被继承。

final类中的方法也都是final的。

对象一旦创建属性就不会改变,不变模式可以实现对象的共享(可以用一个对象实例赋值给多个对象变量)。

池化的思想,把需要共享的数据放在池中(节省空间,共享数据)只有String类可以用“”中的字面值创建对象。

在String类中,以字面值创建时,会到Java方法空间的串池空间中去查找,如果有就返回串池中字符串的地址,并把这个地址付给对象变量。

如果没有则会在串池里创建一个字符串对象,并返回其地址付购对象变量,当另一个以字面值创建对象时则会重复上述过程。

如果是new在堆空间中创建String类的对象,则不会有上述的过程(String做字符串连接效率低原因)。

所以相同字符串在内存是同一个对象,一个永不变的对象!。