第2章 一切都是对象

2一切都是对象html

      对象的定义(类型)、建立、存储、操纵、销毁、组成,引用(基本变量名)的初始化    java

 

2.1 用引用操纵对象编程

      ·编程语言操纵内存中元素的方式:数组

           ·C、C++:基于特殊语法的间接表示—指针安全

           ·Java:操纵对象引用 ->对象编程语言

                 ·建立引用工具

                 ·建立对象优化

                 ·关联:“=”编码

                 ·String类型:用带引号的文本初始化指针

                       ·对引用的初始化

 

2.2 必须由你建立全部对象

      ·存储位置

           ·寄存器:最快;CPU内;数量有限;按需分配;没法直接控制;觉察不到存在(C、C++容许向编译    器建议寄存器的分配方式);【谁在操控寄存器?】

           ·堆栈:速度仅次于寄存器;RAM中;堆栈指针控制;

                 ·堆栈指针:{向下移动:分配内存;向上移动:释放内存}

                 ·灵活受限:统必须知道存储在堆栈内全部项的确切生命周期,以便上下移动指针;

                 ·{对象引用:堆栈;new出的对象:堆}

           ·堆:比栈慢;RAM中;用于存放全部的Java对象

                 ·和堆栈相比:

                      ·好处:编译器不须要知道存储的数据在堆里存活多长时间,更灵活

                      ·坏处:进行存储分配和清理比堆栈要更多时间

           ·常量存储:一般放在程序代码内,安全,永不改变

                 ·嵌入式系统:同代码分离,存放在ROM中

           ·非RAM存储流对象 & 持久化对象——彻底存活于程序以外;不受程序的    任何控制

                 ·流对象(序列化 - 轻量级持久化):对象转化成字节流,一般被发送给另外一台机器

                 ·持久化对象:存在磁盘上;须要时可恢复成基于RAM的对象

                      ·严格持久化:JDBC、Hibernate机制

 

      ·特例:基本类型:并不是是引用的“自动”变量,直接存“值”,堆栈中

           ·占据存储空间的大小不变

           ·boolean类型~存储空间(大小):没有明确指定,仅定义为可以取字面量true或false

           ·void是基本类型(返回类型)但没有值,有包装器类型

           ·什么是拆箱比较

           ·BigInteger & BigDecimal:大致上属于“包装器类”,但没有对应的基本类型

                 ·方法调用方式 而非运算符方式

                      ·速度换取了精度

 

      ·Java中的数组

           ·C、C++中的数组 = 内存块:

                 ·问题:

                      1.可能在初始化前被使用(内存);

                      2.访问自身内存块以外的数组

           ·Java:

                 ·确保数组会被初始化后才能使用——每一个数组上少许的内存开销

                 ·不能在它的范围以外被访问——运行时的下标检查

                 ·Java有时能够优化以上操做

                 ·Java KO. C、C++:更安全,效率更高

           ·Java编译器初始化数组:

                 ·引用数组:null

                 ·基本数据类型数组:0

 

2.3 永远不须要销毁对象

      ·做用域决定变量名的可见性、生命周期

      ·(做用域内的)代码(通常)存在于堆栈中

      ·Java对象:和基本类型生命周期不一样——new出来的对象在堆中,能够存活于做用域以外

           ·存活于做用域以外:也就是说,做用域内的东西被清理后,垃圾回收器会在任意时间回收它

      ·Java垃圾回收器监视new建立的对象,辨别不会再被引用的对象,随后【何时?】释放这些对象的内存空间~消除了“内存泄漏”

           ·不用new建立对象的方式:

                 ·Class或Constructor类的newInstance()方法

                 ·clone()

                 ·反序列化

           ·那么问题来了,这些对象怎么清理?finalize()?

 

2.4 建立新的数据类型:类

      ·类[字段不是局部变量,方法]

      ·基本类型成员默认值

 

2.5 方法、参数和返回值

      ·方法[名称,参数,返回值,方法体]

           ·方法签名[方法名,参数列表]

           ·发送消息给对象 = 调用方法的行为

      ·参数列表:传递对象时,传递的是对象引用或基本类型值

           ·字符串中每一个字符(2字节):来支持Unicode字符集

 

2.6 构建一个Java程序

      ·名字(可见性):反转域名

      ·运用其余构件:使用import定位文件

      ·static关键字:

           ·为某特定域分配单一存储空间

           ·建立不与对象关联的方法

 

2.7 你的第一个Java程序

      ·编译,运行

 

2.8 注释和嵌入式文档

      ·注释文档

           ·javadoc:提取注释的工具

                 ·语法:

                       ·javadoc命令只能在"/**----*/"中出现

                       ·使用方式:

                            1.嵌入HTML

                            2.使用“文档标签”:以“@”开头

                       ·三类注释文档位置:类、域、方法之

                       ·只有public、protected成员的文档注释才能被输出(可用-private进行标记输出private注释)

                       ·不要嵌入html标题标签:如<h1>或<hr>

           ·提取注释:javadoc

 

2.9编码风格

      ·驼峰风格

相关文章
相关标签/搜索