java编程思想-1(第二章一切都是对象)
2.1 用引用操作对象
尽管一切都是对象,但是操纵的标识符实际上是对象的一个“引用”
引用创建:类型 引用名(例:String a:a就是一个引用)
2.2 必须由你创建所有对象
对象创建:new 类型()(例:String a = new String():创建了一个String类型的对象并将其给了引用a)
数据存储的位置:
寄存器:最快的存储区,位于处理器内部,程序员不能直接控制
堆栈:位于通用RAM(随机访问存储器)中,堆栈指针向下移动分配新的内存,向上移动,释放内存; 引用存储在此,但对象并不在这里
堆:一种通用的内存池(位于RAM中),但进行存储分配和清理的时候时间会长于堆栈; 对象存储于此
常量存储:常量通常直接存放在程序代码内部(但在嵌入式系统中,会将常量与其他部分隔开,因此会存放在ROM(只读存储器)中)
非RAM存储器:存储完全存活于程序之外的数据(即不管程序是否运行,该数据都存在)(例:流对象和持久化对象)
基本类型
这些类型不用new来创建对象,而是创建一个并非是引用的“自动”变量,这个变量直接存储值,并存于堆栈当中。
基本类型 | 大小 | 包装器类型 |
boolean | ------ | Boolean |
char | 16-bits | Charactor |
byte | 8-bits | Byte |
int | 32-bits | Integer |
long | 64-bits | Long |
float | 32-bits | Float |
double | 64-bits | Double |
void | ------ | Void |
short | 16-bits | Short |
注:boolean类型只有false和true两种值可以选择,所以不存在大小
基本类都有包装类型,所以可以在堆中创建一个非基本对象,用来表示对应的基本类
数组:创建一个数组对象时,实际上是创建了一个引用数组,并且每个引用都会被初始化为一个特定的值-----null(空),当java看到null时就知道该引用并没有指向对象
也可以创建一个存放基本数据类型的数组,同样其内容也会被置成0
2.3 永远不要销毁对象~
作用域:你可以存在于哪里(通俗意义上来说一般作用域都是你被创建时包裹你的那对大括号)
生命周期:就是你生存的时间段,从你创建开始到程序走出你所在的作用域结束
注:对象的生命周期并不会随着引用的销毁或者程序走出所在的作用域而结束,它可以一直存在于内存上,但是会有垃圾回收机制将上局说的那种不会用到的对象进行检测和回收
2.4 创建新的数据类型:类
创建:class 类名{想要装进去的东西}(public的类名必须和文件名一致)
字段和方法:成员变量和成员函数
例:创建一个名字是Student的类,里面包含成员变量name,age和成员函数getname()、getage()
class Student{
String name;
int age;
void getname(){System.out.println(name)}
void getage(){System.out.println(age)}
}
在main函数中创建一个这个类型的对象stu并给里面的name变量赋值为liu
Student stu = new Student()
stu.name = "liu"
2.5 方法、参数和返回值
方法:由返回值 名称 参数 方法体组成
定义:返回类型 名称(参数){方法体}
参数列表:指定要传递给方法什么样的信息,采用的是对象形式
在参数列表中指定每个传递对象的类型和名称,但实际上传递的也是引用
注:return有两个作用:1、已经做完、离开此方法 2、后面跟一个变量或值,则返回该值给调用这个方法的方法(返回值的类型必须与返回类型一致)
2.6 构建一个java程序
名字可见性:一般将自己的域名倒过来写进行工具类库的命名,这样就不会有重名的可能性了
导入包或别的文件:import 包名/文件名(在导入包的时候如果使用这个包内的内容比较多,可以将整个包全部导入,例如导入java.util包:import java.util.*)
注:import语句一定要写在文件的最上面
ststic关键字:静态的意思,一旦方法或者对象使用该关键词定义,则这个域或方法不会与包含它的那个类的任何对象实例关联在一起。
(即:即使你没有创建过某个类的对象,但是依然可以调用其的ststic方法或访问其static域)
无论你创建几个该类的对象,但其ststic修饰的成员变量只创建了一份,所有该类对象共用一份
引用:两种方法:1、对象名.静态变量/方法 2、类名.静态变量/方法
2.7 编写一个程序(略过)
2.8 注释和嵌入式文档
注释:
1、多行注释:/*......*/
2、单行注释://
注释文档:javadoc
共有两种方式:1、嵌入HTML文件
2、文档注释:类前、域前、方法前
写在/* */中间,以@作为行首开头(只能注释在public和protected成员前)
2.9 编码风格
驼峰风格:类名/方法/字段/引用里的每个单词的首字母要大写,标识符的第一个单词小写,后面的每个单词的首字母大写