char和String的注意事项

char

  1. Java的char字符是两个字符采用的是Unicode编码可以表示中文
  2. char可以和int、short、long整型进行类型的相互装换,这是应为它们的本质上都是以二进制整型的形式进行存储的,但是在转换的过程中需要注意长度不同所造成的数据丢失。

String

  1. str1=new String("abc")与str2="abc"
    str1==str2是false
    str1.equse(str2)是true

对象常量池

  1. 从Java5.0开始,Java虚拟机在启动时会实例化9个对象池。分别用来存储8种基本类型的包装类对象和String对象,主要是为了效率问题。理解对象池的概念和字符串对象池的作用是很重要的,因为只用这用才能真正的灵活使用字符串数据。
    ***
  2. str1="abc"是先检查常量池中有没有相等的对象,若没有则在常量池中创建一个对象"abc"再将常量池对象的地址赋给str1若用则直接将地址赋给str1,而new String("abc")是先检查常量池中有没有相等的对象,若没有则在常量池中创建一个对象"abc",再在堆区中创建一个"abc"的对象若有则直接常见一个"abc"的对象。
    ***
  3. 对象池是为了避免频繁的创建和销毁对象而影响系统性能。当JVM在运行用双引号引起来一个字符串的代码时,会到String的对象池中去检查是否有一个字符序列相同的对象。如果有,就取现成的对象,如果没有,则在对象池中创建一个对象,并返回。
    ***
  4. 若有大量的字符串拼接采用Stringbuffer和StringBuilder可以避免大量的对象的创建
    StringBuffer不是线程安全的
    StringBuilder是线程安全的
    StringBuffer.reverse()字符串翻转

借鉴java程序员面试宝典

猜你喜欢

转载自www.cnblogs.com/lianqiqi/p/11028823.html
今日推荐