1. 二维数组的定义格式: 第一种:直接给定了每一个一维数组中数组长度 数据类型[][] 数组名称 = new 数据类型[m][n] 第二种:给定了多少个一维数组,长度动态给定 数据类型[][] 数组名称 = new 数据类型[m][] ; 第三种:二维数组中直接给定元素值 数据类型[][] 数组名称 = {{元素1,元素2},{元素1,元素2}…}

       	如何遍历二维数组
       			int [][] arr = {{11,22},{33,44},{55,66}} ;
       			外层循环:控制的是二维数组长度,内存循环,一维数组长度
    
  2. 代码块 在Java中,{}括起来,统称为代码块 局部代码块,构造代码块,静态代码块(随着类的加载而加载,只执行一次) 构造代码块:在每次执行构造方法之前,优先执行构造代码块 优先级:静态代码块>构造代码块>构造方法

       MYSQL数据库..  JDBC(Java连接数据库)	
    
  3. 继承
      class Zi  extends  Fu{…}	
    

    A. 继承的好处: 1)提高代码的复用性 2)提高代码的维护性 3)它是多态的前提 B. 继承的特点: 继承不能多继承,只能单继承,但是可以多层继承.. C.注意事项: 1)子类继承父类,可以继承父类所有的东西(除过构造方法),私有的(private),不能直接 访问,所有需要提供公共的方法… 2)不能继承构造方法,但是可以通过super()关键字去访问… 3)子类继承父类,子类的构造方法(有参/无参)都会默认的访问父类的无参构造方法, 优先让父类的数据进行初始化. D. 假如:父类没有无参构造方法?会怎么样?如何解决? 会出现编译错误; 解决方法如下: 1)可以提供无参构造 2)通过super(父类的带参构造).. 3)通过this(),通过本类的无参构造,再通过无参构造间接的去访问父类的代码带参构 造..

    E.成员变量, 1) 如果子类继承父类,子类中的成员变量和父类中的成员变量名称不一致,分别输出 2)名称一致的情况:先在子类的局部位置找,找到,就输出 3)名称一致,还没有找到,到子类的成员位置找,有就输出,否则,到父类的成员位置 找,有就输出, 没有,就报错… F.成员方法 子类继承父类,子类的成员方法名和父类的名一致, 先子类中找,有就调用,没有就会到父类中调用 方法重写:override 方法重载:overload 子类声明了一个和父类一模一样的方法声明,其目的是为覆盖父类的方法,完成自己 的功能…

4.多态: 同一时刻,体现出来的不同状态 A.多态的前提: 1)必须有继承关系 2)必须有方法重写 3)父类的引用指向子类对象(向上转型)

B.多态的成员访问特点:
	    构造方法:都是对对象进行初始化的
	    成员变量:编译看左,运行看左
	    成员方法(非静态):编译看左,运行看右(存在方法重写)
     	静态的成员方法:不能算方法重写,和类有关系: 编译看左,运行看左
C.多态的好处:
     提高代码复用性(由继承保证)
     提高代码的扩展性(由多态保证)
D.多态的弊端:不能子类特有功能;
	   解决方法:
	   向下转型:将父类的引用强制转换为子类的引用
        	Fu  f = new Zi() ;
	   //向下转型
        	Zi z= (Zi)f ;
E. 向下转型容易出现的问题:
	      使用不当-ClassCastException:类转换异常
				解决方案:自己分析,内存的指向问题…			

5.抽象类 A.抽象类:(抽象类有抽象类多态的形式。。) 将类中的功能抽象化,类变成抽象类 关键字:abstract 抽象类的特点:不能实例化 -不能创建对象 抽象了的子类是具体类才是研究课题:由于具体类所有抽象类通过他子类进行实例化 B.抽象类的成员特点: 成员变量:可以是常量,也可以是变量 构造方法:有参/无参 成员方法:可以是抽象的,也可以是非抽象的 (有抽象方法的类一定是抽象类,抽象类中不一定有抽象方法)

6.接口 A. 接口: 给一些类提供一些额外的功能(扩展功能),定义接口 关键字:interface class 子实现类(后面加impl,做到见名知意) implements(实现) 接口{.......} B.接口中的成员特点: 成员变量:此变量是一个常量:public static final :默认的修饰符 构造方法:接口没有构造方法 成员方法:都是抽象方法

C.抽象类和接口的区别?从三个方向去答
  1) 成员的区别
	      成员变量:
		  	   抽象类:既可以常量,也可以是变量
			     接口:只能是常量,默认的修饰符:public static final
	      构造方法:
			     抽象类:有构造方法,无参/有参 (给对象进行初始化的)
			     接口:没有构造方法
	      成员方法:
			     抽象类:可以有抽象方法,也可以有非抽象方法
			     接口:只能是抽象方法 :默认的修饰符:public abstract

    2)类与类/类与接口关系的区别
	         类与类之间的关系:
			 继承关系,只支持单继承,不支持多继承,但是可以多层继承
     	类与接口的关系:
				   实现关系,一个类继承另一个类的同时,还可以实现多个接口...
	    接口与接口的关系:
				   是一种继承关系,既可以单继承,也可以多继承...
				   接口1 extends 接口2,接口3...

  	3)设计原则的 区别
	   (1)抽象类: 是有继承关系---->体现的是一种"is a"的关系   (A是B的一种或者B是A的                           一种)
	   (2)接口:类和接口:实现关系--->体现的是一种" like a"的关系(扩展功能)  :跳高猫 像                       猫  
  1. 形式参数和返回值问题
    A.形式参数是引用类型的情况: 具体类: 需要传递的是该类 对象 抽象类:需要传递是该抽象类的子类对象 接口:需要传递是该接口的子实现类 (还可以匿名内部类的方式) B.返回值的问题: 具体类:返回该该具体类的对象 抽象类:返回的是该抽象类的子类对象(间接的:抽象类多态…) 接口:返回的是该接口的子实现类对象(间接:接口多态)

  2. 内部类: A.成员内部类和局部内部类的写法 B.外部类访问成员内部类,局部内部类中的 成员使用的方式…. 1) 成员内部类是非静态的,外部类访问内部类的成员 外部类名.内部类名 对象名 = 外部类对象.内部对象; 2) 如果成员内部类是静态的,外部类访问内部类的成员 外部类名.内部类名 对象名 = new 外部类名.内部类名() ; 内部类访问外部类的成员变量可直接访问,静态的内部类访问外部类的数据,该数据 必须static修饰,和当前静态内部类的成员方法是否为静态还是非静态“ 没有关系”

    C.匿名内部类: 前提:接口或者抽象类(可以抽象类也可以普通类) new 接口名/类名(){ 重写功能(){…} } 本质:继承了该类或者是实现了该接口的子类对象..

  3. final关键字特点: final是一个修饰符,可以修饰类,方法和变量' 被final修饰的类是一个最终类不可以被继承; 被final修饰的方法是一个最终的方法.不可以被覆盖; 被final修饰的变量是一个常量,只能被赋值一次;

10.面试题 A. 方法重写和方法重载的区别? 方法重载:Overload 方法名相同,返回值类型相同,但是参数不同(参数类型不同,或者参数个数不同) 方法重写:Override 方法重写是相对于继承而言 重写的方法名,返回类型,参数类型,参数个数都要求和父类中一样.

B.final关键字的面试题?(final,finally,finalize有什么区别)
	   final用于声明属性,方法和类,分别表示属性不可改变,方法不可覆盖,类不能继承
   finally是异常处理语句结构的一部分,表示总是执行
   finalize是object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,           供垃圾收集时的其他资源回收,例如关闭文件等;