说明:该份总结为中南大学2022年春季郭老师班总结,仅供参考。
题型:选择(单选)+填空+判断+改错+问答(问概念)+程序
其中程序题一道会设计面向对象思想,另一道是考察对API的使用
一、Java语言基本语法(10%)
1.1 特点
- 跨平台
- 运行基本原理(java文件、class文件是什么要知道->前者是源代码,后者是编译后产生的字节码)
- 语法与C大致相同,无指针、程序入口是main函数
1.2 语法
- 变量
- 数据类型:float后加f,long后加l;不能直接把高精度类型赋值给低精度类型;0和1不能表示true和false;转移字符\
long l1=54232661826166; //会报错
long l1=54232661826166L; //整数后加l或L不会报错
float f1=3.14; //会报错,系统默认浮点是double,double赋给float所以报错
double d1=4578.568923; //不会报错
float f1=3.14f; //后面加f或F不会报错
- 运算
- 算术运算:+、-、、/、%、+=、-=、=、/=、++、--
- 关系运算:>、<、>=、<=、==、!=
- 逻辑运算:&&、||、!
- 流程
- 顺序
- 选择:if--else--;switch--case
- 循环:for、while、do--while、(配合break、continue)
- 数组:重点掌握一维数组和二维数组的定义
//一维数组
int[] a=new int[10];
//二维数组
int[][] b=new int[10][10];
二、面向对象基本概念
2.1 类和对象
- 类的定义
class Customer{
String name;
String sex;
int age;
}
- 由类实例化对象:相当于生成了一个对象,然后对象名指向它
Customer zhangsan=new Customer()
- 引用性质,对象名指向新的对象
2.2 成员变量和成员函数
- 成员变量和成员函数的定义
- 成员变量和成员函数的访问->通过.来访问
- 成员函数参数传递时的值传递和引用传递
(1)构造函数(constructor)
- 定义方式:与类名相同,无返回类型
- 调用特点:对象实例化时自动调用
- 无析构->有垃圾回收机制
(2)函数重载(overload)
- 三个条件:函数参数个数不同;参数个数相同,类型不同;参数个数和类型相同,顺序不同。
(3)静态变量
- 定义方式:static
- 性质特点:类的所有对象共用;
- 如何调用:可以通过类名或对象名访问
(4)静态函数
- 性质特点:只能访问静态成员
编程题可能设计静态变量与静态函数的使用
三、面向对象基本特征(50%)
3.1封装(Encapsulation)
(1)包
- 定义包
package chinasei;
- 导入包中类
package chinasei; //在同一个包中的类可以直接访问
//不在一个包中的类不能直接访问,需要导入
import school.admin.Teacher;
import school.*; //导入school包中的所有类,但是没有导入school子包中的类
(2)类
- public类
- 普通类
(3)成员
四个访问控制符
- pubic->all
- protected->同包,包外子类(通过super访问)
- 默认->同包
- private->only self
开放程度:public>protected>默认>private
3.2 继承
- 如何实现->extends
- 特点->1.只能使用继承的非public成员;2.JAVA不支持多重继承
- 覆盖(Override)->子类定义的与父类名称、返回类型、参数皆相同;要求——不允许缩小子类成员的权限,否则会报错
- 父类构造函数的初始化->父类构造函数有参数时,用super(参数列表)写在子类构造函数的第一句
3.3 多态
- 定义(父类引用->子类对象)
- 性质:该引用调用重写成员时,使用的是子类成员的
3.4 抽象类和接口
- 抽象类
abstract class Dialog{
public abstract void show();
}
抽象类不能被实例化;
抽象函数必须被重写,除非子类也是抽象类
抽象类中可以有普通成员函数
- 接口
抽象类中函数都是抽象的,则称为接口
类通过implements实现接口
3.5 其它
- final+变量:不能被改变
- final+函数:不能被重写
- final+类:不能被继承
四、Java语言基本功能
4.1 异常
(1)结构
try(1)……catch(1..多)……finally(0,1)
(2)常见异常
- NullPointerException:未分配内存异常(空指针异常)
- NumberFormatException:数字格式异常
- IOException:输入输出异常
- ArithmeticException:算数异常,如除数为0异常
- ……
(3)区分throw和throws
- 需要异常向前抛出的函数后面加throws ...Exception
- throw后直接跟异常对象
- throws标记为可能异常,throw将异常抛出
4.2 多线程
(1)定义和调用线程
这部分考察的要求是能编写代码
import java.lang.Thread
//1.继承ThreadA类
class FileThread extends Thread{
//2.编写run函数
public void run(){
//线程要运行的代码
};
}
//3.通过start函数开启进程
FileThread f1=new FileThread();
f1.start();
//1.实现Runnable接口
class FileTransRunnable implements Runnable{
//2.重写run函数
public void run(){
//线程要运行的代码
}
}
//3.实例化以上编写的Runnable实现类
FileTransRunnable f1=new FileTransRunnable("文件1");
new Thread(f1).start();
/*或者写为:
Thread th1=new Thread(f1);
th1.start();
*/
(2)控制线程的运行
- 线程暂停:让run函数结束,可以通过
while(flag){...}
中的flag变为false即可。 - 线程继续:新开启一个线程。
4.3 基本API
(1)java.lang包
这部分的要求是会编程
Math.random()
->生成一个0~1的double随机数String
->获得长度:length()
;获得某个位置字符charAt(int index)
;……StringBuffer
->掌握其与String的区别:StringBuffer是可变字符串,修改的时候原地修改,而String是修改后返回一个新字符串,原字符串不变。- 基本数据类型的包装类:
java.lang.Integer
、java.lang.Character
、java.lang.Float
…… - 字符串与数值的转化:
int i=Integer.parseInt("123");
String str=String.valueOf(65.25); //valueOf可以将其它各种类型转换成字符串
(2)java.util包
这部分不要求自己会编程,所以每个类的函数可以不用记忆,考试可能以写伪代码的形式考察
- List系列
- ArrayList
- LinkedList
- Vector
ArrayList没有实现线程安全,要频繁增删则建议使用LinkedList,Vector实现了线程安全
- Set系列
- HashSet
- TreeSet(集合内元素有序)
- Map系列
- HashMap
五、其它内容:Java IO、GUI、事件处理、网络编程
其实这章的每一部分也是十分重要的,但是考查重点不在这(别的班没讲,只会考一点点),因此把这些内容归到一起总结.
5.1 Java IO
这部分只了解各自功能即可,不要求编程:
- java.io.File
- java.io.FileInputStream(将内容从文件读入,文件输入流->字节流)
- java.io.FileOutputStream(写内容到文件中,文件输出流->字节流)
- java.io.BufferedReader(可以一行一行读文件)
- java.io.PrintStream(输出流)
- java.io.RandomAccessFile(既能读也能写)
5.2 界面与控件
- javax.swing中有JFrame\JDialog\JButton等控件
- java.awt中有颜色Color/Font/Image/Icon等等
- 布局:在java.awt包中
- FlowLayout:流式布局
- BorderLayout:边界布局
- GridLayout:网格布局
5.3事件开发
在java.awt.event包中
5.4 网络编程
- 在java.net包中
- Socket
- ServerSocket:accept函数等待Socket对象
- 端口由Server决定
- Client端有ip地址+端口号