关于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++里指针的效果?),应该如何实现?如果不是基础数据类,而是自己定义的类,是否就能达到效果?
然后数组的下标是从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中对象引用的理解?的主要内容,如果未能解决你的问题,请参考以下文章