本帖最后由 chendanfeng 于 2015-5-8 23:42 编辑
Android菜鸟饭团#Java中文学习#第十二课 活动笔记 一、类和对象的关系 类的代码是储存在(code seg)里边,找到 main 方法开始运行,其他的方法开始起到作用,C c1定义了一个局部变量,所以在”栈空间”里边,指向了 new 一个东西,new 出来的对象都是存在”堆”里边(理解内存就理解了一切)
二、构造方法 (构造函数) 原来在定义一个方法的时候,方法的返回值是必须要写的,就算不返回东西,你也必须要写 void 来表示什么都不返回。
面向对象里边有一个特殊的方法,叫构造方法(构造函数),可以理解成是把自己构建成一个新的对象的方法,构造方法和类的名字必须要一样,并且没有返回值。(返回值什么都不能写,包括 void) 和 new 一起使用,new 在构建对象的时候实际是引用的构造方法
使用new+构造方法 创建一个新的对象 构造函数是定义在java类中的一个用来初始化对象的函数 构造函数与类同名且没有返回值 定义了一个person类了 Person类的构造函数 在person里 再定义一个构造方法(没有返回值 什么都不能写,void都没有) 写下横线是为了和成员变量区分开来,如下(构造方法是和new一起使的 new的时候实际上调的是构造方法 是调了这个实际的方法才构建了这个实际的对象) New了之后调用的是构造方法,传入了两个参数(实参)
tom 里边装的什么,在指针里我们知道是一个地址,但在java里不是绝对的物理地址 但是通过里边的内容 我们可以在堆内存里找到存储的东西 在堆空间分配完成之后,栈空间之前的id、age,就自动的消失了(空间就让出来了) 方法一旦完成之后,局部变量就没了
当没有指定构造函数时,编译器为类自动添加形如 编译器默认的为你添加空的构造方法 如果自己定义有构造方法,则系统不在给你自动添加上述的方法了
遇见的问题 加了void就成了普通的方法
为什么是tom.Person,不是Person.tom
约定俗成的命名规则
凡是new出来的一个东西都是在堆内存里做分配 执行的过程* 一个方法只有通过一个对象才能调用它 栈空间:stack 堆空间:heap
自动分配的局部变量,在堆空间中存储完了之后,就自动消失了 返回值也会给它分配空间,之后自动消失(栈空间)
构造方法是一种特殊的方法,具有以下特点。
(1)构造方法的方法名必须与类名相同。
(2)构造方法没有返回类型,也不能定义为void,在方法名前面不声明方法类型。
(3)构造方法的主要作用是完成对象的初始化工作,它能够把定义对象时的参数传给对象的域。
(4)一个类可以定义多个构造方法,如果在定义类时没有定义构造方法,则编译系统会自动插入一个无参数的默认构造器,这个构造器不执行任何代码。
(5)构造方法可以重载,以参数的个数,类型,顺序。
如果在定义类时没有定义构造方法,则编译系统会自动插入一个无参数的默认构造器,这个构造器不执行任何代码。 堆内存用来存放由new创建的对象和数组以及对象的实例变量。在函数(代码块)中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后,java会自动释放掉为该变量所分配的内存空间;在堆中分配的内存由java虚拟机的自动垃圾回收器来管理 堆和栈的优缺点 堆的优势是可以动态分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时动态分配内存的。 缺点就是要在运行时动态分配内存,存取速度较慢;栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器。 另外,栈数据可以共享。
【书记员:陈丹凤】 每一个技术小白都有一个成为大神的梦想,现在Android菜鸟饭团就给你这个成就梦想的机会。我们提供最新的Android技术教学,只要你又耐心和毅力就一定会在这里有所收获。 Android菜鸟饭团由南阳GDG组织发起,秉承着开放、分享、创新的原则,希望通过GDG社区的力量能够给更多的想要学习Android开发技术的小白们创造一个学习,交流,分享的环境。同往常的GDG活动一样,我们依然是任性的一个子都不要,并且还在周六的分享中提供盒饭和不定期的惊喜小礼物呦~所以快来加入我们吧,为你的大神梦想迈出第一步。
|