String[] a={"a"};于String a="a";有什么区别

解决方案 »

  1.   

    前者是定义数组a,而a只有一个元素,即a【0】=“a”
    后者是定义字符串变量a,a=“a”
      

  2.   

    前者a是指向一个数组,该数组有一个String元素即a[0]="a";
    后者a是一个String, a本身="a"
      

  3.   

    前面是一个 String数组对象 后面是一个String对象
      

  4.   

    问题升级一下,
    String[] a = {"a"};
    String b = "a";
    请问a[0] == b的结果是什么及为什么?
      

  5.   

    这个是把a数组的第一个元素和string对象b的值进行比较
    这这段代码就知道了
    String[] a = {"a"};
    String b = "a";
    if(a[0]==b){
    System.out.println("true");
    }
    else{
    System.out.println("false");
    }
      

  6.   

    这个是把a数组的第一个元素和string对象b的值进行比较
    这这段代码就知道了
    String[] a = {"a"};
    String b = "a";
    if(a[0]==b){
    System.out.println("true");
    }
    else{
    System.out.println("false");
    }
      

  7.   


    String a="a";//是个指向对象的引用名为 a(或 我们声明了一个String对象指向a)
    String[] a={"a"};//字符串型数组,“a”是数组a中的一个元素(在内存中占一段连续的单元)
    他(数组中元素String)也和类中String一样一:
    String a[]={"a"};
    String b="a";
    String c="a";
    if(b.equals(a[0])) //把a[0]换成c也一样输出true
    {
    System.out.println("true");
    }else
    {
    System.out.println("flase");
    }
    输出:true;二:
    String a[]={"a"};
    String b="a";
    String a[]={"a"};
    String c="a";
    if(b==(a[0]))  //把a[0]换成c也一样输出true
    {
    System.out.println("true");
    }else
    {
    System.out.println("flase");
    }
    输出:true
    因为: 他们引用的对象相同当引用对象不同时: String a[]={"a"};
    String b="a";
    String c="a";
    b=new String("a");
    a[0]= new String ("a");
    if(b==a[0])     //把a[0]换成c也一样输出flase
    {
    System.out.println("true");
    }else
    {
    System.out.println("flase");
    }
    输出:flase所以其他都一样;
    区别是:--String[] a={"a"};中的“a”(a[0])是数组的一个元素,而且他在内存中占一段连续的单元,可初始化;
    --String a="a";是字符指针变量,
      字符指针是指向字符的引用,所占内存单元存放的是所指字符的内存单元
    --如果定义了一个字符数组,在编译时为它分配内存单元,它有确定的地址。而定义一个字符,给指字符串分配内存单元,在其中可以放一个字符串的地址  
    --字符串可以重新赋值,而数组名是常量 
      

  8.   

    前面是数组, 后面是一个String