《Java程序设计》课程主要知识点
★掌握java应用程序和java小应用程序在jdk环境下的开发步骤
★java的基本顺序结构
1 各种基本类型名称(关键字)、占用内存空间,缺省值等
2 各种基本类型的常量和变量:如何定义
3 Java运算符
4 类型转换
5 字符串 (定义、比较、String提供的常用方法等)
6 基本的输入输出(控制台输出和键盘输入)
7 流程控制
8 一维数组
★对象与类
1 对象
2 类的定义
3 类的构造方法
4 this、final、static 用法
5 方法参数java的值传递
6 方法的重载
7 对象实例化
8 包的创建、import关键字
★继承
1 类继承的实现
2 super、this关键字
3 方法的覆盖(重写)
4 多态性
5 final 关键字修饰类和方法的用法、涵义
6 强制类型转换
7 抽象类和抽象方法
8成员的各种访问控制权限
9 Object 提供的常用方法equals()、toString()、hashCode()
10 泛型数组列表ArrayList
★接口与内部类
1 接口的定义与实现
2 接口的语法特性
3 接口与继承的区别
4 常量接口的定义、使用
5 接口与抽象类的区别
6 Lambda表达式
★图形用户界面设计
1 组件分类
2 能建立简单的窗口程序
3 窗口程序中,组件绘制怎么完成
4 事件处理模型 事件处理的几种基本方式
5 常见的容器布局管理器,使用方式
6 熟悉基本的控制组件对应的类,如何使用
★异常处理
1 异常的概念
2 Java中常见的异常
3 异常的基本语法
4 异常的分类
5 捕获异常 try… catch…finally
6 异常声明 throws
7 异常抛出 throw
★集合与泛型
1 List接口 对应的实现类 ArrayList 及其LinkedList
2 Set接口 对应的实现类HashSet和TreeSet
3 Map接口 对应的实现类HashMap和TreeMap
4 会使用泛型类
★流与文件
1 JavaIO模型
2 处理InputStream
3 处理OutputStream
4 Reader & Writer
5 RandomAccessFile
6 java.io.Serializable(理解序列化接口)
★多线程
1 线程的概念
2 实现线程的2种方式
3 线程的几个重要方法
4 synchronized关键字,wait()和notify()
复习
1 课程内容回顾
本学期《Java程序设计》主要内容
控制结构
顺序、分支、循环
类的定义
构造方法、成员、getter/setter
继承
构造方法调用(super, this)
父类构造方法一定先于子类构造方法
重载与覆盖
toString, equals, hashCode, finalize
抽象类(abstract)
向上转型
多态性理解
主要内容(Cont.)
接口、内部类、Lambda表达式
default, static方法
枚举类型
异常处理
try…catch…finally
throw, throws
自定义异常
集合与泛型
Collection, Set, List, Map
ArrayList, HashMap, Iterator, ListIterator
主要内容(Cont.)
多线程
Runnable, Thread(join, start…)
Synchronized
流与文件
InputStream, OutputStream, Reader, Writer
序列化、反序列化
2 题型
考试题型
一、选择题(10分,每题2分,共5题)
二、程序阅读题(40分,每题5分,共8题)
三、程序设计题(50分,3题)
考试方式:闭卷笔试
3 示例
选择题
Java语言中下面哪个可以用作正确的变量名称( )。
A、3D B、name C、extends D、implements
System类在哪个包中?
A、java.util B、java.io
C、java.awt D、java.lang
下面关于java中类的说法哪个是不正确的( )。
A、类体中只能有变量定义和成员方法的定义,不能有其他语句。
B、构造函数是类中的特殊方法。
C、类一定要声明为public的,才可以执行。
D、一个java文件中可以有多个class定义。
程序阅读题
下列程序的输出结果是___________。(答案:100)
class A
{public int f(int x){ return x+1; }}
class B extends A
{public int f(int x){ return x*x; }}
public class E
{public static void main(String args[]){
{A a=new B();
int m=a.f(10);
System.out.println(m);
}
}
编程题
打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。
例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
输出9*9乘法口诀表。
JAVA复习
字符
- 创造字符串对象
String s1 = new String();
String s2 = new String("Hello World");
char chars[] = { 'a', 'b', 'c', 'd', 'e' };
String s3 = new String(chars);
String s4 = new String(chars, 1, 4);
byte bytes[] = { 97, 98, 99 };
String s5 = new String(bytes);
- 字符串池
String s7 = new String("Hello");
String s8 = new String("Hello");
String s9 = "Hello";
String s10 = "Hello";
s7 == s8 : false
s9 == s10: true
原因:四个都在内存区。后面两个在字符串池(不可变字符串常量)。
- 字符串拼接
String s11 = s7+s8;
String s12 = s11.concat(s7).concat(s8);
java.util.Data now = new java.util.Data();
String s13 = "日期:" + now;
String str = "There is a string accessing example.";
- 获得字符串长度
int len = str.length();
- 获得索引位置16的字符
char ch = str.charAt(16);
- 查找(从头找,从尾巴找,从下标处找,找子串)
int a1 = str.indexOf('r');
int a2 = str.lastIndexOf('r');
int a3 = str.indexOf("ing");
int a4 = str.indexOf('e', 15);
- 比较(相等,比较大小,比较前缀后缀)
boolean b1 = s1.equals(s2);
boolean b2 = s1.equalsIgnoreCase(s2);
int b3 = s1.compareTo(s2);
int b4 = s1.compareToIgnoreCase(s2);
boolean b5 = s1.startsWith(s2);
boolean b6 = s1.endsWith(s2);
- 截取
int start = 1,end = 7;
String s14 = s1.substring(start,end);
String s15[] = s1.split(" ");
- 追加,插入,删除,替换
StringBuilder s16 = new StringBuilder("Hello");
s16.append("World").append('.').append(false).append(null);
s16.insert(4,s1);
s16.delete(1,2);
常规操作
- 输入
Scanner scanner = new Scanner(System.in);
int a = scanner.nextInt();
String line = scanner.nextLine();;
- 随机数
double a = Math.random(); //产生一个[0,1]的随机数
- ascii转字符
char ch = (char) (number + 97);
- 字符串、数字转换
int a = Integer.parseInt("1123");
String b = Integer.toString(123);
String c = Integer.valueOf(123);
- 读入文件
Scanner scanner = new Scanner(new File("myfile.txt"));
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
Scanner linescanner = new Scanner(line);//对每一行的内容建立一个扫描器
linescanner.useDelimiter(" ");//使用空格作为分隔符
String name = linescanner.next();
String math = linescanner.next();
String java = linescanner.next();
String ds = linescanner.next();
String avg = linescanner.next();
String total = linescanner.next();
}
scanner.close();
- 写文件
PrintWriter printWriter = new PrintWriter(path);
String line = "每行的内容";
printWriter.println(line);
printWriter.close();
- equal & hashCode 函数
@Override
public boolean equals(Object o)
{
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Triangle triangle = (Triangle) o;
return Double.compare(triangle.a, a) == 0 && Double.compare(triangle.b, b) == 0 && Double.compare(triangle.c, c) == 0;
}
@Override
public int hashCode()
{
return Objects.hash(a, b, c);
}
- 比较
"abc".compareTo("a");
Integer.compare(1,2);
Double.compare(1.1, 1.3);
- 注意
- 字符串中的字符不能用下标[i],要用charAt(i)
- synchronized 拼写
算法
- 最大公约数(非递归)
private static int gcd(int m, int n) {
if (m < n) {
int t = m;
m = n;
n = t;
}
while (m % n != 0) {
int yu = m % n;
m = n;
n = yu;
}
return n;
}
- 最大公约数(递归)
private static int gcd_recursive(int m, int n) {
if (m < n) {
int t = m;
m = n;
n = t;
}
if (m % n == 0)
return n;
return gcd_recursive(n, m % n);
}
- ArrayList 比较器
//ArrayList<String>
strList.sort(new Comparator<String>()
{
@Override
public int compare(String o1,String o2)
{
……
}
})
- 数组比较器
//String[] strList
Arrays.sort(strList, new Comparator<String>()
{
@Override
public int compare(String o1,String o2)
{
……
}
})
- Comparable接口
abstract public class Shape implements Comparable{
public int compareTo(Shape o)
{
return Double.compare(this.getArea(), o.getArea());
}
}