zoukankan      html  css  js  c++  java
  • Thinking in Java Reading Note(2.一切都是对象)

    1.用引用操纵对象

      如果向没有指向对象的引用发送一个消息,就会返回一个运行时错误。因此一种安全的做法是:创建一个引用的同时便进行初始化

    2.必须由你创建所有对象

      1)存储到什么地方

      程序运行时,对象是怎么进行放置安排的呢?特别是内存是怎样分配的呢?有五个不同的地方可以存储数据。

      a.寄存器。这是最快的存储区,因为它位于处理器内部。由于寄存器的数量有限,你不能直接控制

      b.堆栈。位于通用RAM(随机访问存储器)中,但通过堆栈指针可以从处理器哪里获得直接支持。某些Java数据存储于堆栈中---特别是对象引用,但是Java对象并不存储于其中

      c.堆。一种通用的内存池(也位于RAM区),用于存放所有的Java对象。当需要一个对象时,只需用new写一行简单的代码,当执行这行代码时,会自动在堆里进行存储分配

      d.常量存储。常量值通常直接存放在程序代码内部,这样做是安全的,因为它们永远不会被改变。

      e.非RAM存储。如果数据完全存活于程序之外,那么它可以不受程序的任何控制,在程序没有运行时也可以存在。其中两个基本的例子是流对象和持久化对象

      2)特例:基本类型

      不用new来创建变量,而是创建一个并非是引用的"自动变量“。这个变量直接存储”值“,并置于堆栈中,因此更加高效。

      

      Java提供了连个用于高精度计算的类:BigInteger和BigDecimal。能作用于int和float的操作,也同样能作用于BigInteger或BigDecimal。只不过必须以方法调用的形式。

      3)Java中的数组

      Java确保数组会被初始化,而且不能在它的范围之外被访问这种范围检查,是以每个数组上少量的内存开销及运行时的下标检查为代价的

      当创建一个数组对象时,实际上就是创建了一个引用数组,并且每个引用都会自动被初始化为null。

    3.永远不需要销毁对象

      1)作用域

      作用域决定了在其内定义的变量名的可见性和生命周期

      2)对象的作用域

      由new创建的对象,只要你需要,就会一直保留下去。不需要时,垃圾回收器会自动回收,防止内存泄露。

    4.方法

      Java的方法决定了一个对象能够接收什么样的信息。面向对象的程序设计通常简单地归纳为”向对象发送信息“。

    5.static关键字

      通常来说,当创建类时,就是在描述那个类的对象的外观与行为。执行new来创建对象,数据存储空间才被分配,其方法才供外界调用。

      有两种情形用上述方法是无法解决的。一种情形是,只想为某特定域分配单一存储空间,而不去考虑究竟要创建多少对象,甚至根本就不创建任何对象。另一种情形是,希望某个方法不与包含它的类的任何对象关联在一起

      通过static关键字可以满足这两方面的需要。

      static方法常常拿来做”牧羊人“的角色,负责看护与其隶属同一类型的实例群

    6.import

      有一个特定类会自动被导入到每一个Java文件中:java.lang

      

  • 相关阅读:
    还在使用golang 的map 做Json编码么?
    Golang 性能测试(2) 性能分析
    golang 性能测试 (1) 基准性能测试
    消息队列 NSQ 源码学习笔记 (五)
    消息队列 NSQ 源码学习笔记 (四)
    消息队列 NSQ 源码学习笔记 (三)
    消息队列 NSQ 源码学习笔记 (二)
    消息队列 NSQ 源码学习笔记 (一)
    你不知道的空格
    Supervisor 使用和进阶4 (Event 的使用)
  • 原文地址:https://www.cnblogs.com/Miromiaosang/p/8891477.html
Copyright © 2011-2022 走看看