1. java基础入门
a) 操作系统中配置java环境变量?
PATH=%PATH%; c:\java\bin;
CLASSPATH = .;c:\java\lib\classes.zip
b) 对类名、属性名、方法名以及常量名命名的时候需要注意什么?
标识符以字母,数字,美元符号"$",下划线"_"组成,第一个字符不可用数字
类名:首字母必须大写;之后每个单词的首字母也大写
类名首字母只能是下划线与字母,后面可以再加数字
属性名:首字母小写,之后每个单词首字母也大写,不可以与关键字重名。
方法名:首字母小写,之后每个单词首字母也大写。
常量名:所有字母都需大写,不同单词之间用下划线区分
c) 定义类名必须要和什么相同?
类名必须与创建的java文件相同;
d) Java编译和运行的命令与格式?
编译:javac 类名.java
运行:java 类名
e) Java中的基本数据类型 ?
byte char short int float long double Boolean
f) Java中有哪几种数据类型?
基本数据类型、
引用类型(类类型)
g) String的常用方法有哪些?
valueOf():将其他的基本数据类型转换为字符串
trim(): 返回字符串的副本,去掉空白
toUpperCase():将字符大写化
toLowerCase():讲字符小写化
toCharArray():将此字符串转换为一个新的字符数组。
substring(int beginIndex, int endIndex):返回一个新字符串,它是此字符串的一个子字符串
length():返回此字符串的长度
lastIndexOf(String str) 返回指定子字符串在此字符串中最右边出现处的索引
equals(Object anObject):将此字符串与指定的对象比较
equalsIgnoreCase(String anotherString):将此 String 与另个 String 比较,不考虑大小写
indexOf(String str):返回指定子字符串在此字符串中第一次出现处的索引
isEmpty():当且仅当 length() 为0 时返回 true
concat(String str):将指定字符串连接到此字符串的结尾
2. 类和对象
a) 类的定义
类是由相同特征和相同行为对象的抽象;
类由两个部分组成:属性和方法。属性对应的是特征,方法对应的是行为。
b) 对象的定义
对象是现实生活中存在的物体以及脑海中所想象的物体。
对象由两个部分组成:特征和行为。
c) 定义类的格式
public class 类名{
private 数据类型 属性名;
public 返回值类型 方法名([参数类型 参数名,...]){
//方法体
}}
d) 创建对象的格式
类名 对象名 = new 类的构造函数;
e) 方法的分类
有无返回值;
有无参数;
f) 方法的重载
必须在同一个类中,
方法名要完全相同,方法所带参数个数或者参数类型要不同
g) 构造函数
1、 没有返回值类型
2、 函数名必须与类名相同
3、 默认的是没有带参数的构造函数,但是一旦有改写,则默认的就会不存在;
4、 构造函数是用来实例化对象的,每调用一次就实例化了一个对象
h) 值传递
适用于基本数据类型及String类型;
值传递是将目标变量中的值拷贝一份存入到一个新的变量中,新旧变量互不影响
i) 引用传递
适用于java的引用类型。
引用传递是将对象名中存储的地址拷贝一份存入到另一个对象名中,两个对象名就指向了同一块内存,“一变全变”;
j) this关键字
1、 区别形参与属性。有this的是属性,没有的是形参;
2、 代表当前的对象,可以用this.属性 或者 this.方法名 来调用属性与方法;
3. 类的继承
a) 为什么需要继承?
1、减少了代码量,提高了工作效率,减低了代码的冗余。
2、提高了程序的扩展性。
b) 继承的语法格式
public class 子类(超类) extends 父类(基类) { }
c) 子类能继承到父类的哪些方法和属性
能继承到所有的方法和属性
但是调用的时候:
子类跟父类在同一个包下:子类能调用共有的和受保护的属性和方法;如果子类重写父类的方法则调用重写后的方法;
子类跟父类不同包下:只有共有的方法和属性能被子类调用
d) 方法的重写
1.方法名字要相同
2.方法的实现要不同。
3.必须要存在继承关系。
4.方法所带的参数个数和类型要完全相同。
5.访问修饰符可以和父类的不同,但是必须大于或者等于父类的访问修饰符。
e) 自动转型
条件是存在继承关系;
父类名 对象名 = new 子类构造方法(参数值列表);
缺点:不能调用子类自己没有重写的方法
优点:封装了子类独有的方法;
简化了代码的编写,提高程序扩展性;
f) 多态
多态是由方法重载,继承,方法重写,自动转型等一系列的内容组合的
g) 接口
接口是用来定义抽象方法的,定义了抽象方法后,就要求实现类必须要重写接口中所有的方法。
h) 抽象类
接口和类的集合。
接口、抽象类和类的区别?
1.接口只能定义抽象公有方法;类可以定义任何不是抽象的方法。
2.接口可以实现多重继承;抽象类与普通类只能是单继承。
3.接口定义的关键字是interface ;类定义的关键字是class.
4.接口只能继承,继承的关键字是extends;类既可以继承(继承的关键字是extends)也可以实现接口,并且实现接口是可以实现多个(实现的关键字是implements)。
5.接口没有构造函数,不能实例化对象;抽象类因为可以定义抽象方法,所以也不能实例化对象;普通类有构造函数,可以实例化对象。
4. Java的图形界面和事件
a) Java的图形界面有几套?
有swing、swt与awt三种
b) 为什么要使用swing,而不使用awt ?
它提供了AWT 所能够提供的所有功能,并且用纯粹的Java代码对AWT 的功能进行了大幅度的扩充。
c) 所有的图形界面都是从哪一个类继承的?
Object类
d) 事件步骤
1. 确定事件源;
2. 给事件源设置好条件,设置好捕获事件的条件;
3. 创建一个处理事件的类,再实例化类的对象;
4. 结束;
e) 常用的监听器
鼠标监听器(继承自MouseAdapter类)
ActionListener类
f) ActionEvent和MouseEvent
ActionEvent为语义类事件,而MouseEvent为低层事件
5. 数组和队列
a) 数组
数组是一种线性的数据结构
操作数组是通过什么?
数组下标
多维数组
是一维数组的拓展
获取行的总数格式? array.length
获取列的总数格式? array[i].length
数组的缺点?数组中只能存储一种类型的数据;
数组的长度是固定的,如果发生追加或者删除长度的时候无法实现
b) 队列: 定义一个类,用该类来封装对数组的操作。
数组可以使用Object来实例化。
队列只能存储一种数据类型。
但是java提供了一个叫做泛型的概念, E可以表示java所有类,然后E结合类一起使用就可以储存不同类型的数组元素;
6. 重绘
1. 要有一个队列来储存获过的对象
2. 要有一个画图形的类,每画一次就加到队列中
3. 调用父类的paint方法,然后通过循环队列里储存的画图类,每次都重绘一次
7. 五子棋
一、界面
五子棋界面窗体:设置好窗体属性;并显示窗体
在显示界面的时候就需要有一个棋盘,并且棋盘要一直在窗体上存在。
15*15格子的棋盘。每一个格子的大小40个像素,每一颗棋子的大小是30像素
用数组来对应所下的棋子
二、输赢算法:
同色棋子在“米字”方向上有连接超过5个则该色棋子赢了;
三、人机,判断机器下的子:
根据棋子在棋盘上的相连排列,分为8种(或更多);
有一连活(表示只有一个棋子相连,周围8面都是活路),一连半(表示一个棋子相连,一面被异色棋子堵住,一条线只能下一边),相似还有二连活、二连半、三连活、三连半、四连活、四连半;将这些位置设置为不同的权值,一个棋子周围就有不同的权值,所有棋子的权值表累加在一起,判断权值最大的地方就是落子的地方
四、重绘:每下一个棋子都放入队列中,然后与窗体一起重绘