说明:该份总结为中南大学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地址+端口号