别名alias,alias的用法
00-1010前言别名在Java中是如何工作的?结论
目录
在Java中,当多个引用链接到同一个对象时,使用Alias(别名)。别名的问题是,当用户写入一个特定的对象时,其他几个引用的所有者不希望该对象改变。在这里,包含别名的代码可能会很快变得有点混乱,调试也非常繁琐。一般来说,别名是一个应该避免或谨慎使用的过程。让我们看看JavaAlias是如何工作的。
00-1010如前所述,当多个引用链接到同一个对象时,使用别名。这也意味着一个位置有几个可以修改的别名,这些特定的别名有几个类型。
我们举个例子。X和Y是两个变量名,有两种类型X和Y.y延伸x。
Y[]Y=new Y[10];x[]x=y;x[0]=新X();y[0]. func 1();在内存中,它们都指向同一个位置。
指向的存储器位置由x和y指示.然而,实际保存的对象选择在运行时调用哪个方法。
看另外一个例子:
矩形b1=新矩形(0,0,50,150);矩形b2=b1b1和b2都指同一个物体,或者我们可以说一个给定的物体有两个名字,比如B1和b2。类似于人有两个名字,物也可以有两个名字。
当有两个匿名变量时,引起一个变量的变化也会反映在另一个变量中,
如下所示:
system . out . println(B2 . width);b1.grow (40,40);system . out . println(B2 . width);当您执行代码时,您将看到在一个矩形中引起的变化也发生在第二个矩形中。这是Alias在Java中需要注意的主要问题之一。
Java别名示例
以下是Java Alias上的一些示例程序。
//class Xclass X {//function 1 public void func 1(){ system . out . println(调用示例函数1 );} }//扩展类Xclass Y的类Y扩展X {//function 1 public void func 1(){ system . out . println(调用示例函数1 );}//函数2 public void func 2(){ system . out . println(调用示例函数2 );} }//main class public class alias example {//main method public static void main(String[]args){ Y[]Y=new Y[10];x[]x=y;x[0]=新X();y[0]. func 1();}}执行代码时,可以看到发生了一个名为ArrayStoreException的异常。这是怎么发生的?必须改变什么?有可能解决这个问题吗?
这个异常的唯一原因是Java在运行时管理别名。只有在运行时,它才能知道第一个对象应该是Y,而不是x,要解决这个问题,你必须修改上面的代码。
因此,只有将示例程序更改为以下代码,它才能正确运行。
//class Xclass X {//function 1 public void func 1(){ system . out . println(调用示例函数1 );} }//扩展类Xclass Y的类Y扩展X {//function 1 public void func 1(){ system . out . println(调用示例函数1 );}//函数2 public void func 2(){ system . out . println(调用示例函数2 );} }//main class public class alias example {//main method public static void main(String[]args){ Y[]Y=new Y[10];x[]x=y;x[0]=new Y();y[0]. func 1();}}当X的对象变成Y的对象时,在上面的第一个程序中抛出了一个异常,但在这里没有发生。
另外一个例子:
//main class public class alias example {//main method public static void main(String[]args){//创建两个具有相同值的不同数组a=87int b=87//检查a和b是否为equalsystem . out . println(a==b);//赋值b等于ab=a;//检查a和b是否为equalsystem . out . println(a==b);}}在这个程序中,首先创建两个整型变量A和B,然后代码检查A和B是否相等。下一步,将A赋值给B,再次检查A和B是否相似。当代码被执行时,两个结果都将被打印为true。
如果用A和B两个数组代替整型变量会怎么样?
这可以用下面给出的程序来解释。
//main class public class alias example {//main method public static void main(String[]args){//创建两个具有相同值的不同数组int []a={81,54,83 };int []b={81,54,83 };//检查a和b是否为equalsystem . out . println(a==b);//赋值b等于ab=a;//检查a和b是否为equalsystem . out . println(a==b);}}在这个程序中,第一步是创建两个数组A和B,然后,类似于上面的过程,检查A和B是否相等。之后,将A赋值给B,再次检查它们是否相似。执行代码时,可以看到第一次检查的输出是false,第二次检查的输出是true。这是因为Java别名可以工作。
00-1010当多个对象的引用链接到同一个对象时,在Java中使用别名。别名的缺点是,当用户写入一个特定的对象时,其他一些引用的所有者不会猜到该对象会改变。
关于Java Alias如何工作的这篇文章到此为止。有关Java Alias的更多信息,请搜索以前关于流行IT的文章或继续浏览下面的相关文章。我希望你以后能更多地支持流行音乐!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。