学习日记:最近自己的心态终于调整好了,昨天崩溃的感觉达到了顶峰,甚至连睡觉都是在想着这些事情,每天都熬到一点,作为一个生活状态还算健康的大学生,一个学期熬的夜都在这个星期了,虽然最终到目前的成果也没有很好,但差不多能完成这个任务了(调整心态的终极奥义就是变佛系哈哈)确实已经很尽力了,虽然和班上的很多同学相比真的不算什么,能发现有些男生甚至熬到了三四点,实感佩服,确实也向老师说的,付出的时间不够多,认真来多付出总有收获的吧,现在我的程序我已经摆烂了,就好好努力顺一顺我的代码思路吧,加油!答辩也加油!
目录
全局变量
java中的全局变量是放在静态方法区中的,所有的实例对象会共享同一份全局变量。所以一旦对某个类实例化后对其中的全局变量做出修改,那么其他的实例其中的全局变量值也相应的会被修改。
属于堆内存
非静态全局变量:
非静态全局变量的定义:非静态全局变量都是定在类中,是类的成员变量或者说是成员属性属于类的一部分(或者说是对象的一部分);
生存时间:非静态全局变量加载在堆内存中,随着声明初始化而创建,随着对象消亡而消亡;
是否需要初始化:全局变量都是不需要被强制初始化的,系统都会默认根据其数据类型进行默认赋值;但是建议在声明时都进行初始化操作;
创建位置:创建在堆内存中,因为非静态的全局变量数对象的成员变量是对象的一部分;
静态全局变量:
静态全局变量的定义:静态的类成员变量;
生存时间:静态全局变量随着类的字节码文件加载而加载产生,随着字节码文件的消失而消失,生存时间比类的对象还要长;
是否初始化:凡是全局变量都是可以不要初始化的,静态变量也是一样,系统会自动根据其数据类型进行赋默认值,但是建议变量在声明时都进行初始化;
创建位置:非静态变量时存在于堆内存中的,所以静态全局变量也是存在于堆内存中的;
接口
- 在接口中声明的方法默认是抽象的,一个接口就是描述一种能力,因为Java不像C++一样支持多继承,所以Java可以通过实现接口来弥补这个局限。
- 一个类可以实现不止一个接口。
- Seriallizable接口,Seriallizable接口的作用是使对象能够“序列化”,但是Seriallizable接口中却没有任何内容,也就是说,如果有一个类需要实现“序列化”的功能,则这个类必须去实现Seriallizable接口,但是却并不用实现方法(因为接口中没有方法),此时,这个Serilizable接口就仅仅是一个“标识”接口,是用来标志一个类的,标志这个类具有这个“序列化”功能。
- 解耦
Serializable接口
Serializable是Java提供的序列化接口,是一个空接口,为对象提供标准的序列化与反序列化操作。使用Serializable实现序列化过程相当简单,只需要在类声明的时候指定一个标识,便可以自动的实现默认的序列化过程。
如何进行对象的序列化与反序列化操作也是非常的简单,只需要通过ObjectOutputStream,ObjectInputStream进行操作就可以了。
实例化
Vehicle ve = new Vehicle(); 通常把这条语句的动作称之为创建一个对象,也就是实例化,其实,它包含了四个动作。
1)右边的“new Vehicle”,是以Vehicle类为模板,在堆空间里创建一个Vehicle类对象(也简称为Vehicle对象)。
2)末尾的()意味着,在对象创建后,立即调用Vehicle类的构造函数,对刚生成的对象进行初始化。构造函数是肯定有的。如果你没写,Java会给你补上一个默认的构造函数。
3)左边的“Vehicle ve”创建了一个Vehicle类引用变量。所谓Vehicle类引用,就是以后可以用来指向Vehicle对象的对象引用。
4)“=”操作符使对象引用指向刚创建的那个Vehicle对象。 不实例化的对象是不能使用的。会空指针异常
继承
通过继承,子类获得了父类的成员变量和方法
继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
构造方法不会被子类继承,但可以从子类中调用父类的构造方法。