关于java中对象引用的理解?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于java中对象引用的理解?相关的知识,希望对你有一定的参考价值。

比如如下语句:
int[] A = new int[3];
int a;
a = A[1];
a = 123;
System.out.println(A[1]);
这时输出的A[1]仍然是系统默认的初始值0,如果想要通过a来改变A[1]的值(类似C++里指针的效果?),应该如何实现?如果不是基础数据类,而是自己定义的类,是否就能达到效果?

参考技术A 通过a来改变A[1]的值,应该是A[1]=a;
然后数组的下标是从0开始的,如果你的需要是往第一个位置添加内容的话,那应该写成A[0]=a;
你的代码的意思是:
int a; 定义了一个int整数类型的变量,名字是a.
a = A[1]; 把数组A下标为1的数值赋值给a,因为你只定义了数组,没有加内容,所以默认为0,此时a=0;
a=123,又把123这个数值赋值给a,此时a=123;
全部过程没有对数组进行操作,所以打印出的内容是0;
建议你看看赋值语句相关的资料。至于你后面的问题,不是很明确。如果有需要,把具体的问题代码放出来。追问

比如这个方法中,我想通过patch来对m_Patches[ ][ ]中的元素进行修改和操作

追答

你的代码我看了一下

这一段可以直接写成是ppatch=new Patch();

然后发现问题没有?你这里只是用默认构造方法创建了一个新的Patch对象。

上面的方法是Init()方法的重载,下面的方法不清楚是什么业务逻辑。这两个方法有没有对你要操作的m_Patches[ ][ ]进行操作,如果没有的话,你整个方法全过程没有对m_Patches[ ][ ]进行过操作,当然不会发生修改啊……

追问

C语言源码中的Init方法定义

追答

我学的是JAVA,C语言的代码看的不明白……不好意思

参考技术B 你现在这个是不行的。只有引用类型才可以类似指针的效果,基本类型不能达到追问

自己定义的类就行么?比如下面这个方法中的Patch类就是我自己定义,它能实现对m_Patches[ ][ ]这个数组里的元素进行操作么

追答

你这个就可以啊。你这个就是传的引用噻。也就是你理解的指针

追问

前辈,您看看这个C语言源码,那个Init()方法里参数相同的问题先别管了,虽然一样但是用处不同。我就是想实现类似这个方法里的效果!还有按照您昨天说的去试了下,没有达到效果。。。

关于java中多态的理解

多态的存在要有三个前提:

1.继承关系

2.子类重写了父类的方法

3.父类引用指向子类对象

在具备以上三个的前提条件下,多态的成员访问有以下特点

成员变量和静态成员方法:都是父类引用的成员变量和成员方法

成员方法:编译看左边(父类),运行看右边(子类);

多态的弊端:不能使用子类的成员属性和特有的成员方法。

以上是关于关于java中对象引用的理解?的主要内容,如果未能解决你的问题,请参考以下文章

Java对象及其引用

转:Java对象及对象引用变量

Java对象及对象引用变量

关于强引用软引用弱引用幻象引用,你该如何回答?

理解Java中的引用传递和值传递

关于JAVA的Object类接收引用和对象向下转型关系的疑问