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

          ·驼峰风格

  • 相关阅读:
    Tomcat使用经验
    JAVA异常及其异常处理方式
    微信小程序开发笔记(七)--template模板
    微信小程序开发笔记(六)--实现tab选项卡
    微信小程序开发笔记(五)--swiper实现tab选项卡
    微信小程序开发笔记(四)--轮播图
    微信小程序开发笔记(三)--底部导航栏,顶部标题栏设置
    微信小程序开发笔记(二)
    微信小程序开发笔记(一)
    校门外的树
  • 原文地址:https://www.cnblogs.com/InformationGod/p/8510714.html
Copyright © 2020-2023  润新知