毕业工作快2年了,突然觉得自己对于java的很多相关技术都有所摄取,但是都不精,究其根本还是自己的java基础知识不牢固,因此最近一段时间开始精读下《Java编程思想》,顺便通过JavaEye做一下笔记,记录下一些重点内容。
用引用操作对象
每种编程语言都有自己的操纵内存中元素的方式。有时候,程序员必须注意将要处理的数据是什么类型。你是直接操纵元素,还是用某种基于特殊语法的间接表示(例如C和C++里的指针)来操纵对象。
所有这一切在Java里都得到了简化。一切都被视为对象,因此可采用单一固定的语法。尽管一切都看作对象,但操纵的标识符实际上是对象的一个“引用”(Reference)。
如创建一个String引用:
String s;
这里所创建的只是引用,并不是对象。
一旦创建了一个引用,就希望它能与一个新的对象相关联。通常用new操作符来实现这一目的。new关键字的意思是“给我一个新对象。”所以前面的例子可以完成:
String s = new String("asd");
它不仅表示“给我一个新的字符串”,而且通过提供一个初始字符串,给出了怎样产生这个String的信息。
对象存储到什么地方?
1、寄存器。这是最快的存储区,因为它位于不同于其他存储区的地方----处理器内部。但是寄存器的数量是极其有限的,所以寄存器根据需求进行分配。你不能直接控制,也不能在程序中感觉到寄存器存在的任何迹象。
2、堆栈。位于通过RAM(随机访问存储器)中,但通过堆栈指针可以从处理器那里获得直接支持。堆栈指针其向下移动,则分配新的内存;其向上移动,则释放那些内存。这是一种有效的分配存储方法,仅次于寄存器。创建程序时,Java系统必须知道存储在堆栈内所有项的生命周期,以便上下移动堆栈指针。这一约束限制了程序的灵活性,所以虽然某些Java数据存储于堆栈中----特别是对象引用,但是Java对象并不存储于其中。
3、堆。一种通用的内存池(也位于RAM区),用于存放所有的Java对象。堆不同于堆栈的好处是:编译器不需要知道存储的数据在堆里存活多长时间。因此在堆里分配存储有很大的灵活性。当需要一个对象时,只需要用new写一行简单的代码,当执行这行代码时,会自动在堆里进行存储分配。当然为这种灵活性必须付出相应的代价:用堆进行存储分配和清理可能比用堆栈进行存储分配需要更多的时间。
4、常量存储。常量值通常直接存放在程序代码内部,这样做是安全的,因为它们永远不会被改变。
5、非RAM存储器。如果数据完全存活于程序之外,那么它可以不受程序的任何控制,在程序没有运行时也可以存在。其中两个基本的例子就是流对象和持久化对象。在流对象中,对象转化成字节流,通常被发送给另一台机器。在“持久化对象”中,对象被存放于磁盘上,因此,即使程序终止,它们仍可以保持自己的状态。这种存储方式的技巧在于:把对象转化成可以存放在其它媒介上的事物。在需要时,可恢复成常规的、基于RAM的对象。Java提供了对轻量级持久化的支持,而诸如JDBC和Hibernate这样的机制提供了更加复杂的对在数据库中存储和读取对象信息的运行。
Java中的基本类型
在程序设计中经常用到一系列类型,它们需要特殊对待。可以把它们想你成“基本”类型。之所以特殊对待,是因为new将对象存储在“堆”里,故用new创建一个对象----特别是小的、简单的变量,往往不是很有效。因此对于这些类型,Java采取与C和C++相同的方法。也就是说,不用new来创建变量,而是创建一个并非是引用 的“自动”变量。这个变量直接存储“值”,并置于堆栈中,因此更加高效。
Java中的数组
当创建一个数组对象时,实际上就是创建了一个引用数组,并且每个引用都会自动被初始化为一个特定值,该值拥有自己的关键字----null。一旦Java看到null,就知道这个引用还没有指向某个对象。
类中基本成员默认值
当变量作为类的成员使用时,Java才确保给定其默认值,以确保那些是基本类型的成员变量得到初始化,防止产生程序错误。
然而上述确保初始化的方法并不适用于“局部变量”(即非某个类的字段)。
分享到:
相关推荐
### Java编程思想读书笔记 #### 一、Java与C++的区别及内存管理 在学习Java的过程中,我们常常会拿它与C++进行比较。这两门语言虽然有着相似之处,但也有许多不同点。 1. **内存管理:** - C++提供了更为底层的...
在讨论Java编程思想学习笔记时,首先需要了解的是Java语言的平台无关性,而这一特性正是通过Java虚拟机(JVM)得以实现的。JVM作为Java程序设计的关键组成部分,对于Java开发人员来说是必须掌握的基础知识。在该学习...
### Java编程思想笔记 #### 重要知识点概览 在深入探讨《Java编程思想笔记》时,我们可以提炼出一系列核心概念和技巧...以上知识点仅为《Java编程思想笔记》中的冰山一角,深入学习和实践是掌握Java编程精髓的关键。
JAVA学习笔记是面向对象编程语言的学习笔记,涵盖了JAVA的基本概念、面向对象编程思想、类和对象的概念、实例变量和局部变量的区别、方法的定义和调用、类型转换、精度问题、移位问题、switch语句的使用等内容。...
《Java编程思想》是一本深入浅出介绍Java编程的书籍,这份读书笔记旨在提炼书中核心概念,帮助读者理解和掌握Java编程的关键点。 首先,对象导论阐述了面向对象编程(OOP)的优势,相比过程性语言,OOP使得程序更...
《Java编程思想笔记》是基于 Bruce Eckel 的经典著作 "Thinking in Java" 所做的学习总结,这本书深入浅出地介绍了Java语言的核心概念和技术。在本文中,我们将围绕Java编程的一些关键知识点进行深入探讨,包括但不...
《Java编程思想》是 Bruce Eckel 的经典之作,这本书深入浅出地介绍了Java语言的核心概念和技术,对于初学者和有经验的程序员来说都是极好的学习资源。以下是对书中的主要知识点进行的详细解读: 1. **Java语言基础...
以上只是Java编程思想笔记中的冰山一角,深入学习还包括网络编程、数据库连接、JVM内存模型、垃圾回收机制、并发编程高级话题、Spring框架等内容。这些知识点构成了Java开发者必备的基础知识体系,通过不断学习和...
Java JDK 6学习笔记是为Java初学者量身定制的一份宝贵资料,它涵盖了Java编程的基础概念、语法以及核心特性。这份PPT简体版旨在帮助读者快速掌握Java开发的基本技能,逐步成为一名合格的Java程序员。 Java JDK...
### JAVA编程思想笔记 #### 一、编程语言与Java特性 1. **编程语言类别**: - **机器语言**:直接与硬件交互的语言,由0和1组成。 - **汇编语言**:接近机器语言,使用助记符表示指令。 - **高级语言**:更接近...
面向对象的编程思想是 Java 开发的基础,初学者需要掌握这些知识,以便更好地理解和应用 Java 语言。 3. Java SE 核心 Java SE 核心是 Java 语言的核心之一,它包括 Java SE 核心 I 和 Java SE 核心 II 等方面的...
Java 学习笔记 本资源摘要信息涵盖了 Java 编程语言的基础知识,着重于面向对象编程(OOP)的概念和实现。下面是该资源的详细知识点: 1. 面向对象编程(OOP)的基本概念: * 对象: everything is an object...
Java学习笔记全集是针对Java编程语言的一份详尽的学习资料,它涵盖了从基础到进阶的各个层面,旨在帮助初学者系统地学习Java,并为有一定经验的开发者提供复习和巩固知识的平台。这份笔记主要关注Java语言的核心概念...
### 瑜琅Java学习笔记概览 瑜琅的Java学习笔记涵盖了Java的基础概念与核心特性,从起源到高级特性均有涉及。以下是对该学习笔记各部分的深入解析: ...希望这份笔记能够帮助更多的人更好地理解和掌握Java编程。
### Java编程思想笔记知识点概述 #### 第 1 章 对象导论 在这一章节中,主要介绍了Java中的基本概念——对象。对象是面向对象编程的核心,它封装了数据和行为。本章首先解释了对象的概念,接着讨论了如何创建对象...
Java面向对象编程笔记 本文主要介绍了Java面向对象编程的基本概念和原则,包括对象、类、继承、多态、封装、抽象等概念的定义和解释,并通过实例讲解了面向对象编程的思想和方法。 一、什么是对象? 在面向对象...
从标题“java核心思想读书笔记”和描述可以看出,这份资料是作者结合《Java核心思想》一书和其他网络资源整理而成,适合不同水平的Java学习者,特别是初学者和有经验的工程师。 1. **Java的设计目标** - 不同于...