最近在整理由于比较空余,花了点时间把之前的学习笔记------- Java 编程思想学习笔记之二-------一切都是对象
一、Java语言里包含基本数据类型和对象,当然基本数据类型也有相应的封装器,可以通过new来创建相应基本数据类型的对象,因而可以说在Java里一切都是对象。对于基本数据类型,可以通过自动变量的方式访问,也可以通过封装器new一个对象然后再通过对象进行访问,而对象的访问是通过句柄来操作的,也就是说对象可以不断的去创建,但是要去使用的话,必须通过句柄来访问,句柄相当于一个遥控器,通过这个遥控器给关联的对象发送消息。那么在Java里这些基本数据类型、句柄、对象是如何保存的呢:
a、寄存器,寄存器位于CPU内部,存储速度非常快,对于我们Java编程来说,我们无法控制哪些是数据保存在寄存器中,这个是由编译器决定如何使用的,因而我们不用太关注这个
b、堆栈,通常也叫做栈区,位于随机存储器的上部,向下生长来拓展栈区大小,一般我们的对象句柄,基本数据类型的自动变量保存在这个位置
c、堆区,堆也是位于随机存取存储器中,是在运行期自动分配的,具有灵活性,但是灵活也带来了时间的损耗,一般对象会保存在这个位置
d、静态存储区, 也是位于随机存取存储器中,主要用来保存 static 定义的数据
e、常数区,常数区也是位于随机存取存储器中,用于保存不可变的数据或者常量数据
f、非RAM区,可以理解为我们的磁盘
以下是基本数据类型:
类型 位数 封装器
boolean 1 Boolean
char 16 Character
byte 8 Byte
short 16 Short
int 32 Integer
long 64 Long
float 32 Float
double 64 Double
基本数据类型的大小时固定的,不会由于所使用平台不一样,而数据的位数不一样,另外需要注意的是,基本数据类型和句柄在作用于结束后就消失了,而对象依然存在,对像和句柄不是必然联系的,可以通过新的句柄继续控制这个对象,也可以让Java的垃圾回收器销毁这个对象
二、创建类
Java程序可以理解为由各种类组成,然后通过给不同的类的对象发送消息,来完成相应的任务,那么如何创造一个类呢------> 通过关键字class
类主要有两部分组成,一个是字段、一个是方法
class MyWork{
1、字段:字段可以说是属性、数据成员,这个类有的一些特点,字段可以是基本数据类型,也可以是其他类的实体对象
2、方法: 也可以理解为函数,方法是指这个类有的行为动作,完成某个任务
}
1、通过之前的学习,字段的定义很容易理解,如果是基本数据类型的话,可以通过自动变量来定义,也可以通过基本数据类型的封装器来定义,如果是对象的话,就用构造器(new)关键字来创建,例如:
int i = 10; 通过自动变量来创建基础数据类型
Integer i = new Integer(10); 通过基础数据类型的构造器来创建
Myclass a = new Myclass(); 通过构造器来创建一个非基础数据类型对象
2、方法是这个类实体对象的行为,实际上是一个函数,只是叫法不一样,定义如下:
返回类型 方法名(变量){
实体
}
int addOne(int i){
return ++i;
}
上面也说了,Java里可以理解为一切都是对象(基本数据类型也是可以用对象来表示),那么方法的返回类型可以是基本数据类型也可以是对象,变量可以是基本数据类型也可以是对象,以下例子没有实际意义,只是举例
String getString (String s){
return s;
}
另外需要注意的一点,如果用static关键字来修饰字段和方法,程序运行之前就存在内存中,这时候这个类的对象可能都还不存在,因此static字段或者方法与这个类的任何对象都没有关联,需通过类来访问static字段和方法,当然如果这个类的对象创建了,然后通过对象也是可以找到static字段和方法的。这点跟非static字段和方法是有很大区别,非static字段和方法必须通过创建对象,才能存在,才能分配到内存去运行,然后才能使用。也正是这样,static字段和方法是无法直接访问同个类里面的其他非static字段和方法,因为此时可能没有实际对象,没有实际对象就没有真实存在,也就没法访问了。static字段和方法与类关联的,不是与对象关联的,那么这个static字段和方法的值改变后,会把这种改变应用到所有的对象中去。