当前位置: 代码迷 >> J2EE >> if语句为啥得不到执行?好奇怪
  详细解决方案

if语句为啥得不到执行?好奇怪

热度:44   发布时间:2016-04-17 23:21:29.0
if语句为什么得不到执行??好奇怪
if(map.get("topic")=="国内")
{
System.out.println("entry");
map0.put("0", "国内");
}

代码如上:经过输出语句判断map.get("topic")等于“国内”
那为什么不进入if判断语句??求救
------解决思路----------------------
把==改为.equals()
------解决思路----------------------
String s="abce"是一种非常特殊的形式,和new 有本质的区别.
 *
 * 它是java中唯一不需要new 就可以产生对象的途径.
 *
 * 以 String s="abce";形式赋值在java中叫直接量,它是在常量池中而不是象new 一样放在压缩堆中.
 * 这种形式的字符串,在JVM内部发生字符串拘留,即当声明这样的一个字符串后,JVM会在常量池中先查找有有没有一个值为"abcd"的对象,如果有,就会把它赋给当前引用.即原来那个引用和现在这个引用指点向了同一对象,如果没有,则在常量池中新创建一个"abcd",下一次如果有String
 * s1 = "abcd";又会将s1指向"abcd"这个对象,即以这形式声明的字符串,只要值相等,任何多个引用都指向同一对象.
public class Test1 {
 public static void main(String[] args) {
  String a = new String("ab"); // a 为一个引用
  String b = new String("ab"); // b为另一个引用,对象的内容一样
  String aa = "ab"; // 放在常量池中
  String bb = "ab"; // 从常量池中查找
  if (aa == bb) // true
   System.out.println("aa==bb");
  if (a == b) // false
   System.out.println("a==b");
  if (a.equals(b)) // true
   System.out.println("aEQb");
  if (42 == 42.0) { // true
   System.out.println("true");
  }
}
}
  相关解决方案