数据保存的位置:
寄存器。最快,位于处理器内部,有编译器分配。堆栈。速度次之,驻留于随机访问存储器(RAM)中,堆栈指针若向上移释放内存,向下移分配内存。编译器必须知道数据的长度和存在时间,因为编译器要生成相应的代码才能移动指针。句柄存储在堆栈中,对象并没有堆(Heap)。也在RAM中。特点是编译器不需要知道要从堆里分配多少存储空间,也不需要知道存储的数据要停留多长时间。这种灵活性带来的是更多的存储时间。对象存在堆中。静态存储。静态(static)是指“位于固定位置”,也在RAM中。程序运行的期间,静态存储的数据随时等候调用。用static指出对象的特定元素是静态的,但Java对象本身永远都不会放入 静态存储空间。常数存储。常数值通常置入程序内部。有的常数需要严格保护,可放入ROM中。非RAM存储。数据完全独立于程序,程序不运行是数据也存在,并在程序的控制范围之外。两个最主要的例子是“流式对象”和“固定对象”。对于流式对象,对象会变成字节流,通常会发给另一台机器。对于固定对象,对象保存在磁盘中。主要类型(变量容纳了具体值,存储在堆栈中)
主类型大小最小最大封装器类型byte8位Byteshort16位Shortint32位Integerlong64位Longfloat32位Floatdouble32位Doublechar16位Characterboolean1位Boolean高精度数字:BigInteger,BigDecimal,对于int和float的操作前者一样可以用,但必须通过方法调用,不能使用运算符,且速度会慢一些,因为精度更高。
scope:作用域。
{ String s = new String("a String"); }花括号包含的区域就是作用域的范围,句柄s在作用域的终点处消失,但是new出的对象不会消失,在失去唯一一个指向它的句柄后我们也无法访问这个对象,这个时候,垃圾回收器会释放这个对象所占的内存空间。
static 关键字
一般情况下,只有创建了一个对象才能生成数据存储空间。但是用static修饰的不管创建多少对象或者压根儿不创建都会有一个存储空间来保存数据,并且所有的对象都公用一个static数据。用static的好处是毋需创建对象就可使用类的某些数据或方法。由于static方法不需要创建任何对象,所以就不能调用非static成员或方法,因为后者需要一个特定的对象才能调用,这就是static方法只能调用static方法的原因。引用方式:普通方法或者 –> ClassName.Method();推荐后者,更能体现static的意义。编译与运行 window + R 打开 cmd
javac HelloWorld.java java HelloWorldjavadoc:生成一个注释文档
在Java中,我们用运算符操纵对象和数据,并用执行控制语句做出选择
运算符:位运算符,移位运算符
构造器的作用:创建对象的同时初始化。使代码更容易阅读
构造器初始化:顺序是先初始化变量,然后是构造器,即使代码顺序与逻辑顺序不一样。
第5章 库单元
Java访问指示符调用权限public谁都可以调用protected同包和继承的类可以调用,效果是部分实现public功能friendly同包内谁都可调用private只有自己的类可以调用在写代码之前,你首先要学会语言,再去学习code。
如何避免重复代码,两个方法:现有对象的组合,以及继承。
继承,初始化基础类:创建衍生类对象的同时,就效果上看,内部会封装一个基础类的对象。所以要明确基础类的构造器,正确初始化。