惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
月光博客
月光博客
爱范儿
爱范儿
The Cloudflare Blog
Y
Y Combinator Blog
B
Blog RSS Feed
Stack Overflow Blog
Stack Overflow Blog
博客园 - 叶小钗
G
Google Developers Blog
J
Java Code Geeks
P
Proofpoint News Feed
美团技术团队
Engineering at Meta
Engineering at Meta
腾讯CDC
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园_首页
WordPress大学
WordPress大学
博客园 - 聂微东
雷峰网
雷峰网
有赞技术团队
有赞技术团队
L
LangChain Blog
N
Netflix TechBlog - Medium
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园 - 【当耐特】

博客园 - 王永庆

java编程思想(3)感悟(9)---控制程序流 - 王永庆 - 博客园 ibatis学习笔记(5) - 王永庆 - 博客园 ibatis学习笔记(4) - 王永庆 - 博客园 ibatis学习笔记(3) - 王永庆 - 博客园 ibatis学习笔记(2) ibatis学习笔记(1) java编程思想3感悟(7)---抽象基类和接口、并发 java编程思想3感悟(6)---是一个与像是一个关系和伴随多态的可互换对象 java编程思想3感悟(5)---复用具体实现和复用接口 java编程思想3感悟(4)---被隐藏的具体实现 java编程思想3感悟(3)---每个对象都提供服务 java编程思想3感悟(2)---每个对象都有一个接口(方法) JSP处理表单的一些经验分享 Java语言异常处理(转载) log4j学习笔记2 Spring控制反转(IoC)的理解 java编程思想3感悟(1)---java的5个特性 bat文件说明 sql学习笔记(二)-----游标的使用
Java编程思想3感悟(8)---一切都是对象
王永庆 · 2007-11-23 · via 博客园 - 王永庆

    程序运行时,对象是怎么在内存中存储的?
    1、寄存器:这是最快的存储区,他位于处理器的内部。由编译器根据需求进行分配,不能直接控制。
    2、堆栈:位于通用随即访问存储器(RAM)中,通过他的堆栈指针可以从处理器那里获得直接支持。堆栈指针向下移动,则分配新的内存,若向上移动,则释放内存。java对象的引用就存放在堆栈中,java对象并不存在其中。
    3、堆:也位于RAM中,用于存放所有的java对象。编译器不需要知道要从堆里分配多少存储区域,也不必知道存储的数据在堆里存活多长时间。当执行代码时,会自动在堆里进行存储分配。
    4、静态存储:也在RAM中,用关键字Static来标示一个对象的特定元素是静态的。
    5、常量存储:常量值存放在程序代码内部,这样做是安全的,因为他们永远不会改变,所以放在ROM(只读存储器)中。
    6、非RAM存储:如果数据完全存活于程序之外,那么它可以不受程序的任何控制,例子:流对象和持久化对象。
    
    基本类型不用new来创建变量,而是创建一个并非是引用的自动变量。这个变量拥有它自己的初始值,并置于堆栈中,因此更加有效。
    基本数据类型:byte、short、int、long、float、double、boolean
    高精度数字:
    BigInteger: 支持任意精度的整数,在运算中,你可以准确表示任何大小的整数值。
    BigDecimal:支持任何精度的定点数,可以用它进行精确的货币计算。
    Java中的数组(Array):如果一个程序要访问其自身内存块之外的数组,或在数组初始化前使用内存,都会产生难以预料的后果。采用Java数组,确保数组会被初始化,而且不能再他的范围之外被访问,必须先要初始化。
    对象作用域:由new创建的对象,只要你需要,就会一直保留下去。由于java中有个垃圾回收器,用来监视用new创建的所有对象,并辨别那些不会再被引用的对象,随后,释放这些对象的内存空间,以便供其它新的对象使用。
    基本成员默认值:
    若类的某个成员是基本数据类型,即使没有进行初始化,Java也会确保她获得一个默认值。但确保初始化的方法并不适用于局部变量。
    当你声明一个事物是static时,就意味着这个数据或方法不会与包含他的那个类的任何对象实例关联在一起。所以,即使从未创建某个类的任何对象,也可以调用其static方法或访问其static数据。
    有些面向对象语言采用"类数据"和"类方法"2个术语,代表那些数据和方法只是为了整个类,而不是类的某个特定对象而存在的。
    引用类数据和类方法可以通过类名直接引用。
    

posted on 2007-11-23 11:39  王永庆  阅读(408)  评论()    收藏  举报