黑马程序员技术交流社区

标题: 构造函数问题? [打印本页]

作者: 蓬头小道士    时间: 2015-8-19 19:48
标题: 构造函数问题?
本帖最后由 蓬头小道士 于 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()方法?




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

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

就红色代码来说    第一条创建了一个一出现就有名字 并且名字叫hello的人对象p  这是他的特性   第二条创建了一个一出现就有名字和年轻 并且名字叫hello  年龄是22岁的人对象p2
作者: 何时指点江山    时间: 2015-8-19 21:50
楼上的都是高手啊
作者: 黑马的味道    时间: 2015-8-19 22:12
都是高手
作者: 壊亊唑侭    时间: 2015-8-19 22:27
堆内存是啥
作者: q985274961    时间: 2015-8-19 22:28
构造函数我到现在也是迷糊




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2