导图社区 Java学习之路
Java学习之路的思维导图,内容有编译基础、面向对象程序设计特点、类和对象、继承和接口、异常类、常用工具类、输入输出文件操作、数据库操作、GUI图形用户界面&Swing程序设计、多线程。
编辑于2023-06-10 16:50:41 安徽Java学习之路
编译基础
编写
扩展名.java
编译
用java编译器(javac.exe)生成字节码文件(.class)
源文件有几个类就会有几个class文件
运行
用java解释器(java.exe)
面向对象程序设计特点
封装性
组成
该类的共同属性
具有的行为
特点
类将内部数据隐藏 仅仅为用户提供对象的属性和行为的接口 --> 用户通过接口使用类但是不制动这些类的内部是怎么构成的
继承性
父类
子类
多态性
将父类对象应用于子类的特征
不依赖具体类而是依赖抽象类和接口
在多态机制一般父类定义为抽象类
接口比抽象类更方便
类和对象
类
成员变量
成员方法
权限修饰符
private
该成员变量只能在本类中使用
public
跨包跨类任意访问
protected
子类和该包内的其他类
class Test{ protected int a; } /** * 证明子类可以访问protected的成员变量 * @author jayq * */ class Test2 extends Test{ public void getA(){ int b = a; } } /** * 证明对Test类创建实例化对象的时候可以访问到protected的成员变量 * @author jayq * */ class Other{ public int v; Test aa = new Test(); public int grt() { v = 1; return aa.a + v; } }
什么都不写则默认
该包内的类可以任意访问
局部变量与其有效范围
如果某个方法里面的局部变量和成员变量重名 有限访问局部变量
所在方法被执行的时候创建 方法执行结束之后销毁
使用时必须进行赋值操作或被初始化
this关键字
作为当前类的对象访问成员变量
作为类的对象返回值
public class Book { private String title; private String author; public Book(String title, String author) { this.title = title; this.author = author; } // 获取本书的作者 public String getAuthor() { return this.author; } // 获取本书的副本 public Book getCopy() { return this; // 返回本类对象 } public static void main(String[] args) { Book myBook = new Book("im hpy","hoy"); System.out.print(myBook.getCopy()+"\n"); Book yourBook; yourBook = myBook.getCopy(); System.out.println(yourBook); System.out.println(yourBook.getAuthor()); System.out.println(yourBook.title); } }
调用类中的构造方法
package theClass; /** * 该程序解释了this作为类名调用构造方法 * @author jayq * */ public class AboutThis { int eggCount; public AboutThis(int eggCount) { this.eggCount = eggCount; } public AboutThis() { this(1); //等同在默认构造方法中调用带参方法this就等价与类名 } public static void main(String[] args) { AboutThis cake1 = new AboutThis(); System.out.println("顾客不要求加蛋的数量,饼里有" + cake1.eggCount + "个蛋"); AboutThis cake2 = new AboutThis(3); System.out.println("顾客要求加蛋的数量,饼里有" + cake2.eggCount + "个蛋"); } }
类的构造方法
对象的赋值
Student stu2=new Student(); Student stu3=new Student("101","张三",360); stu2=stu3;//表示把stu3的管理的成员变量权限交给stu2而不是给2的成员变量赋值
判断对象的属性是否相同
stu2.equals(stu3)
扩展字符串比较也必须是equals
静态成员
静态变量
静态方法
类的主方法
对象
创建
访问属性和行为
引用
销毁
继承和接口
异常类
常用工具类
输入输出文件操作
数据库操作
数据库基础
数据模型类型
层次型
类似树状结构
记录之间的联系通过指针实现
网状型
多对多联系
面向对象型数据库
建立在面向对象模型基础上
关系型数据库
类似Excel表格
目前主流的数据库
SQL语言
数据定义语言
create
alter
drop
数据操纵语言
select
order by 按照某一列进行排序
group by
分组合并同类项,比如统计不同类型的数量
insert
插入一行全部的数据
insert into tablename valures(2,'lili','女','销售部');
插入一行指定的数据
insert into tablename[(name,sex)] values('lili','female');
update
更改部分信息
update tablename set age = 24 where id = 2;
delete
删除部分信息
delete from tablename where id = 1024;
数据控制语言
grant
revoke
事务控制语言
commit
rollback
JDBC
概述
必须把驱动程序放到你的程序包中才能进行对数据库的访问
主要任务
与数据库建立连接
向数据库发送SQL语句
处理数据库返回结果
常用类和接口
包的位置
java.sql
DriverManager类
JDBC的管理层,用于管理数据库的驱动程序
首先通过加载对应数据库驱动程序,Java自动将驱动程序的实例注册到该类
然后利用该类的方法getConnection()连接指定数据库
整体语句固定,以连接access数据库为例
Connection接口
与特定的数据库连接 执行SQL语句并返回结果
常用方法
Statement接口
execute(String sql)方法
执行静态的select语句 可能返回多个结果集
executeQuery(String sql)方法
执行给定的SQL语句,返回单个的ResultSet对象
Connection接口
createStatement()方法
创建Statement对象
statement = connection.createStatement();注意前面的是一个Statement对象只有对这个对象进行创建操作之后才能执行statement的一些查询方法
preparedStatement()方法
创建预处理对象preparedStatement
PreparedStatement接口
ResultSet接口
类似一个临时表,用来暂时存放数据库查询操作获得的结果集
具有当前数据行的指针,数据开始的位置在第一条记录的前面,通过next()方法可以将指针下移
数据库操作
连接数据库
出错原因是自己的类名重复了,修改为不是Connection即可
向数据库发送SQL语句
处理查询结果集
顺序查询
模糊查询
预处理语句
好处在于可以对SQL注入进行一定的防范作用
添加修改删除记录
GUI图形用户界面&Swing程序设计
常用窗体
JFrame
创建
JFrame jf = new JFrame();
没有标题窗口
(String title)有标题的窗口
初始设置
setBounds
设置坐标和大小
setSize
设置大小
setLocation
设置位置
setVisible
是否可见
setDefaultCloseOperation
设置窗口关闭的方式
常用面板
组件
文字标签组件
按钮组件
列表组件
文本组件
布局管理器
null绝对布局
FlowLayout流式布局
BorderLayout边界布局
GridLayout网格布局
事件监听
ActionEvent行为事件
多线程
线程同步
同步块
synchronized(Object) 有效防止资源冲突
同步方法
synchronized void f(){}
协调同步的线程
wait
线程联合
join()
拓展内容
public class ThreadJoin implements Runnable{ Cake cake; Thread customer, cakeMaker; //全新的形参的写法 类型相同,但是数量不确定 public void setThread(Thread ...t){ customer = t[0]; cakeMaker = t[1]; } //内部类 class Cake{ } }2023-06-08
插入到当前线程进行一定操作结束后继续进行刚刚的线程
比如读者在看电视,这个时候有人敲门,需要先去开门之后才能继续看电视
GUI线程
因为前面有单独的GUI所以可能不考
计时器线程
每隔一定时间振铃一次
使用Timer类
start()启动计时器
stop()停止计时器
restart()重新启动计时器
守护线程
特点
当程序中的所有用户线程都已结束运行时,即使守护线程的run方法中还有需要执行的语句,守护线程也立刻结束运行。
设置
调用void setDaemon(boolean on)方法可以将自己设置成一个守护(Daemon)线程,例如: thread.setDaemon(true);