String str1="";
String str2=" ";
String str3=null;
String str4=new String();

解决方案 »

  1.   

    String str1=""; // str1是一个空字符串
    String str2=" ";  // str2是一个包含一个空格字符的字符串
    String str3=null;  // str3不是字符串,是null
    String str4=new String();   str4的值和str1相同,但是str4在堆上分配内存,且不可重用
      

  2.   

    首先,String是个类;其次
    str1建立一个字符串,内容为空;
    str2建立一个字符串,内容为一个空格;
    str3建立字符串,但是str3没有指向任何内容,null不是空,是什么都不是的意思;
    str4新建一个字符串,没有内容,默认为null
      

  3.   

    别的都知道,那str3在内存中是怎么回事啊?
      

  4.   

    str3只是一个引用,相当于C中的指针,是个地址,但无实际内容,等待你给他赋值
      

  5.   

    str3是指向栈中一个null的引用,栈中如果有null,str3就指向,没有就创建一个null,str再指向。当你给str3赋值后,str3就会指向其他的地址。
      

  6.   

    null只是个java的关键字,实际没有指向任何地方.
      

  7.   

    4个String声明是没有区别的,都声明了一个String类型的引用,只不过它们初始指向的地方不同而已.
      

  8.   

    String str1=""; // str1是一个空字符串 字符串常量 分配在数据区 String str2=" "; //str2是一个的字符串,它是一个空格 分配在数据区String str3=null; //str3是null String str4=new String();//在堆内存分配空间 值是null
      

  9.   


    刚才测试过,String str4 = new String(); System.out.println(str4); 结果:空串,而不是null.