关于java中对象的几个问题

inti=1;对象t1=new对象();1.执行t1.i后,单独拿出t1出来,他是否已经含有i的值,i、t1、t1.i是分别指向三块内存区吗。为什么system.out.... int i = 1;
对象 t1 = new 对象();

1.执行t1.i后,单独拿出t1出来,他是否已经含有 i 的值,i、t1、t1.i是分别指向三块内存区吗。为什么system.out.println(t1)输出结果是对象@15db9742
2.如果执行t1.i=2;改变了i、t1、t1.i这三者谁的值 (不算static情况)
3.对象在代码中究竟起什么作用?
展开
 我来答
匿名用户
2017-02-06
展开全部
  1. 执行t1.i后,单独拿出t1出来,他是否已经含有 i 的值,i、t1、t1.i是分别指向三块内存区吗。

    i是在哪里定义的,它是t1的实例变量还是静态变量,是public,还是private,还是main方法里的变量。

    如果在main方法里,与t1,无关,t1存的是一块地址,指向一个内存空间,存放实例变量,同时,所有类的对象有共有一个类空间,有实例变量。

  2. 为什么system.out.println(t1)输出结果是对象@15db9742

    这是继承自object类的方法,toString,在未定义这个方法时,打印有一个默认值就是你写的这个。

  3. 如果执行t1.i=2;改变了i、t1、t1.i这三者谁的值 (不算static情况)

    其实你可以试试,但应该是t1.i.

  4. 对象在代码中究竟起什么作用

    一个类是蓝图,根据这个类可生成许多自定义对象。一个对象根据类,可自定义许多变量,即i,除static外,每个对象拥有自己独有值的i

    你可以多读些例子,或者直接比着书敲代码,慢慢就会明白的

追问
int i = 1;是类成员,在主方法外
i 我知道在一个内存区(A区),t1在另一个的内存区(B区)。如果t1.i执行后,t1.i是在新创建一块内存区(C区),还是在t1原来的内存区里(A区)。
追答
t1指向的内存(假设为X),t1存的只是个内存的地址(假设为B),X中有(A),即i,i1,i2……当你new 对象时,就会分配一个属于t1的X,X包括对象中实例变量的空间,因为你写类时已经注明int i,即规定i占多少空间;  t1.i=只是赋值,并没有新建空间。
百度网友f4159575f
2017-02-06 · 超过22用户采纳过TA的回答
知道答主
回答量:66
采纳率:100%
帮助的人:38.4万
展开全部

能告诉下对象里面是怎么定义的吗

如果是

public static void  main(String[]args){
    int i=1;
    Test t1=new Test();
    System.out.println(t1.i);
}

这样的话  第二行的i 是放在栈内存的

t1 放在堆内存  打印t1 打印的是t1 的内存地址

t1 指向的内存地址 内有个属性是i

也就是说t1所指向的内存包含i

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式