本站已关停,现有内容仅作科研等非赢利用途使用。特此声明。
查看: 1395|回复: 0
打印 上一主题 下一主题

第Ⅱ期Android菜鸟饭团#Java学习#第六课 活动笔记

[复制链接]
跳转到指定楼层
1#
发表于 2015-10-28 15:10:07 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 xiao_ming 于 2015-10-28 15:11 编辑

第Ⅱ期Android菜鸟饭团#Java学习#第六课 活动笔记     
  

一.成员变量和局部变量的重要区别
1.java里的局部变量(必须初始化)首先要声明,其次赋值,最后再使用。
2.成员变量可以不初始化,系统会自动为其赋默认值,多数情况均为0。

二.构造方法与规则
1.当没有指定构造方法时,编译器为类自动生成形如类名(){}的构造函数,但当一旦指定构造方法之后系统就不再为其自动生成。
2.一旦在类中定义了带参的构造方法,系统就不会再创建这个默认无参的构造方法了。所以如果程序中用到此构造方法的话,必须自己定义上。
3.构造方法在创建新的实例对象时起作用。
4.构造方法通常用来初始化实例对象,例如: 初始化成员域或设置工作环境可以含有多种构造方法(重载),但必须具有不同的参数列表。
5.使用new+构造方法  创建一个新对象。
6.类名首字母大写。
7.变量名和方法名首字母小写。
8.构造函数是定义在java类中的一个用来初始化对象的函数。
9.构造函数与类同名切没有返回值。
10.创建对象时,使用构造函数初始化对象的成员变量。
11.方法的构造基本格式:
Public class test{
Public static void main(string args【】)
{
Person tom=new person(1,25);
Person John= new person(2,27)
}  
}


三.对象的创建与使用
1.必须使用new关键字创建对象。
2.使用对象(引用)。成员变量或来引用对象的成员变量。
3.适用对象(引用)。方法(参数列表)用来调用对象的方法。
4.同一类的每个对象有不同的成员变量储存空间。
5.同一类的每个对象共享该类的方法。

四.静态存储
是指在编译时就能够确定每个数据目标在运行时的存储空间需求,因而在编译时就可以给它们分配固定的内存空间。这种分配策略要求程序代码中不允许有可变数据结构的存在,也不允许有嵌套或者递归的结构出现,因为它们都会导致编译程序无法计算准确的存储空间。

五.栈式存储
该分配可成为动态存储分配,是由一个类似于堆栈的运行栈来实现的,和静态存储的分配方式相反,在栈式存储方案中,程序对数据区的需求在编译时是完全未知的,只有到了运行的时候才能知道,但是规定在运行中进入一个程序模块的时候,必须知道该程序模块所需要的数据区的大小才能分配其内存。和我们在数据结构中所熟知的栈一样,栈式存储分配按照先进后出的原则进行分配。

六.堆式存储
堆式存储分配则专门负责在编译时或运行时模块入口处都无法确定存储要求的数据结构的内存分配,比如可变长度串和对象实例,堆由大片的可利用块或空闲块组成,堆中的内存可以按照任意顺序分配和释放。

七.栈区(Stack)
存放基本类型的数据和对象的引用,即存放变量。如果存放的事基本类型的数据(非静态变量),则直接将变量名和值存入stack中的内存中;如果是引用类型,则将变量名存入栈,然后指向它new出的对象(存放在堆中)。

八.堆区(Heap)
存放new产生的数据。

九.静态域
存放在对象中用static定义的静态成员(即静态变量,同理,如果该静态变量是基本类型则将变量名和值存入静态域,如果是引用类型则指向new出的对象)。

十.常量池:
常量池指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据。除了包含代码中所定义的各种基本类型(如int、long等等)和对象型(如String及数组)的常量值(final)还包含一些以文本形式出现的符号引用,比如:类和接口的全限定名;字段的名称和描述符;方法和名称和描述符。

十一.GC(垃圾收集器)基本原理
  • 编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。所以,Java的内存管理实际上就是对象的管理,其中包括对象的分配和释放。
  • 对于程序员来说,分配对象使用new关键字;释放对象时,只要将对象所有引用赋值为null,让程序不能够再访问到这个对象,我们称该对象为"不可达的".GC将负责回收所有"不可达"对象的内存空间。
  • 对于GC来说,当程序员创建对象时,GC就开始监控这个对象的地址、大小以及使用情况。通常,GC采用有向图的方式记录和管理堆(heap)中的所有对象。通过这种方式确定哪些对象是"可达的",哪些对象是"不可达的".当GC确定一些对象为"不可达"时,GC就有责任回收这些内存空间。

十二.内存解析
  • 这里的str是非静态变量所以将其放入到栈中,而静态变量a则需要放入静态域中,对于变量值"abc"和10则都应该放入到常量池当中



  • 这里的str是String类型的对象,所以放入栈中,而new出来的东西则放入到堆中,对于初始值"abc"则放入到常量池中即可。



  • 这里的s[]是一个数组变量,所以放入到栈中,new出来的东西还是放入到堆中,最后的每个元素的值则放入到常量池当中。



每一个技术小白都有一个成为大神的梦想,现在Android菜鸟饭团就给你这个成就梦想的机会。我们提供最新的Android技术教学,只要你又耐心和毅力就一定会在这里有所收获。
Android菜鸟饭团南阳GDG组织发起,秉承着开放、分享、创新的原则,希望通过GDG社区的力量能够给更多的想要学习Android开发技术的小白们创造一个学习,交流,分享的环境。同往常的GDG活动一样,我们依然是任性的一个子都不要,并且还在周六的分享中提供盒饭和不定期的惊喜小礼物呦~所以快来加入我们吧,为你的大神梦想迈出第一步。
把你的个人信息和申请理由快快发送到android@chuang1.net,前来加入我们吧


ChinaGDG.com
回复

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表