一切都是对象
尽管java是基于C++的,但是相比之下,Java是一种更“纯粹”的面向对象设计语言。
2.1用引用操作对象
每种编程语言都有自己的操纵内存中元素的方式:是直接操作元素,还是用某种基于特殊语法的间接操纵对象。
在Java中,一切都看作对象,操纵的标识符实际上是对象的一个“引用”(reference)。
你可以拥有一个引用,并不一定需要一个对象与它关联。
2.2必须由你创建所有对象
一旦创建了一个引用,就希望它能与一个新的对象相关联。通常用new操作符来实现。
1.存储数据的地方
1).寄存器。最快的存储区,它位于处理器内部,但寄存器数量有限
2).堆栈。位于通用RAM(随机访问存储器)中,虽然某些Java数据存储于堆栈中--特别是对象引用,但是Java对象并不存储于其中。
3).堆。通用的内存池(位于RAM中),用于存放所有的Java对象
4).常量存储。直接存放在程序代码内部
5).非RAM存储。数据完全存活于程序之外,不受程序的任何控制,在程序没有运行时也可以存在。
两个基本的例子:流对象和持久化对象。
2.特例:基本类型
基本类型不用new来创建变量,而是创建一个并非是引用的“自动”变量。这个变量直接存储“值”,并置于堆栈中,效率更高。
基本数据类型具有包装器类
高精度数字:BigInteger和BigDecimal
3.Java中的数组
几乎所有的程序设计语言都支持数组。在C和C++中使用数组是很危险的,因为C和C++中的数组就是内存块。
在Java中,创建一个数组对象时,实际上就是创建了一个引用数组,并且每个引用都会自动被初始化为一个特定值null.
2.3永远不需要销毁对象
1.作用域:决定了在其内定义的变量名的可见性和生命周期。
在作用域里定义的变量只可用于作用域结束之前。
2.对象的作用域
Java对象不具备和基本类型一样的生命周期。当用new创建一个Java对象时,它可以存活于作用域之外。
string s = new string("123");
引用s在作用域终点就消失了,然而,s指向的string对象仍继续占据内存空间。(垃圾回收器来释放这些对象的内存空间)。
2.4创建新的数据类型:类
1.class ATypeName = new ATypeName();
2.字段和方法(数据成员和成员函数)
字段可以是任何类型的对象。
基本成员默认值
若类的某个成员是基本数据类型,即使没有进行初始化,当变量作为类的成员使用时,Java才确保给定其默认值。
但是若果在某个方法中定义有int x;,那么变量x得到的可能是任意值,而不会被自动初始化为零。
2.5方法、参数和返回值
1.方法的基本组成部分包括:名称、参数、返回值和方法体
方法名和参数列表唯一地标识出某个方法。
2.参数列表
尽管java是基于C++的,但是相比之下,Java是一种更“纯粹”的面向对象设计语言。
2.1用引用操作对象
每种编程语言都有自己的操纵内存中元素的方式:是直接操作元素,还是用某种基于特殊语法的间接操纵对象。
在Java中,一切都看作对象,操纵的标识符实际上是对象的一个“引用”(reference)。
你可以拥有一个引用,并不一定需要一个对象与它关联。
2.2必须由你创建所有对象
一旦创建了一个引用,就希望它能与一个新的对象相关联。通常用new操作符来实现。
1.存储数据的地方
1).寄存器。最快的存储区,它位于处理器内部,但寄存器数量有限
2).堆栈。位于通用RAM(随机访问存储器)中,虽然某些Java数据存储于堆栈中--特别是对象引用,但是Java对象并不存储于其中。
3).堆。通用的内存池(位于RAM中),用于存放所有的Java对象
4).常量存储。直接存放在程序代码内部
5).非RAM存储。数据完全存活于程序之外,不受程序的任何控制,在程序没有运行时也可以存在。
两个基本的例子:流对象和持久化对象。
2.特例:基本类型
基本类型不用new来创建变量,而是创建一个并非是引用的“自动”变量。这个变量直接存储“值”,并置于堆栈中,效率更高。
基本数据类型具有包装器类
高精度数字:BigInteger和BigDecimal
3.Java中的数组
几乎所有的程序设计语言都支持数组。在C和C++中使用数组是很危险的,因为C和C++中的数组就是内存块。
在Java中,创建一个数组对象时,实际上就是创建了一个引用数组,并且每个引用都会自动被初始化为一个特定值null.
2.3永远不需要销毁对象
1.作用域:决定了在其内定义的变量名的可见性和生命周期。
在作用域里定义的变量只可用于作用域结束之前。
2.对象的作用域
Java对象不具备和基本类型一样的生命周期。当用new创建一个Java对象时,它可以存活于作用域之外。
string s = new string("123");
引用s在作用域终点就消失了,然而,s指向的string对象仍继续占据内存空间。(垃圾回收器来释放这些对象的内存空间)。
2.4创建新的数据类型:类
1.class ATypeName = new ATypeName();
2.字段和方法(数据成员和成员函数)
字段可以是任何类型的对象。
基本成员默认值
若类的某个成员是基本数据类型,即使没有进行初始化,当变量作为类的成员使用时,Java才确保给定其默认值。
但是若果在某个方法中定义有int x;,那么变量x得到的可能是任意值,而不会被自动初始化为零。
2.5方法、参数和返回值
1.方法的基本组成部分包括:名称、参数、返回值和方法体
方法名和参数列表唯一地标识出某个方法。
2.参数列表