• 第二章 万事万皆对象(Java语言基础)


    一、对象引用(Reference)

    二、新建对象

    1. 既存型别
    2. 自定义型别

    三、存储

    1. 寄存器:速度最快,位于处理器内部。但寄存器个数有限,由编译器根据本身的需求适当的分配使用,(对一个程序员来说)基本是一个感觉不到的存在。
    2. Stack(栈):位于一般的RAM(random-access memory,随机访问内存)中。处理器经由其指针提供直接的支持,分配新内存时指针后后移,释放内存时,指针前移。效率仅次于寄存器。Java编译器负责产生"控制指针移动"的程序代码,所以它必须能够完全掌握它所编译的程序中"存在stack里所有数据的实际大小和存活时间"。如此便限制了程序的弹性,也因此,我们只能将对象的reference存储于stack内,但却不能将一般的Java对象也置于其上。
    3. Heap(堆):Heap是一种通用性质的内存存储空间(存在RAM中),用来放置所有的Java对象,使用关键词new,便会自Heap分配空间。Heap分配的空间具有高度的弹性。但是从Heap分配空间比从stack分配所花费的时间多了不少。
    4. 静态存储空间(Static storage):存在于RAM里,该空间存放着"程序执行期间"一直存在的数据。使用关键词static,可以将某个对象内的特定成员设为静态,但Java对象本身绝无肯能置于静态存储空间中。
    5. 常量存储空间(Constant storage):常量值常会被直接置于程序代码里,也可以放到唯读内存(read-only memory,ROM)中。
    6. Non-RAM存储空间:若数据完全存活于程序之外,那么即使程序不执行,数据也能够继续存在,脱离程序的控制。streamed objects(串流化对象)和persistent objects(持久化对象)便是主要的两个例子。它们能够将对象转换为可存储与其他媒介的形式,并在必要时将所存储的数据还原成可存储与RAM中的一般对象。

    四、基本型别(基本数据类型)

    1. 不使用new分配空间,产生一种变量(automatic),不是reference形式,此类变量直接存放数据值,并置于stack
    2. 每种基本型别都有其对应的外覆型别(包装类),用来操作由基本型别产生的对象,或用在Heap内产生代表该基本型别的非原始对象

    五、高精度数值

    1. java.math.BigInteger:支持任意精度的整数
    2. java.math.BigDecimal:提供任意精度的定点数

    六、Java中的数组

    1. Java语言的数组其实就是一块内存而已。Java保证数组一定会被初始化,而且程序员对数组的访问无法逾越范围(代价:每个数组得额外多出一点空间,并且得在执行时期对数组索引值进行检查)
    2. 当你产生某个存储对象的数组时,真实产生的其实是个存储references的数组。此数组建立后,其中每一个references皆会被自动设为某个特殊值。该值以关键字null表示。当Java看到null值时,便将这个referebnces视为"不指向任何对象"。使用任何reference之前,必须将某个对象指派给它,若某个reference的值为null,便会在执行期发生错误。数组也可以存储基本型别,编译器一样保证初始化动作的必然进行:这次它会将数组所占的内存全部清为零。

    七、作用域(scope)

    八、对象的生存周期

    1. 使用new来产生一个Java对象,即便离开了作用域(生存空间),该对象依然存在。
    {
      String s=new String(" a string");
    }/*end of scope*/

      2. s这个reference将在作用域之外消失,但是,s先前所指的那个String对象,仍然会继续占用内存。

      3. 不过Java有所谓的"垃圾回收器(garbage collector)"机制,它会逐一检视所有通过new所产生的对象,并在这些对象不再被引用时,"垃圾回收器"便释放这些对象的内存。因此你

        不必关心内存回收问题,只要关心对象的产生就好。所有对象,在你不需要的时候就会自动消失。

    九、建立新的数据型别(class)

    1. 使用class关键字定义类
    2. 使用new关键字产生此类对象

    十、数据成员(fields)和函数(methods)

    1. 数据成员可以是任何类型的对象,只要你通过reference来和它沟通就行。数据成员也可以是基本型别(不具备reference者)
    2. 每一个对象都持有用来存储数据成的空间;不同的对象彼此之间并不共享数据成员
    3. 基本成员(boolean,int...等基本型别)的缺省值

    十一、方法,参数,返回值

    十二、static关键字

    1. 无论产生了多少个对象,或不存在任何对象的情形下,那些特定数据的存储空间都只有一份(例:Java中的mian方法)
    2. 某个函数不要和class object绑在一起
    3. 可以通过对象来调用静态变量/方法
    4. 可以通过类名来调用静态变量/方法
    class StaticTest{
      static int i=0;  
     public static void main(Stringp[] args){
        StaticTest st_1=new StaticTest();
        StaticTest st_2=new StaticTest(); System.out.println(st_1.i==st_2.i);  //true
        System.out.println(st_1.i==StaticTest.i);    //true
      } }

    十三、编译与执行

    十四、注解及内嵌式文档

    十五、javadoc

    1. Netbeans可以自动构建和官方文档相似的javadoc

    十六、编码风格

    All rights reserved please indicate the source if reprint---吓尿了的大肥鼠
  • 相关阅读:
    XLS导出的服务器端配置方式
    SQLSERVER2008 内存占用高的处理方式
    word定义多级列表
    SQL Server替换特殊字符
    php和mysql两种不同方式的分割字符串和类型转换
    tp杂记
    MySql数据库 主从复制/共享 报错
    the server ssl certificate failed to verify
    loaded some nib but the view outlet was not set(转载)
    xcode7 调用相册权限无提示
  • 原文地址:https://www.cnblogs.com/realsoul/p/5640308.html
Copyright © 2020-2023  润新知