学习啦 > 知识大全 > 知识百科 > 百科知识 > java什么是引用类型

java什么是引用类型

时间: 欧东艳656 分享

java什么是引用类型

引用类型 由类型的实际值引用(类似于指针)表示的数据类型。如果为某个变量分配一个引用类型,则该变量将引用(或“指向”)原始值。不创建任何副本。引用类型包括类、接口、委托和装箱值类型。

  在Java中,数组和字符串都不是基本数据类型,而它们被当作类来处理,它们是引用数据类型。

  例1:Java中使用String类创建的对象来引用字符串

  public class hello

  {

  public static void main(String[] args)

  {

  String a="abc";//1句

  String b=a;//2句

  a="jjj";//3句

  System.out.println(b);//4句

  }

  }

  1句:先进行赋值号‘=‘右边的,"abc"为一个字符串的常量,此时系统自动为其分配内存空间存储它。而String a后,a为引用数据类型,a就指向了刚才分配的内存空间。

  2句:b同样为引用数据类型,将a赋给b,所以b也指向了字符串常量"abc"的内存空间。

  3句:先进行赋值号‘=‘右边的,"jjj"为一个字符串常量,此时系统自动为其分配内存空间储存它。a为引用数据类型,a指向了字符串常量"jjj"的内存空间,不再指向字符串常量"abc"的内存空间。

  4句:由于b仍指向字符串常量"abc"的内存空间,没有改变,所以输出结果是"abc"。

  例2:

  public class hello

  {

  public static void main(String[] args)

  {

  int[] c={1,2,3};//1句

  int[] d=c;//2句

  c=new int[4];//3句

  for(int i=0;i

  {

  System.out.print(d[i]+" ");

  }

  System.out.println("");

  }

  }

  1句:赋值号右边{1,2,3} (相当于new int[3])系统分配了长度为3的int型数组的内存空间。而c为引用数据类型,指向了该内存空间。

  2句:d也是引用数据类型,c赋给d,所以d也指向了上面的长度为3的int型数组的内存空间。

  3句:赋值号右边new int[4],系统分配了长度为4的int型数组的内存空间。c指向该内存空间,而不再指向以前的内存空间了。而此时d仍指向1句中的内存空间。

  所以"4循环"将输出 1 2 3

  例3:

  public class hello

  {

  public static void main(String[] args)

  {

  int[] e={2,3,4};//1句

  int[] f=e;//2句

  e[0]=100;//3句

  for(int i=0;i

  {

  System.out.print(f[i]+" ");

  }

  System.out.println("");

  }

  }

  1句:赋值号右边{2,3,4} (相当于new int[3])系统分配了长度为3的int型数组的内存空间。而e为引用数据类型,指向了该内存空间。

  2句:f也是引用数据类型,e赋给f,所以f也指向了上面的长度为3的int型数组的内存空间。

  3句:e指向的长度为3的int型数组的内存空间里的第一个元素的值改成100。由于f此时仍指向该内存空间。所以"4循环"将输出 100 3 4

245875