第三章:对象无处不在
c++和java都是混合型语言(允许采用多种编程风格)
java语言预期你只编写面向对象程序(但是现实开发都是用mvc这种贫血模式),本章主要的目的是为了认识java中的(几乎)一切都是对象这个事实;
3.1
1.所有的编程语句都在内存中处理各种元素。
java 使用统一的语法,通过引用(reference)来操作内存对象。
这种说法有点像c的指针。但是这种引用机制是没有像指针一样的底层实现的。
2.引用这种命名方式在有些程序员看来是有问题的。因为java是不支持引用传递的,具体是通过值来传递对象的引用。
3.String s; 这用写法不安全, 如果 现在 你 向 对象 s 发送 信息, 则 会 得到 一条 报错 消息, 因为 s 还没有 连接 到任 何 对象.
比较正确的写法:String s = “”;
而对 于 其他 类型 的 对象 而言, 你 需要 使用 一种 更为 通用 的 初始化 方式。
String s = new String(" asdf");
3.2
数据存储最快的硬件设施是寄存器,但是java没有直接操作寄存器的api,而在c和c++中可以向编译器申请分配寄存器。
3.3.1
栈:处理器可以通过栈指针直接操作RMA里的数据。具体来说就是,栈指针向下移动将申请一块新的内存,向上移动则会释放该内存,这是一种极其高效的内存分配方式,其效率仅次于寄存器,只不过 Java 系统 在 创建 应用 程序 时 就必须 明确 栈 上 所有 对象 的 生命 周期。 这种 限制 约束 了 程序 的 灵活性, 因此 虽然 有 一些 数据 会 保 存在 栈 上( 尤其是 对象 引用), 对象 本身 却 并非如此。

堆:编译器 并不 关心 位于 堆 上 的 对象 需要 存在 多久。所以他的使用是非常灵活的。但是这种灵活是有代价的:分配和清理堆存储要比栈存储发费更多时间(c++可以在栈上创建对象)。不过java的堆内存分配机制现在已经非常高效了,我们不需要为此类问题担心。

常量 存储( constant storage)。 常量 通常 会 直接 保存 在 程序 代码 中, 因为 它们 的 值 不会 改变, 所以 这样做 是 安全 的。 有时候 常量 会 与其 他 代码 隔离 开来, 于是 在某 些 嵌入 系统 里, 这些 常量 就可以 保存 在 只读 存储器(ROM)。

非RAM存储:如果数据不保存在应用程序里, 那么 该 数据 的 生命 周期 既不 依赖于 应用 程序 是否 运行, 也不 受 应用 程序 的 管制。
比较典型的例子有“序列化对象”,它指的是转换为字节流(序列化,可以发送到其它机器的对象)。
还有一种是持久化对象(保存在磁盘上的对象),它可以将对象转换成其它形式以保存到其它媒体中,然后在程序需要使用的时候转换成常规的RAM对象。
Java 支持 轻量级 的 持久 化 对象 存储, 而 JDBC 以及 Hibernate 等 库 则 提供 了 更为 成熟 的 解决 方案, 即 支持 使用 数据库 存取 对象 信息。

3.2.2 基本数据类型
基本数据类型可以在栈上直接创建对象,这相比于new在堆上创建对象来说更加高效。
所以int a = 1;中的a不是一个引用,它直接表示一个“自动变量”。因为要在栈上直接分配对象内存,所以它的内存大小是固定的。


基本数据类型还有对应的包装类,存储在堆中,提供里:自动装箱机制。将基本数据类型和包装类型实现自如转换。
Character ch = ‘x’;
char c = ch;

高精度数字:BigInteger和BigDecimal.
BigInteger可以支持任意精度的整数
BigDecimal可以支持任意精度的点数。例如可以用于货币计算

on java读书笔记相关推荐

  1. Java读书笔记(4)-多线程(二)

    Java读书笔记(4)-多线程(二) 2016-1-2 线程通信 传统的线程通信 Object类提供了wait(),notify()和notifyAll三个方法 适用情况:synchronized修饰 ...

  2. think in java 读书笔记 2 —— 套接字

    目录 think in java 读书笔记 1 --移位 think in java 读书笔记 2 -- 套接字 think in java 读书笔记 3 -- 数据报 概要 1. 套接字基本知识 2 ...

  3. Java读书笔记(8)-单例模式

    Java读书笔记(8)-单例模式 今天在阅读<Effective Java 2>第3条时,获知一种使用枚举enum实现单例模式的新方法,然而书上并没有就此展开深入说明,于是上网查阅了一些资 ...

  4. Effective Java读书笔记(二)

    Effective Java 读书笔记 (二) 创建和销毁对象 遇到多个构造器参数时要考虑使用构建器 创建和销毁对象 何时以及如何创建对象? 何时以及如何避免创建对象? 如何确保它们能够适时地销毁? ...

  5. head first java读书笔记

    head first java读书笔记 1. 基本信息 页数:689 阅读起止日期:20170104-20170215 2. 标签 Java入门 3. 价值 8分 4. 主题 使用面向对象的思路介绍J ...

  6. Effective Java 读书笔记(七):通用程序设计

    Effective Java 读书笔记七通用程序设计 将局部变量的作用域最小化 for-each 循环优于传统的 for 循环 了解和使用类库 如果需要精确的答案请避免使用 float 和 doubl ...

  7. #java读书笔记#面向对象2

    上一篇java读书系列笔记文章:#java读书笔记#面向对象1 14.Math类的使用(重点) (1)数学操作类:该类没有构造函数,方法均为静态的 (2)掌握内容 A:成员变量 **E:比任何其他值都 ...

  8. Effective Java读书笔记完结啦

    Effective Java是一本经典的书, 很实用的Java进阶读物, 提供了各个方面的best practices. 最近终于做完了Effective Java的读书笔记, 发布出来与大家共享. ...

  9. Effective Java 读书笔记(一)

    前言: 开个新的坑位,<effective java>的读书笔记,之后有时间会陆陆续续的更新,读这本书真的感触满多,item01和item02就已经在公司的项目代码中看到过了.今天这篇主要 ...

  10. java开头流程_【java读书笔记】——java开篇宏观把控 + HelloWorld

    学完java有一段时间了,一直没有做对应的总结,总认为有一种缺憾.从这篇博客開始,将自己平时的学习笔记进行总结归纳,分享给大家. 这篇博客主要简单的介绍一下java的基础知识,基本的目的是扫盲.原来仅 ...

最新文章

  1. CV之NS:图像风格迁移(Neural Style 图像风格变换)算法简介、过程思路、关键步骤配图、案例应用之详细攻略
  2. 很多人调用接口会阻塞吗_锻炼的真相你知道吗?这些你可能都想了解,很多人都会问的2点...
  3. CapsLock魔改大法——变废为宝实现高效编辑
  4. 一文读懂视频监控系统全过程内容
  5. HA集群之三:corosync+pacemaker实现httpd服务的高可用
  6. java.nio异步线程安全的IO
  7. java飞机大战小游戏
  8. 【教程】PDF控件Spire.PDF 教程:在C#中检测PDF文件是否为PDF/A
  9. SlickEdit使用 .
  10. 火狐浏览器书签工具栏固定书签宽度
  11. 怎么提高公文写作水平?原来这就是公文写作通知类模板
  12. 排列组合解析与例题总结
  13. 第2章 应用层-计算机网络
  14. 用c语言编程小鸭子,小鸭子
  15. 上海始终未出现真正“富人区”
  16. SQL连接MYSQL出现对象名无效_SQL数据库时提示对象名'XXX' 无效
  17. 自主创新高科技IC企业的数字化转型 ——上海达策助力上海芯钛迈向企业发展新赛道
  18. Redis技术架构演进
  19. 给图片添加文字(换行)水印
  20. topcoder srm 715 div1 -23

热门文章

  1. //编写一个学生类(Students),包括姓名(name)、性别(sex)、学号(num)、语文课(Chinese)、英语课(English)、 //数学课(Math)和平均值(avg)
  2. STM32超级简便的按键代码 只需三行 可实现短按+长按
  3. Spring动态代理原理是什么?
  4. 【车辆计数】基于光流法实现车辆检测计数matlab 源码
  5. 【算法设计与分析】贪心算法:单源最短路径和prim算法的最小生成树
  6. 这6个编程语言排行榜,据说全都知道的人不足1% | 年终榜单大盘点
  7. excel切片器_不喜欢Excel自带的切片器样式,我一秒设置个性化切片器
  8. EIGRP协议(NA、NP知识点)
  9. 中心极限定理-纯理解无公式
  10. 银行会员人脸识别方案