zoukankan      html  css  js  c++  java
  • 20190814 On Java8 第三章 万物皆对象

    第三章 万物皆对象

    对象创建

    数据存储

    有5个不同的地方可以存储数据:

    1. 寄存器 (Registers) 最快的存储区域,位于CPU内部 。无法直接控制。

    2. 栈内存(Stack) 存在于常规内存 RAM (随机访问存储器,Random Access Memory)区域中,可通过栈指针获得处理器的直接支持。栈指针下移分配内存,上移释放内存,这是一种快速有效的内存分配方法,速度仅次于寄存器。创建程序时,Java 系统必须准确地知道栈内保存的所有项的生命周期。这种约束限制了程序的灵活性。因此,虽然在栈内存上存在一些 Java 数据,特别是对象引用,但 Java 对象却是保存在堆内存的。

    3. 堆内存(Heap) 这是一种通用的内存池(也在 RAM区域),所有 Java 对象都存在于其中。与栈内存不同,编译器不需要知道对象必须在堆内存上停留多长时间。因此,用堆内存保存数据更具灵活性。创建一个对象时,只需用 new 命令实例化对象即可,当执行代码时,会自动在堆中进行内存分配。这种灵活性是有代价的:分配和清理堆内存要比栈内存需要更多的时间。随着时间的推移,Java 的堆内存分配机制现在已经非常快,因此这不是一个值得关心的问题了。

    4. 常量存储 (Constant storage) 常量值通常直接放在程序代码中,因为它们永远不会改变。

    5. 非 RAM 存储 (Non-RAM storage) 数据完全存在于程序之外,在程序未运行以及脱离程序控制后依然存在。两个主要的例子:(1)序列化对象:对象被转换为字节流,通常被发送到另一台机器;(2)持久化对象:对象被放置在磁盘上,即使程序终止,数据依然存在。这些存储的方式都是将对象转存于另一个介质中,并在需要时恢复成常规的、基于 RAM 的对象。Java 为轻量级持久化提供了支持。而诸如 JDBC 和 Hibernate 这些类库为使用数据库存储和检索对象信息提供了更复杂的支持。

    基本类型的存储

    对于基本类型的创建方法, Java 使用了和 C/C++ 一样的策略。也就是说,不是使用 new 创建变量,而是使用一个“自动”变量。 这个变量直接存储"值",并置于栈内存中,因此更加高效。

    高精度数值

    在 Java 中有两种类型的数据可用于高精度的计算。它们是 BigInteger 和 BigDecimal。尽管它们大致可以划归为“包装类型”,但是它们并没有对应的基本类型。
    BigInteger 支持任意精度的整数。可用于精确表示任意大小的整数值,同时在运算过程中不会丢失精度。 BigDecimal 支持任意精度的定点数字。例如,可用它进行精确的货币计算。

    类的创建

    基本类型默认值

    如果类的成员变量(属性)是基本类型,那么在类初始化时,这些类型将会被赋予一个初始值。

    基本类型 初始值
    boolean false
    char u0000 (null)
    byte (byte) 0
    short (short) 0
    int 0
    long 0L
    float 0.0f
    double 0.0d

    这种默认值的赋予并不适用于局部变量 —— 那些不属于类的属性的变量。 因此,若在方法中定义的基本类型数据,如下:
    int x;
    这里的变量 x 不会自动初始化为0
    Java 将会提示我们“编译时错误,该变量可能尚未被初始化”。

    返回类型

    方法名参数列表统称为方法签名(signature of the method)。签名作为方法的唯一标识

    调用方法的行为有时被称为向对象发送消息。面向对象编程可以总结为:向对象发送消息。

    程序编写

    命名可见性

    为一个类库生成一个明确的名称,Java 创建者希望我们反向使用自己的网络域名,因为域名通常是唯一的。

    现在整个包名都是小写的。

    小试牛刀

    java.lang 隐式包含在每个 Java 代码文件中,因此这些类是自动可用的。

  • 相关阅读:
    dnsServer SmartDNS / smartdns / DNS UDP 53
    springBoot 自定义注解 + 自定义异常捕获实战
    查询出ES库所有数据
    springBoot2.X 支持http、https访问
    配置ES IK分词器自定义字典
    搭建angular开发环境 运行 ng-alain框架
    【jQuery】 选择器
    【jQuery】 js 对象
    【C#】 URL Protocol
    【C#】 反射
  • 原文地址:https://www.cnblogs.com/huangwenjie/p/11350156.html
Copyright © 2011-2022 走看看