-----接Java进阶笔记(中级)-----
-
JDBC
-
导入mysql-jdbc的jar包
-
初始化驱动:Class.forName(“com.mysql.jdbc.Driver”)
-
Connection conn = DriverManager.getConnection(url, username, password);
-
创建Statement对象: Statement s = conn.createStatement();
-
s.execute执行sql语句
-
// 从数据库查询,结果集返回给ResultSet
ResultSet rs = s.executeQuery(sql);
while(rs.next()){
//rs对应的get方法
} -
关闭连接:先关闭Statement,后关闭Connection
-
数据库分页
- mysql:使用limit,例如:select * from table limit 0,5; (返回前5行)
- oracle:使用ROWNUM函数
-
PreparedStatement
- //根据sql语句创建PreparedStatement
PreparedStatement ps = c.prepareStatement(sql); - 特点:使用参数设置,预编译,速度比Statement快
- //根据sql语句创建PreparedStatement
-
-
GUI
- GUI事件监听
关键字 作用 Adapter 适配器 ActionListener 按钮被点击时触发 ActionEvent事件 KeyListener 键盘监听 MouseListener 鼠标监听 - GUI容器
- JFrame:右上角有最大化最小化按钮
- JDialog :右上角没有最大和最小化按钮
- 模态Jdialog
- 图片内容摘自how2j.cn
- 图片内容摘自how2j.cn
- GUI常用布局
- FlowLayout(流布局)
- BorderLayout(边框布局)
- GridLayout(网格布局)
- 常用面板
- JPanel:基本面板
- JSplitPane:分为两部分,左边是pLeft,右边是pRight
例如:JSplitPane sp = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, pLeft, pRight); - JScrollPanel:带滚动条的面板
- TabbedPanel:顶部带tab的面板
- 工具栏
- JToolBar tb = new JToolBar(); //创建工具栏
- tb.add(组件对象); //添加工具
- JTable
- 图片内容摘自how2j.cn
- JTable t = new JTable(heros, columnNames);
- 图片内容摘自how2j.cn
- 日期
- 第三方的类: DatePicker 和 JXDatePicker
-
反射机制
- 获取类对象
- 有3种方式获取类对象:
- Class.forName(类名)
- 类名.class
- new 类名.getClass()
- 获取类对象的时候,会初始化类属性
- 在静态方法前面加synchronize,同步对象是当前类对象
- 创建类对象
- //使用反射的方式创建对象
String className = “类名”;
//类对象
Class pClass=Class.forName(className);
//构造器
Constructor c= pClass.getConstructor();
//通过构造器实例化
类名 class = (类名) c.newInstance(); - 修改对象属性
- //获取类的字段
Class c =new Class();
Field f= c.getClass().getDeclaredField(“字段名”);
//修改这个字段的值
f.set(c, “新属性”); - 图片内容摘自how2j.cn
- //获取类的字段
- 调用方法
- Class c =new Class();
// 获取名称是xxx,参数类型是String的方法
Method m = c.getClass().getMethod(“xxx”, String.class);
// 对c对象,调用这个方法
m.invoke(c, “参数值”);
- Class c =new Class();
- //使用反射的方式创建对象
- 获取类对象
-
常用注解
名称 作用 @Override 重写父类方法 @SuppressWarnings 忽略警告信息 -
JVM垃圾回收
- 判断对象是否存活(截图来源:博客园)
- 回收算法
- 标记-清除
- 标记存活的对象,清除未标记的对象
- 缺点
- 标记和清除过程效率低
- 产生较多不连续的碎片,无法为大的对象分配空间
- 标记-整理
- 让所有存活对象向一端移动,然后直接清理掉端边界以外的内存
- 标记-复制
- 将内存划分为大小相等的两块,每次只使用其中一块,
当这一块内存用完了就将还存活的对象复制到另一块上面,
然后再把使用过的内存空间进行一次清理 - 缺点:只使用了一半的内存
- 将内存划分为大小相等的两块,每次只使用其中一块,
- 分代收集
- 根据对象存活的生命周期将内存划分为年轻代、老年代和永久代。
然后根据不同的区域采用合适的收集算法。 - Java一般将堆区分为年轻代和老年代,将方法区划为永久代。
- 根据对象存活的生命周期将内存划分为年轻代、老年代和永久代。
- 标记-清除
- 判断对象是否存活(截图来源:博客园)