一、计算机高级编程语言类型:
a.编译型 b.解释型
Hello.java Java源文件
编译
Hello.class 字节码文件
解释
01101100.... (二进制)机器码指令
computer
二、Java是两种语言的结合
a、编译命令:javac.exe
b、解释命令:java.exe
三、Java中的程序是以类为单位,对类的定义有两种形式:
class类名称 | public class类名称 | |
代码 | class HelloABC { { System.out.println("Hello World!"); } class A { } { } ...... |
public class Hello { { } |
类文件与类名称关系 | 不一致 | 一致 |
生成的Java文件数量 | 产生多个class文件 | 产生一个public class文件 |
三、This 关键字的使用方法:
(1)强调调用本类方法
(2)表示类中的属性
(3)可以使用this调用本类的构造方法
(4)this表示当前对象
以后在类中访问属性的时候都要加上this关键字
四、使用this调用构造方法的注意事项:
(1)this( )调用构造方法必须也只能放在构造方法的第一行
(2)对于this调用构造方法的时候一定要留一个构造方法作为出口
五、static使用方法:
一个类中的方法不想由对象,而是由类名称直接调用;
非static声明的方法可以去调用static声明的属性或方法的。但是static声明的方法是不能调用非static类型声明的属性或方法的。
六、String 类两种实例方法区别:
(1)直接赋值:如String name = "lichen";
。
(2)利用new
开辟一个新的空间:如String name = new String("lichen");
。
七、Java 不支持多继承,但支持多重继承。
单继承 | public classA { ...... } public class B extends A { } |
多重继承 | public class A{.........} public class B extends A{.........} public class C extends B{.........} |
不同类继承同一个类 | public class A{.............} public class B extends A {.............} public class C extends A {.............} |
多继承 | public class A {...........} public class B {...........} public class C extends A,B{.............} |
八、继承的特性
1、子类拥有父类非private的属性、方法
2、子类可以拥有自己的属性和方法,即子类可以对父类进行扩展
3、子类可以用自己的方法实现父类的方法
4、Java 的继承是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类,多重继承就是,例如 A 类继承 B 类,B 类继承 C 类,所以按照关系就是 C 类是 B 类的父类,B 类是 A 类的父类,这是 Java 继承区别于 C++ 继承的一个特性。
5、提高了类之间的耦合性(继承的缺点:耦合性高就会造成代码之间的联系越紧密,代码独立性越差)
九、继承的关键字
继承可以使用 extends 和 implements 这两个关键字来实现继承,而且所有的类都是继承于 java.lang.Object,当一个类没有继承的两个关键字,则默认继承object(这个类在 java.lang 包中,所以不需要 import )祖先类。
(1)extends 只能继承一个类
(2)implements 使用范围为类继承接口的情况,可以同时继承多个接口(接口跟接口之间采用逗号分隔)
(3)super 实现对父类成员的访问,用来引用当前对象的父类
(4)this 指向自己的引用
(5)final 可以把类定义为不能继承的,或者用于修饰方法,该方法不能被子类重写
注意:实例变量也可以被定义为 final,被定义为 final 的变量不能被修改。被声明为 final 类的方法自动地声明为 final,但是实例变量并不是 final
十、抽象类关键字abstract声明
- 一个类继承于抽象类,就不能继承于其他的(抽象)类。
- 子类可以继承于抽象类,但是一定要实现父类们所有abstract的方法。反之,则子类必为抽象类
- 只有实现父类所有抽象方法,才变成完整类
十一、接口类关键字interface
- 类只可以继承一个类,但是可以实现(implements)多个接口,继承和实现可以同时(实现多个接口,必须实现接口中所定义的所有方法)
- 接口是一种“特殊”的类
- 接口设计是为了弥补单根继承的不足
- extends必须写在Implements前面
- 继承多个接口,相当于将多个接口中未实现的方法都“承载”过来,否则会变成abstract类
十二、抽象类和接口相同点和不同点:
相同点:两者都不能被实力化,不能new操作
不同点:
- 抽象类可以有部分方法实现,接口所有方法不能有实现
- 一个类只能继承一个(抽象)类,实现多个接口
- 抽象类有构造函数,接口没有构造函数
- 抽象类可以有main,也能运行,接口没有main函数
- 抽象类方法有可以有private/protected,接口方法都是public
十三、异常
异常:一旦产生异常之后,异常之后的语句不会执行,而是直接结束程序。
异常处理格式:try....catch
finally作为异常的统一出口;
异常类的继承结构:
打印异常对象:
1、System.out.println();
2、通过Exception提供的一个方法public void printStackTrace();(此方法更常见)
十四、synchronized(this):
- 当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。
- 然而,当一个线程访问object的一个synchronized(this)同步代码块时,另一个线程仍然可以访问该object中的非synchronized(this)同步代码块。
- 尤其关键的是,当一个线程访问object的一个synchronized(this)同步代码块时,其他线程对object中所有其它synchronized(this)同步代码块的访问将被阻塞。
- 第三个例子同样适用其它同步代码块。也就是说,当一个线程访问object的一个synchronized(this)同步代码块时,它就获得了这个object的对象锁。结果,其它线程对该object对象所有同步代码部分的访问都被暂时阻塞。
- 以上规则对其它对象锁同样适用
十五、布局管理器
绝对布局
绝对布局,顾名思义,就是硬性指定组件在容器中的位置和大小,可以使用绝对坐标的方式来指定组件的位置。
使用绝对布局的步骤如下:
使用Container.setLayout(null)方法取消布局管理器。
使用Component.setBounds()方法设置每个组件的大小与位置
流布局管理器
流布局管理器在整个容器中的布局正如其名,像“流”一样从左到右摆放组件,直到占据了这一行的所有空间,然后再向下移动一行。默认情况下,组件在每一行上都是居中排列的,但是通过设置也可以更改组件在每一行上的排列位置。
FlowLayout类中具有以下常用的构造方法:
public FlowLayout()
public FlowLayout(int alignment)
public FlowLayout(int alignment, int horizGap, int vertGap
流布局管理器
流布局管理器在整个容器中的布局正如其名,像“流”一样从左到右摆放组件,直到占据了这一行的所有空间,然后再向下移动一行。默认情况下,组件在每一行上都是居中排列的,但是通过设置也可以更改组件在每一行上的排列位置。
FlowLayout类中具有以下常用的构造方法:
public FlowLayout()
public FlowLayout(int alignment)
public FlowLayout(int alignment, int horizGap, int vertGap)
构造方法中的alignment参数表示使用流布局管理器后组件在每一行的具体摆放位置。alignment为0时,每一行的组件将被指定按照左对齐排列;alignment为2时,每一行的组件将被指定按照右对齐排列;alignment为1时,每一行的组件将被指定按照居中对齐排列;
horizGap与vertGap参数分别以像素为单位指定组件之间的水平间距与垂直间距。
边界布局管理器
在默认不指定窗体布局的情况下,Swing组件的布局模式是BorderLayout布局管理器。边界布局管理器可以将容器划分为东、南、西、北、中5个区域,可以将组件加入到这5个区域中。容器调用Container类的add()方法添加组件时可以设置此组件在边界布局管理器中的区域,区域的控制可以由BorderLayout类中的成员变量来决定
十五、监听器模型涉及以下三个对象,模型图如下:
(1)事件:用户对组件的一个操作,或者说程序执行某个方法,称之为一个事件,如机器人程序执行工作。
(2)事件源:发生事件的组件就是事件源,也就是被监听的对象,如机器人可以工作,可以跳舞,那么就可以把机器人看做是一个事件源。
(3)事件监听器(处理器):监听并负责处理事件的方法,如监听机器人工作情况,在机器人工作前后做出相应的动作,或者获取机器人的状态信息。