今天开始学习面向对象(OO),感觉还不错,还是跟大家分享一下:
1、什么是对象?什么是类?类和对象有什么关系?
对象:对象是存在的具体实体,具有明确定义的特征和行为。
类:类是具有相同属性和行为的一组对象的集合,在软件系统中,我们用类来模拟现实生活中的实体。
关系:类是对象的抽象,对象是类的实例。
2、属性和静态变量的区别是什么?
1)属性是包含在对象之中的,是对象的属性,一个对象属性的变化不会影响另一个对象的属性。而静态变量是独立在对象之外的,是所有对象共享的,静态变量值的变化会影响所有的对象。
2)属性随着对象存放在堆空间中,而静态变量存放在数据段空间中。
3)静态变量产生时间在产生对象之前,在类加载时产生。而属性是随着对象产生而产生。
4)属性只能通过对象.的方式访问。而静态变量可以通过对象. 和类名.的方式访问。
3、什么样的对象符合垃圾回收的条件?
没有被变量指向的对象
4、变量按类型分为几种?各有什么特点?
变量按类型分可以分为基本数据类型和引用数据类型。
特点:基本数据类型存放的是具体的数据,引用数据类型存放的是对象的地址。
5、变量按作用域分为几种?各有什么特点?
变量按作用域分可以分为局部变量、成员变量和静态变量。
特点:局部变量:方法和语句块内部定义的变量(栈空间,当方法或语句块一结束,局部变量空间马上释放)。
成员变量:方法外部、类的内部定义的变量(堆空间, 随对象产生而产生,随对象销毁而销毁)。
静态变量:加上了关键字“static“的变量(数据段,常驻内存,创建好之后,不会消失)。
6、什么是null?对null调用方法和属性有什么后果?
null:表示一个引用类型变量没有指向任何对象。
后果:会抛出一个java.lang.NullPointerException异常。
7、什么是包?包有什么作用?
包:就是文件夹。
作用:通过使用包,可以有效地组织相关的类,还可以在不同的包中存放同名文件,另外还可以做到信息的隐藏。
8、如何在一个包中使用另外包中定义的类?什么样的类无需导入可以直接使用?
如果要使用别的包定义的类,需要通过import类的全路径(包名+类名)进行导入才能使用。 只有本包中的类和java.lang.*中的类无需导入可以直接使用。
9、指出下面代码中有哪些行进行了垃圾回收?
public class Man{
public int age;
}
public class Test{
public static void main(String[] aa){
Man m1 = new Man();
Man m2 = new Man();
m1.age = 1;
m2.age = 2;
m1 = m2;
m1.age = 3;
m1 = new Man();
m1.age = 4;
m2 = m1;
m2.age = 5;
}
}
垃圾回收: m1.age=1; m2.age=3;