Think In Java 学习整理 第二章 一切都是对象
2.1 用引用操纵对象
操纵对象的标示符实际上是对象的一个“引用(reference)” 可以将这个引用想象为遥控器来操作电视机(对象)。
String s; 创建了一个引用,而不是一个对象 . 安全的做法进行初始化 String s = "asf";
2.2 必须由你创建所有对象
用new关键字来创建一个对象 String s = new String("asdf");
2.2.1 存储在什么地方
1) 寄存器 最快的存储区,在处理器的内部,空间有限。
2) 堆栈 位于RAM(随机访问存储器),由堆栈指针来存取数据 数据类型:一般为对象的引用,而不是对象本身,还有基本的数据类型(后面有提到)。
3)堆 通用的内存池 用于存放所有的Java对象 只要new一个对象的时候才会为对象分配存储的空间。
4)常量存储 直接放在程序代码的内部
5)非RAM存储 数据指流对象和持久化对象
2.2.2 特例:基本类型
java中需要存储一些小的、简单的变量.直接存储"值",置于堆栈中
这些变量有:boolean char byte short int long float double void
高精度计算的类:BigInteger 和 BigDecimal
2.2.3 Java中的数组
java数组确保会被初始化,并不能在它的范围之外访问它。
创建一个数组对象时就是创建了一个引用数组,每个引用都会默认的被初始化为一个特定的值,数组的默认值为null。
也可以创建一个有基本类型的数组 初始化后的内存全部为零。
2.3 永远不要销毁对象
2.3.1 基本类型的作用域中的变量名不能被重复使用。
2.3.2 对象的作用域
如 {
String s = new String("a string");
}
引用s在作用域终点就消失了,而s指向的String对象继续占据内存空间。java的垃圾回收器 会销毁不使用的对象。
2.4 创建新的数据类型:类
字段可以是任何类型的对象,可以通过其引用与其进行通信,也可以是基本类型的一种,如果字段是某个对象的引用,那么必须初始化该引用以便它与一个实际对象相关联。
基本成员的默认值 在java中当变量作为类的成员时,就会有默认值 ,而其他的不会有,如方法中的局部变量,就没有默认值,必须对方法中的变量进行初始化操纵。
java中的方法只能作为类的一部分来创建 方法只有通过对象才能被调用(static方法除外)
这种调用方法的行为称为"发送消息给对象"
参数列表:为了提供方法内部功能的实现。
程序是一系列带有方法的对象的组合,这些方法以其他对象为参数,并发送消息给其对象。
2.6 static关键字
static关键字的使用范围:为某个特定域分配单一存储空间和没有对象也能调用的方法。
这个域或是方法不会和任何实例对象关联在一起 。
使用static方法 不能调用其他非static域或是方法,只有通过对象的方式来调用非static域和方法。
被static修饰的变量、方法 被称为静态变量、静态方法 可以用类名.变量名\方法名的形式,来调用
static字段对某个类来说只有一份存储空间,而非static字段对每个对象有一个存储空间。
static方法的重要用法是在不创建任何对象的前提下就可以调用它。