char也是在常量池里面吗?

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

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

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

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

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

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

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

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