《Java编程思想》学习笔记之一切都是对象

毕业工作快2年了,突然觉得自己对于java的很多相关技术都有所摄取,但是都不精,究其根本还是自己的java基础知识不牢固,因此最近一段时间开始精读下《Java编程思想》,顺便通过JavaEye做一下笔记,记录下一些重点内容。

[size=x-large]用引用操作对象[/size]
每种编程语言都有自己的操纵内存中元素的方式。有时候,程序员必须注意将要处理的数据是什么类型。你是直接操纵元素,还是用某种基于特殊语法的间接表示(例如C和C++里的指针)来操纵对象。
所有这一切在Java里都得到了简化。一切都被视为对象,因此可采用单一固定的语法。尽管一切都看作对象,但操纵的标识符实际上是对象的一个“引用”(Reference)。
如创建一个String引用:
String s;

这里所创建的只是引用,并不是对象。
一旦创建了一个引用,就希望它能与一个新的对象相关联。通常用new操作符来实现这一目的。new关键字的意思是“给我一个新对象。”所以前面的例子可以完成:
String s = new String("asd");

它不仅表示“给我一个新的字符串”,而且通过提供一个初始字符串,给出了怎样产生这个String的信息。

[size=x-large]对象存储到什么地方?[/size]
[size=large][b]1、寄存器[/b]。[/size]这是最快的存储区,因为它位于不同于其他存储区的地方----处理器内部。但是寄存器的数量是极其有限的,所以寄存器根据需求进行分配。你不能直接控制,也不能在程序中感觉到寄存器存在的任何迹象。
[size=large][b]2、堆栈。[/b][/size]位于通过RAM(随机访问存储器)中,但通过堆栈指针可以从处理器那里获得直接支持。堆栈指针其向下移动,则分配新的内存;其向上移动,则释放那些内存。这是一种有效的分配存储方法,仅次于寄存器。创建程序时,Java系统必须知道存储在堆栈内所有项的生命周期,以便上下移动堆栈指针。这一约束限制了程序的灵活性,所以虽然某些Java数据存储于堆栈中----特别是对象引用,但是Java对象并不存储于其中。
[size=large][b]3、堆。[/b][/size]一种通用的内存池(也位于RAM区),用于存放所有的Java对象。堆不同于堆栈的好处是:编译器不需要知道存储的数据在堆里存活多长时间。因此在堆里分配存储有很大的灵活性。当需要一个对象时,只需要用new写一行简单的代码,当执行这行代码时,会自动在堆里进行存储分配。当然为这种灵活性必须付出相应的代价:用堆进行存储分配和清理可能比用堆栈进行存储分配需要更多的时间。
[size=large][b]4、常量存储。[/b][/size]常量值通常直接存放在程序代码内部,这样做是安全的,因为它们永远不会被改变。
[size=large][b]5、非RAM存储器。[/b][/size]如果数据完全存活于程序之外,那么它可以不受程序的任何控制,在程序没有运行时也可以存在。其中两个基本的例子就是流对象和持久化对象。在流对象中,对象转化成字节流,通常被发送给另一台机器。在“持久化对象”中,对象被存放于磁盘上,因此,即使程序终止,它们仍可以保持自己的状态。这种存储方式的技巧在于:把对象转化成可以存放在其它媒介上的事物。在需要时,可恢复成常规的、基于RAM的对象。Java提供了对轻量级持久化的支持,而诸如JDBC和Hibernate这样的机制提供了更加复杂的对在数据库中存储和读取对象信息的运行。

[size=x-large]Java中的基本类型[/size]
在程序设计中经常用到一系列类型,它们需要特殊对待。可以把它们想你成“基本”类型。之所以特殊对待,是因为new将对象存储在“堆”里,故用new创建一个对象----特别是小的、简单的变量,往往不是很有效。因此对于这些类型,Java采取与C和C++相同的方法。也就是说,不用new来创建变量,而是创建一个并非是引用 的“自动”变量。这个变量直接存储“值”,并置于堆栈中,因此更加高效。

[size=x-large]Java中的数组[/size]
当创建一个数组对象时,实际上就是创建了一个引用数组,并且每个引用都会自动被初始化为一个特定值,该值拥有自己的关键字----null。一旦Java看到null,就知道这个引用还没有指向某个对象。

[size=x-large]类中基本成员默认值[/size]
当变量作为类的成员使用时,Java才确保给定其默认值,以确保那些是基本类型的成员变量得到初始化,防止产生程序错误。
然而上述确保初始化的方法并不适用于“局部变量”(即非某个类的字段)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值