public static void  main(String[] args)
      {       int[] a1 = {1,2,3,4,5};
       int[] a2;
       a2=a1;
       for(int i= 0;i<a2.length;i++){
       a2[i]++;
           }
       for(int i =0;i<a1.length;i++){
       System.out.println("a1|"+i+"| = " +a1[i]);
       }
      }输出结果是: 
a1|0| = 2
a1|1| = 3
a1|2| = 4
a1|3| = 5
a1|4| = 6为什么不是12345 呢,我都没看出 a2什么时候把值付给a1了。请大虾解释一下,小生感激不尽

解决方案 »

  1.   

    a1,a2都是指向数组的引用
    a2=a1; 的效果是令a1,a2指向同一个数组
    所以a1指向的数组的数据改变就等于a2指向的数组的数据改变了
      

  2.   

    a2=a1;
    a2和a1指向了同一个数组
      

  3.   

    补充一点,若要int数组a1,a2相互独立不受影响,用:
    a2 = a1.clone();
      

  4.   

    a1,a2引用同一个数组对象,所以改变a2的元素相当于改变a1的元素,因为都是改变同一个数组对象的元素int[] a2;
    a2=Arrays.copyOf(a1,a1.length); //做个拷贝就不一样了,这样a1,a2引用的就不是同一个数组对象了
      

  5.   

    数据类型基本类型有以下四种:
    int长度数据类型有:byte(8bits)、short(16bits)、int(32bits)、long(64bits)
    float长度数据类型有:单精度(32bits float)、双精度(64bits double)
    boolean类型变量的取值有:ture、false
    char数据类型有:unicode字符,16位
    对应的类类型:Integer、Float、Boolean、Character、Double、Short、Byte、Long转换原则:从低精度向高精度转换byte 、short、int、long、float、double、char
    注:两个char型运算时,自动转换为int型;当char与别的类型运算时,也会先自动转换为int型的,再做其它类型的自动转换1,基本类型向类类型转换正向转换:
    通过类包装器来new出一个新的类类型的变量
    Integer a= new Integer(2);反向转换:
    通过类包装器来转换
    int b=a.intValue();2,类类型向字符串转换正向转换:
    因为每个类都是object类的子类,而所有的object类都有一个toString()函数,所以通过toString()函数来转换即可反向转换:
    通过类包装器new出一个新的类类型的变量
    eg1: int i=Integer.valueOf(“123”).intValue()
    说明:上例是将一个字符串转化成一个Integer对象,然后再调用这个对象的intValue()方法返回其对应的int数值。
    eg2: float f=Float.valueOf(“123”).floatValue()
    说明:上例是将一个字符串转化成一个Float对象,然后再调用这个对象的floatValue()方法返回其对应的float数值。
    eg3: boolean b=Boolean.valueOf(“123”).booleanValue()
    说明:上例是将一个字符串转化成一个Boolean对象,然后再调用这个对象的booleanValue()方法返回其对应的boolean数值。
    eg4:double d=Double.valueOf(“123”).doubleValue()
    说明:上例是将一个字符串转化成一个Double对象,然后再调用这个对象的doubleValue()方法返回其对应的double数值。
    eg5: long l=Long.valueOf(“123”).longValue()
    说明:上例是将一个字符串转化成一个Long对象,然后再调用这个对象的longValue()方法返回其对应的long数值。
    eg6: char=Character.valueOf(“123”).charValue()
    说明:上例是将一个字符串转化成一个Character对象,然后再调用这个对象的charValue()方法返回其对应的char数值。3,基本类型向字符串的转换正向转换:
    如:int a=12;
    String b;
    b=a+””;反向转换:
    通过类包装器
    eg1:int i=Integer.parseInt(“123”)
    说明:此方法只能适用于字符串转化成整型变量
    eg2: float f=Float.valueOf(“123”).floatValue()
    说明:上例是将一个字符串转化成一个Float对象,然后再调用这个对象的floatValue()方法返回其对应的float数值。
    eg3: boolean b=Boolean.valueOf(“123”).booleanValue()
    说明:上例是将一个字符串转化成一个Boolean对象,然后再调用这个对象的booleanValue()方法返回其对应的boolean数值。
    eg4:double d=Double.valueOf(“123”).doubleValue()
    说明:上例是将一个字符串转化成一个Double对象,然后再调用这个对象的doubleValue()方法返回其对应的double数值。
    eg5: long l=Long.valueOf(“123”).longValue()
    说明:上例是将一个字符串转化成一个Long对象,然后再调用这个对象的longValue()方法返回其对应的long数值。
    eg6: char=Character.valueOf(“123”).charValue()
    说明:上例是将一个字符串转化成一个Character对象,然后再调用这个对象的charValue()方法返回其对应的char数值。
      

  6.   


    牛人!膜拜。
     a2=a1;这一句只是将a1的引用给了a2,所以他们共用同一块内存地址。
      

  7.   

    a1、a2指向同一个地址,所以a2值变的话,a1也就跟着变啦!