第2章 一切都是对象

Posted 梁桦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第2章 一切都是对象相关的知识,希望对你有一定的参考价值。

2一切都是对象

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

 

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编码风格

      ·驼峰风格

以上是关于第2章 一切都是对象的主要内容,如果未能解决你的问题,请参考以下文章

Java编程思想 4th 第2章 一切都是对象

[读书笔记]Java编程思想

读TIJ -2 一切都是对象

一切都是对象

『Java编程思想-第四版』第二章:一切都是对象

第一章: Python中一切皆对象