1,Java中的关键字:
关键字 |
含义 |
abstract |
表明类或者成员方法具有抽象属性 |
assert |
断言,用来进行程序调试 |
boolean |
基本数据类型之一,声明布尔类型的关键字 |
break |
提前跳出一个块 |
byte |
基本数据类型之一,字节类型 |
case |
用在switch语句之中,表示其中的一个分支 |
catch |
用在异常处理中,用来捕捉异常 |
char |
基本数据类型之一,字符类型 |
class |
声明一个类 |
const |
保留关键字,没有具体含义 |
continue |
回到一个块的开始处 |
default |
默认,例如,用在switch语句中,表明一个默认的分支。Java8 中也作用于声明接口函数的默认实现 |
do |
用在do-while循环结构中 |
double |
基本数据类型之一,双精度浮点数类型 |
else |
用在条件语句中,表明当条件不成立时的分支 |
enum |
枚举 |
extends |
表明一个类型是另一个类型的子类型。对于类,可以是另一个类或者抽象类;对于接口,可以是另一个接口 |
final |
用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成员域的值不能被改变,用来定义常量 |
finally |
用于处理异常情况,用来声明一个基本肯定会被执行到的语句块 |
float |
基本数据类型之一,单精度浮点数类型 |
for |
一种循环结构的引导词 |
goto |
保留关键字,没有具体含义 |
if |
条件语句的引导词 |
implements |
表明一个类实现了给定的接口 |
import |
表明要访问指定的类或包 |
instanceof |
用来测试一个对象是否是指定类型的实例对象 |
int |
基本数据类型之一,整数类型 |
interface |
接口 |
long |
基本数据类型之一,长整数类型 |
native |
用来声明一个方法是由与计算机相关的语言(如C/C++/FORTRAN语言)实现的 |
new |
用来创建新实例对象 |
package |
包 |
private |
一种访问控制方式:私用模式 |
protected |
一种访问控制方式:保护模式 |
public |
一种访问控制方式:共用模式 |
return |
从成员方法中返回数据 |
short |
基本数据类型之一,短整数类型 |
static |
表明具有静态属性 |
strictfp |
用来声明FP_strict(单精度或双精度浮点数)表达式遵循IEEE 754算术规范 |
super |
表明当前对象的父类型的引用或者父类型的构造方法 |
switch |
分支语句结构的引导词 |
synchronized |
表明一段代码需要同步执行 |
this |
指向当前实例对象的引用 |
throw |
抛出一个异常 |
throws |
声明在当前定义的成员方法中所有需要抛出的异常 |
transient |
声明不用序列化的成员域 |
try |
尝试一个可能抛出异常的程序块 |
void |
声明当前成员方法没有返回值 |
volatile |
表明两个或者多个变量必须同步地发生变化 |
while |
用在循环结构中 |
this关键字有以下作用:
①强调调用本类方法。
②表示类的成员属性(变量)。
③调用构造方法(需放在行首且不能循环调用)
④表示当前对象。
String的使用:String类对象的两种实例化方式
String的使用:String类对象的两种实例化方式 String name1 = "Sakura"; //直接赋值方式 String name2 = new String("Sakura"); //利用构造方法实例化
使用"=="和equals比较字符串是否相等
使用"=="比较的是两个对象在内存中的地址是否一致,也就是比较两个对象是否为同一个对象。
使用equals()方法比较的是对象的值是否相等,name1和name2所指对象的值都是"Sakura"所以输出为true。
2,字符串一旦定义便不可变
String name = "Amy"; String name = "Smith"; String name = "Amy" + "Smith";
Java定义了String内容不能被改变。分析堆内存,是可以知道字符串变化为字符串利用改变每一次的改变都会产生垃圾空间,所以不要频繁更改定义好的字符串。
3,字节与字符串
查看API可以看见有许多关于字节的方法。字节使用byte描述,是Java中的基本数据类型之一,使用字节一般主要用于数据的传输或者进行编码转换的时候使用。在String中有许多将字符串转换为字节数组的操作,目的就是为了传输转换。
还学习了包及其一些 import引入的使用
继承的特性
-
子类拥有父类非 private 的属性、方法。
-
子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。
-
子类可以用自己的方式实现父类的方法。
-
Java 的继承是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类,多重继承就是,例如 A 类继承 B 类,B 类继承 C 类,所以按照关系就是 C 类是 B 类的父类,B 类是 A 类的父类,这是 Java 继承区别于 C++ 继承的一个特性。
-
提高了类之间的耦合性(继承的缺点,耦合度高就会造成代码之间的联系越紧密,代码独立性越差)。
还学习了一些关键词,例如继承的extends,我们还可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类。
final 关键字声明类可以把类定义为不能继承的,即最终类;或者用于修饰方法,该方法不能被子类重写
方法的覆写与重载
覆写是指子类定义了与父类中同名的方法,但方法的覆写必须考虑到权限。
即子类中覆写的方法权限必须大于或等于父类中的被覆写的方法的权限。
重载是指方法名称相同但参数的类型或个数不同的方法。
学习总结:
上周巩固了继承,
学习了接口
Interface 接口名称{
全局变量:
抽象方法;
}
super可以理解为是指向自己超(父)类对象的一个指针,而这个超类指的是离自己最近的一个父类。
调用父类构造方法
接口没有构造方法,不能用于实例化对象。抽象类都要被继承,有子类覆写,更详细的进行输出。
- 一个类可以同时实现多个接口。
- 一个类只能继承一个类,但是能实现多个接口。
- 一个接口能继承另一个接口,这和类之间的继承比较相似。
-
异常类
1.所有的异常都是从Throwable继承而来的,是所有异常的共同祖先。
2.Throwable有两个子类,Error和Exception。
3.Exception,是另外一个非常重要的异常子类。它规定的异常是程序本身可以处理的异常。异常和错误的区别是,异常是可以被处理的,而错误是没法处理的。
1. 通过try...catch语句块来处理异常, 或者使用throw或者throws 进行抛出通过上层处理
还有finally的关键字。
-
线程的优先级
每一个 Java 线程都有一个优先级,这样有助于操作系统确定线程的调度顺序。
Java 线程的优先级是一个整数,其取值范围是 1 (Thread.MIN_PRIORITY ) - 10 (Thread.MAX_PRIORITY )。
默认情况下,每一个线程都会分配一个优先级 NORM_PRIORITY(5)。
Java 提供了三种创建线程的方法:
- 通过实现 Runnable 接口;
- 通过继承 Thread 类本身;
- 通过 Callable 和 Future 创建线程。
- 为了实现 Runnable,一个类只需要执行一个方法调用 run(),
- public void run();
- 新线程创建之后,你调用它的 start() 方法它才会运行。
-
Thread 方法
下表列出了Thread类的一些重要方法:
-
下表列出了Thread类的一些重要方法:
序号 方法描述 1 public void start()
使该线程开始执行;Java 虚拟机调用该线程的 run 方法。2 public void run()
如果该线程是使用独立的 Runnable 运行对象构造的,则调用该 Runnable 对象的 run 方法;否则,该方法不执行任何操作并返回。3 public final void setName(String name)
改变线程名称,使之与参数 name 相同。4 public final void setPriority(int priority)
更改线程的优先级。5 public final void setDaemon(boolean on)
将该线程标记为守护线程或用户线程。6 public final void join(long millisec)
等待该线程终止的时间最长为 millis 毫秒。7 public void interrupt()
中断线程。8 public final boolean isAlive()
测试线程是否处于活动状态。 -
字节流与字符流,两者使用非常相似又有区别。
一:
InputStream类
InputStream抽象类是表示字节输入流的所有类的超类,它以字节为单位从数据源中读取数据,其派生的常用子类说明如下:
● FileInputStream类
该类以字节为单位从文件中读取数据。
● ByteArrayInputStream类
该类在内存中创建一个字节数组缓冲区,从输入流读取的数据保存在该字节数组缓冲区中。
● ObjectInputStream类
该类从输入流读入对象,读取对象信息。
InputStream类定义了Java的输入流模型,下面是其常用方法的一个说明:
● public abstract int read() throws IOExecption
该方法用于从输入流中读取数据的下一个字节,返回读到的字节值,若遇到流的末尾,返回-1。
● public int read(byte[] b) throws IOExecption
该方法用于从输入流中读取b.length个字节的数据,并将数据存储到缓冲区数组b中,返回的是实际读到的字节数。
● public int read(byte[] b,int off,int len) throws IOExecption
该方法用于从输入流中读取len个字节的数据,并从数组b的off位置开始写入到这个数组中。
● public void close() throws IOExecption
关闭此输入流,并释放与此输入流相关联的所有系统资源。
OutputStream类
OutputStream抽象类是表示字节输出流的所有类的超类,它以字节为单位将数据写入数据源,其派生的常用子类说明如下:
● FileOutputStream类
该类以字节为单位将数据写入到文件。
● ByteArrayOutputStream类
该类在内存中创建一个字节数组缓冲区,所有发送到输出流的数据保存在该字节数组缓冲区中。
●ObjectOutputStream类
该类将对象信息写入到输出流。
下面是OutputStream类的常用方法介绍。
●public abstract void write(int b) throws IOExecption
该方法用于将指定的字节写入到输出流。
● public int write(byte[] b) throws IOExecption
该方法用于将b.length个字节从指定的byte数组写入到输出流。
● public int write(byte[] b,int off,int len) throws IOExecption
该方法用于将len个字节的数据,并从数组b的off位置开始写入到输出流。
● public void close() throws IOExecption
关闭此输出流,并释放与此输出流相关联的所有系统资源。
Reader类
Read抽象类是表示字符输入流的所有类的超类,它以字符为单位从数据源中读取数据。其派生的常用子类说明如下:
● InputStreamReader类
该类从数据源读取字节并将其解码为使用指定的字符集的字符。
● FileReader类
该类继承于InputStreamReader,用于读取字符类文件,如文本文件。
● BufferedReader类
该类用于将缓冲区中的数据以字符为单位读取。
下面是Reader类的常用方法介绍。
● public int read(int b) throws IOExecption
该方法用于读取单个字符,返回作为整数读取的字符,如果已经到达流的末尾,返回-1。
● public int read(char[] cbuf) throws IOExecption
-
1),AWT
AWT,抽象窗口工具包。被保存在java.awt包中。
AWT包中提供的所有工具类主要有以下三种:
(1)组件 (2)容器 (3)布局管理器
(2),Swing
AWT大量地引用Windows函数,被称为重量级组件,但也因为大量的Windows函数,导致AWT很难在Windows以外的系统上使用,因此Java2中提供了轻量级的界面组件——Swing。
- ①基本容器JFrame
-
JFrame可用来创建窗体。
在JFrame中可以使用Dimension类设置窗体大小。Point类可以控制窗体的出现坐标。
②标签组件JLabel
JLabel组件表示的是一个标签,本身是用来显示信息的,一般情况下是不能直接更改其显示内容的。
JLabel可以创建文字和图片。根据不同的需要可以改变文字的字体。
-
③按键组件JButton
JButton组件表示一个普通的按钮,使用此类就可以直接在窗体中增加一个按钮。
④布局管理器
Swing中主要有五种布局管理器:①FlowLayout ②BorderLayout ③GridLayout ④CardLayout ⑤绝对定位
1),FlowLayout:属于流式布局管理器,它可以让组件像流水一样依次进行排列。
2),BorderLayout:是将一个窗体的版面划分为东西南北中五个区域,可以将需要的组件放到这五个区域中。BorderLayout非常实用,因为大部分软件都是这种类似的排版。
3),GridLayout:它可以将组件按表格的形式进行管理,在使用此布局管理器的时候必须设置显示的行数和列数。
4),CardLayout:它可以将一组组件彼此重叠地进行布局,就像一张张卡片一样,每次只会展现一个界面。
5),绝对定位:如果不想在窗体中指定布局管理器,也可以通过设置绝对坐标的方式完成布局。
-
3)事件和监听器:
事件是指一个对象发生状态变化,监听器则是不断监听事件变化,并根据这些事件进行相应地处理。如果没有能够接收和处理事件的对象,图形界面程序所发生的一切事件都是无用的。
值的注意的是,所有监听器都是以接口的形式实现的。为了减少不必要的代码,我们在使用监听器的时候,通常都使用对应的监听适配器。
①,窗体事件
WindowListener是专门用来处理窗体事件的监听接口,一个窗体的所有状态变化,如窗口打开与关闭、缩小与最大化等都可以用这个接口进行监听。
②,动作事件
动作事件可以使按钮变得有意义,在Swing中,可以使用ActionListener接口处理按钮的动作事件。由于ActionLIstener接口定义了一个方法,因此没有对应的监听适配器。
③,键盘事件
使用KeyListener接口可以对键盘的操作进行监听。详见书本p684-685
。
④,鼠标事件
使用MouseMotionListener可以对鼠标的拖拽操作进行监听d
4),菜单组件
(1)JMenu和JMenuBar
- 感想:学习了一个学期的Java了解了面对对象编程,自从学习了c以后,Java在课下的时间花的更多了,也做了许多的笔记,我认为Java比c更有意思,他更简洁,更易懂,Java有三大优点可移植性,具有较高的安全性,三大特性封装-继承-多态,Java利用mysql数据库为后台,做登陆系统,现在还做。c写了俄罗斯方块还有一些小游戏,Java写了记事本,计算机其实也类似,利用窗口菜单组件等,而且利用Java 写游戏也要更方便一点,刚开始写了普通的台球。后面是飞机大战。其实都还好,不足的话,上课有时候停不下了就会有点走神,别的都还好,当出现难点,虽然没及时解决,但还是回想着如何解决。