JAVA中的构造方法怎么理解呢?

long5mao 2017-05-15 04:23:21
新人入门,最近看到JAVA构造方法的阶段,但是无法理解,有哪位大侠可以给讲解一下?非常感谢!
...全文
623 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
daochuwenziyao 2017-05-17
  • 打赏
  • 举报
回复
当程序开始运行的时候,将自己Load到内存区,执行过程中的内存管理分为四部分: code segment:代码区,用于存放代码。程序运行时将代码load到该区域。 datasegment:用于存放静态变量,字符串常量。 stack:栈,用于存放局部变量。1.用来保存基本数据类型的值;2.保存类的实例,即堆区对象的引用(指针)。也可以用来保存加载方法时的帧。 heap:堆,用来动态生成内存,存放new出来的东西。 博主重点是要理解类和对象的概念,不要弄混淆了 类是静态的概念,存在代码区。 对象是new出来的,位于堆内存,类的每个成员变量在不同的对象都有不同的值(除了静态变量)而方法只有一份,对象使用方法的时候方法才被压入栈,方法不使用则不占用内存。
PJLN 2017-05-17
  • 打赏
  • 举报
回复
话说初始化成员变量应该比构造方法前啊,为什么说是构造方法初始化成员变量?不懂。。。。。
_MrRobot_ 2017-05-16
  • 打赏
  • 举报
回复
构造方法,个人理解为初始化类的实例
daochuwenziyao 2017-05-16
  • 打赏
  • 举报
回复
new Dog() 这句话是把一只狗放在堆内存的,是狗这个对象 注意创建出来的对象只包含属于各自的成员变量,并不包括成员方法。因为同一个类的对象拥有各自的成员变量,存储在各自的堆中,但是他们共享该类的方法,并不是每创建一个对象就把成员方法复制一次。 Dog d = new Dog(); 这句话把狗赋给 d 。d是放在栈内存的。d是狗的实例 如果new Dog()没有实例的话,java回收机制会将狗这个对象回收
kirawinder_159 2017-05-16
  • 打赏
  • 举报
回复
构造方法是为你的类创建一个对象是使用的。 例如你定义了一个类Dog

class Dog{
	Dog(){
		System.out.println("创建了新的一只狗");	
	}
}
你在new的时候Dog()会被调用 如: Dog d = new Dog();
MikeDDT009 2017-05-15
  • 打赏
  • 举报
回复
按照你书上的理解就行了,你这样理解: 类就是一个新的数据类型,使用起来和int这种没有什么区别。 只是一个初始化直接用=,一个需要使用new。基本数据类型和类类型(引用类型,都是简称类)。你想对这个新的数据类型初始化就要用到构造方法。没有你就无法进行初始化,可以说是构造方法就是你new一个对象的时候必须要用到的,没有构造方法你就无法进行new对象,或者说创建对象。放在类里来说就是特殊的方法。
qq_28938099 2017-05-15
  • 打赏
  • 举报
回复
构造方法顾名思义,就是构造对象的方法;要新建一个对象,可以用new ClassName(); new ClassName();到底都干了哪些事? 上面你提到——构造方法作用就是对类进行初始化,这句话我们拆开来理解:首先对类的static资源(包括static成员变量,static块)进行初始化,其次再对非static变量、块初始化,最后再执行构造方法内的代码 下面举例说明 public class T { public static int k ; public static int i = 5; public int n = 6; { System.out.println("构造块"); } static { System.out.println("静态块"); } public T() { k=10; i=50; this.n=60; } public static void main(String[] args){ System.out.println("k="+k+" i="+i); // System.out.println("n="+t.n); T t = new T(); System.out.println("k="+k+"i="+i); System.out.println("n="+t.n); } } 自己运行观察结果,注释掉的部分去掉注释后会报错,当执行main方法时,类的static资源已经初始了,具体我也不清楚为什么,好吧就这样了,祝你学习进步
imsprojo2FAN 2017-05-15
  • 打赏
  • 举报
回复
Dog dog = new Dog();
Dog()就是默认的无参构造方法,在Dog类里面即使不写它也会自动生成然后被调用;
Dog dog = new Dog("小白");
Dog("小白")是带参的构造方法,这个得自己写,不然会报错,一般用于初始化对象
gooym 2017-05-15
  • 打赏
  • 举报
回复
引用 1楼我是你的主体 的回复:
书上说:“构造方法是在实例化对象时使用”。 网上说:“构造方法作用就是对类进行初始化。” 不太明白了!
实例化就是创建对象的过程 构造方法是用来初始化 变量的 就是赋值
tudou_y 2017-05-15
  • 打赏
  • 举报
回复
就是你在实例化(new)那个类的时候 他会去根据参数对应的去执行那个构造方法 (类里面会自带一个无参的构造方法)
gooym 2017-05-15
  • 打赏
  • 举报
回复
构造方法是一个特殊的方法。 方法结构: 访问修饰符 类名(参数列表){方法体} 构造方法重载。 在没写构造方法是 有一个默认的 类名(){}构造方法 this()是调用本类不带参构造方法; super()是调用父类不带参的构造方法;
long5mao 2017-05-15
  • 打赏
  • 举报
回复
书上说:“构造方法是在实例化对象时使用”。 网上说:“构造方法作用就是对类进行初始化。” 不太明白了!

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧