head first java,java,思维简图

olivia_ong 2016-10-18 10:39:39

本点博可采用思维简图模式查看

!java对象
!!实例变量(知道什么)
!!!primitive 主数据类型:byte,short,int,long,boolean,char,float,double
!!!引用
!!行为(执行什么)
!继承与多态
!!继承:事物共同属性向上抽取,形成父类,子类继承父类的属性和行为,同时可以对行为进行覆盖
!!!覆盖
!!!!子类可以覆盖对象的变量和方法,当子类覆盖变量时,子类方法使用的是子类的成员变量,父类方法使用的父类的成员变量。
!!!!子类覆盖方法时,不能修改方法的参数以及返回类型,同时权限只可以相同或者更加开放
!!多态:父类引用子类对象
!!!抽象类:不能被实例化,抽象方法所在的类必定是抽象类
!!!接口:只含有抽象方法,同样不能被实例化,可以同时实现多个接口
!堆和栈
!!堆:存放对象(可用于垃圾回收的堆)
!!栈:存放方法和局部变量
!构造器与对象的生命周期
!!构造器
!!!与类名相同,没有返回类型,可以重载
!!!默认构造器没有参数,但是只有在类中没有构造器的情况下编译器才会产生
!!!创建子类对象时,先调用父类的构造方法(super()),super()只能放在代码第一行
!!!this表示本类对象,this()也只能放在第一行,super()和this()不能同时调用
!!对象的生命周期
!!!局部变量在堆栈块中,随声明该变量的方法的释放而释放
!!!对象的生命周期与其引用变量有关,如果没有引用变量指向该对象,则该对象可以被垃圾回收器(GC)回收
!!!!引用变量释放,则指向对象也释放:void go(){ Life z=new Life();}
!!!!引用变量指向其他对象,则对象可回收:void go{ Life z=new Life(); z=new Life();}
!!!!引用变量置空(null):void go{ Life z=new Life(); z=null;}
!静态和数字
!!静态
!!!静态变量:有默认值;通常被类名调用,不用引用变量调用;一个静态变量一个类只有一个(被实例共享);在类加载的时候初始化,在静态方法执行之前初始化,在创建对象之前初始化
!!!静态方法:通常用类名调用,不用引用变量调用;在静态方法中不能调用该类的非静态方法以及非静态变量
!!!静态代码块:在类加载时调用,对于子类,首先调用的是父类的静态代码块
!!!final 关键字(保持不变)
!!!!静态的final是常量,名字要大写;静态的final一定要初始化,可以在声明中初始化,也可以在静态代码块中初始化;
!!!!final修饰的方法不能被覆盖
!!!!final修饰的类不能被继承
!!数字
!!!primitive主数据类型对象:Boolean, Character, Integer, Byte, Short, Long, Float, Double(Java 5.0 之后的autoboxing功能可以直接将主数据类型的数包装成对象)
!!!数据的格式化:String.format("指令格式", 要格式化的数据)
!!!!指令格式:%[arguement number][flags(特定类型的特定选项,如数据中加逗号和正负号)][widths(最小的字符数,不足补零)][.precision(精确度,小数点后有几位)]type(数据类型)
!!!日期:获取当前日期用Date,其他用Calendar;Calendar是抽象类,不能实例化,可以用getInstance()方法获取子类的实例
!图形用户接口(GUI)
!!如何创建GUI?
!!!创建JFrame对象:JFrame frame=new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);语句是在关闭GUI时自动结束程序
!!!创建组件,将组件添加到frame上,例如按钮:JButton button=new JButton(); frame.getrame的ContentPane().add(button);//可以选择添加到frame的哪个位置
!!!设置frame的大小,同时要加其设为可见:frame.setSize(50,50);frame.setVisible(true);
!!如何绘图?
!!!创建自己的JPanel(相当于画布),其继承了JPanel类
!!!覆盖JPanel类中的paintComponent(Graphics g)方法
!!如何在组件上添加事件
!!!首先确定事件源(一般组件都是事件源),在事件源上添加监听器
!!!监听器实现XXXListener接口中的actionPerformed方法(事件处理方法)
!!内部类
!!!静态内部类
!!!!不依赖外部类实例:Outer.Inner inner=new Outer.Inner();
!!!!和普通类一样,可以定义静态变量和方法,只能访问外部类的静态变量和方法
!!!成员内部类(非静态内部类)
!!!!需要依赖外部类实例:Outer out=new Outer(); Outer.Inner inner=out.new Inner();
!!!!不能定义静态变量和方法,可以访问外部类所有的变量和方法
!!!局部类(定义在方法中的类)
!!!!若方法为非静态方法,则可以访问外部类的所有变量和方法,做为静态,则只能访问静态成员和方法
!!!!可以访问方法的参数以及方法中的局部变量,这些参数和局部变量必须要声明为final
!!!匿名内部类(使用比较多)
!!!!new 类/接口{//实现部分}
!!!!可以访问外部类所有的变量和方法