A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 蓬头小道士 中级黑马   /  2015-8-19 19:48  /  509 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 蓬头小道士 于 2015-8-20 21:03 编辑

class Person
{
private String name;
private int age;
Person(String name)
{
  this.name=name;
}
Person(String name,int age)
{
  this.name=name;
  this.age=age;
}
public void Speak()
{
  System.out.println("name="+name+"----"+"age="+age);
}
public static void main(String[] args)
{
  Person p=new Person("hello");
  p.Speak();
  Person p1=new Person("hello",22);
  p1.Speak();
}
}
上面程序中红色部分在堆内存中的具体内容是什么?它们在堆内存中创建了什么内容?在新创建的对象中是否包含speak()方法?



5 个回复

倒序浏览
堆内存地址值和空间在变量初始化的时候就创建好了   构造代码块和构造函数将一些特性赋值到了堆内存的对象中    简单来说包含局部变量时就是从栈内存获取值并赋值 this.name = name;      不包含局部变量时可能做了一些特定值改变  比如 this.name= "李四";

    有时候对象创建必须有特性 比如报名参军的对象要求达到指定年龄 那么对象就必须有年龄特性 那么就要构造函数初始化

就红色代码来说    第一条创建了一个一出现就有名字 并且名字叫hello的人对象p  这是他的特性   第二条创建了一个一出现就有名字和年轻 并且名字叫hello  年龄是22岁的人对象p2
回复 使用道具 举报
楼上的都是高手啊
回复 使用道具 举报
都是高手
回复 使用道具 举报
堆内存是啥
回复 使用道具 举报
q985274961 来自手机 中级黑马 2015-8-19 22:28:48
地板
构造函数我到现在也是迷糊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马