Java在一个对象中,声明另一个对象,再使用这个对象的变量,这种方式是引用不?
如题,在对象a中声明对象b,接着使用b.b1,那么b1的值是怎么传进a中,是指针传进的?可是b1不就是一个普通的变量?怎么能当指针用?刚学Java,以前看过C,看到引用这...
如题,在对象a中声明对象b,接着使用b.b1,那么b1的值是怎么传进a中,是指针传进的?可是b1不就是一个普通的变量?怎么能当指针用?
刚学Java,以前看过C,看到 引用 这部分有点不清楚。 展开
刚学Java,以前看过C,看到 引用 这部分有点不清楚。 展开
3个回答
展开全部
你是说
public class A {
private int age=10;
public B b ;
}
class B {
}
a为A类对象实例,b为B类对象实例。当a.b对b赋值的情况吗?你要知道a.b是从a的首地址开始计算出a对象存储的B类引用变量的b的地址,b的内容是在堆内存中存储的。a.b = xx;这里的xx必定也是B类对象的引用变量的值(即B类在堆内存中的首地址)。这里是值传递的形式。Java中的赋值,例如A a = new A();都是值传递的形式。
public class A {
private int age=10;
public B b ;
}
class B {
}
a为A类对象实例,b为B类对象实例。当a.b对b赋值的情况吗?你要知道a.b是从a的首地址开始计算出a对象存储的B类引用变量的b的地址,b的内容是在堆内存中存储的。a.b = xx;这里的xx必定也是B类对象的引用变量的值(即B类在堆内存中的首地址)。这里是值传递的形式。Java中的赋值,例如A a = new A();都是值传递的形式。
更多追问追答
追问
类A和类B,类A中声明类B的实例b,类B声明变量ptr,接着在类A中存取b.ptr的值,想问的是这个存取是怎么实现的?比如存一个数字进b.ptr, b.ptr = 12; ,或者取出 b.ptr 的值做其他事,是怎么存取的,这个过程。
是不是以b为指向,获取那个之前声明好的B的实例的内存首地址,然后利用变量的名称ptr来存取变量ptr?
追答
ptr 是基本数据类型的时候,就是将12放进b为首地址后面的某一块地址(ptr)的内存.也就是说b.ptr 这是在计算从b首地址开始(同过类型,名称等,内部实现不必知道)ptr变量的地址,然后放入12, b.ptr也可以说是那块内存的别名。这里ptr是基本数据类型的情况,如果是对象类型,就是把对象类型在堆内存中的首地址赋值进入b.ptr的那块内存中。
展开全部
引用就是指针。你就这么认为吧。java中传递的是对象的引用,和C语言是不同的。先了解一下什么是面向对象吧。
追问
Java中的引用就是指针,是一种限制的指针,不能参与整数运行和指向任意位置的内存,并且不用显示回收对象。除了Java外,就C#以及VB.NET中出现的引用,都类似于C++中的指针。Java中的采用引用的说法,其实是想程序员忘记指针所带来的痛苦;Java的引用比C++中的指针好用得多了,也容易管理,同时提供内存管理机制,让大家用得安心,写得放心而已。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
java里面是不使用指针的哦~~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询