qowoeo7538
2015-01-07 14:21
采纳率: 73.7%
浏览 2.0k
已采纳

char也是在常量池里面吗?

java中String是一个char[]类型的数组,那char也是在常量池里面吗?如果是的话.
String a ="A";
char ch = 'A';

a==ch;不应该是true吗?
如果不是那他们该怎么比较?

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • 91program 2015-01-07 14:44
    已采纳

    只有字符串才会放在常量池中,但 String 不一样的,在它构造函数中应该会动态分配空间的。
    char *p = ""A; 这时的 “A” 是放在常量池中,因为指针没有初始化的地方,类不一定的。
    字符串就算只有一个字符,但也有一个字符串结束符。
    不是一个类型,不能这样比较的。可以考虑使用 String 类的取一个字符的成员,如:GetAt(0).

    打赏 评论
  • oyljerry 2015-01-07 14:23

    一个是字符串,一个是字符。类型都不一样

    打赏 评论
  • threenewbee 2015-01-07 15:03

    只有字符串,并且作为常量存在的字符串才放在常量池里。

    常量池和比较没有什么关系,你甚至不知道有常量池这个概念都没事,因为它完全是一种透明的性能优化。

    所谓“透明”的含义是,从程序执行的角度看,你不能区分一个字符串变量是否放在了常量池里面。

    打赏 评论
  • 麦索 2015-01-07 15:54

    可以比较他们的toString是否一致,用==比较不是比较他们的值而是比较他们是不是指向同一个对象,也就是说如果他们不是同一个对象必然返回falsh

    打赏 评论

相关推荐 更多相似问题