1 第一阶段面试题 简述 static 和 final 的用法? static:修饰属性,方法,代码块 (1)静态属性:也可叫类变量 类名.属性名 来访问 (共有的类变量与对象无关,只和类有关) 注意:类中的实例变量是在创建对象时被初始化的,被 static 修饰的属性,也就是类变 量,是在类加载时被创建并进行初始化,类加载的过程是进行一次。也就是类变量只会被创 建一次。 (2)静态方法:类名.方法名 直接访问 注意:static 修饰的方法,不能直接访问本类中的非静态(static)成员(包括方法和属性) 本类的非静态方法可以访问本类的静态成员(包括方法和属性),可以调用静态方法。 修饰变量,方法,类 final:修饰变量,类,方法 (1)修饰变量 被 fianl 修饰的成员变量就是常量(常量名大写),一旦赋值不能改变 修饰局部变量:修饰基本数据类型 -> 变量的值不能改变 修饰引用 -> 引用只能指向固定的对象 修饰实例变量:默认值不生效,可以再赋值 (2)修饰方法 :不能被子类覆盖 (3)修饰类:不能被继承 在一个 final 类中的所有方法,默认都是 final 的 注意:final,不能用来修饰构造方法。 写出冒泡排序的算法 for(int i=0;i<arr.length-1;i++){ //控制轮数 for(int j=0;j<arr.length-1-i;j++){ //控制每一轮的次数 if(arr[j]>arr[j+1]){ //每次都是和它下一个元素比 int t=arr[j]; arr[j]=arr[j+1]; arr[j+1]=t; } } } abstract class 和 interface 有什么区别? abstract class interface 实例化 不能 不能 类 一种继承关系,一个类只能使用一次 继承关系。可以通过实现多个接口 一个类可以实现多个 interface 数据成员 可有自己的 静态的不能被修改即必须是 static final,一般不在此定义 方法 可以私有的,非 abstract 方法,必 须实现 不能有私有的,默认是 public, abstract 类型 变量 可有私有的,变量有默认的类型,其 值可以在子类中重新定义,也可以重 新赋值 不可有私有的,默认是 public static final 型,且必须给其初值,实现类中 不能重新定义,不能改变其值。 设计理念 表示的是“is-a”关系 表示的是“like-a”关系 实现 需要继承,要用 extends 要用 implements