实现应用 价值
系统实用性
第一章
检验环境
wind+R
cmd
java
javac
计算机右击属性
高级系统设置
环境变量 (设置两个环境变量)
1.path
新建
点击下载文件的所在位置 点击复制 然后加;英文的分号 win10 不需要加分号
复制到新建中
2.classpath
lib 双击 点击地址栏 复制
新建 粘贴 前面加英文小点加分号将这条上移到最上面
3.新启动 cmd 输入Javac
4.如果可以就配置成功
编程 (用TXT文件写)
例如:
public class FirstDemo{
public static void main(String[] args){
System.out.println(“欢迎您!”);
}
}
1.开头定义关键字 : public 公有的 范围 ,class 类(类型, FirstDemo 类名(可随意)一定要大写 首字母 两个单词
2.程序入口 :定义程序入口 pubic static void main(String[] args) ,args可随意 String[] args 一个参数 ,是一个类型,String[]是一个字符串数组
首字母要大写
3.System out.println(); ln是英文字母 一行 System out.println(“欢迎您!”); ,里面为输出内容 字符要加"" ,
4.完成后 另存为名字为FirstDemo.java
\5. 先输入E: 换行 输入 javac FirstDemo.java 成功则出现 欢迎您 !
编程(用软件 )
一 .建立项目(project) 二.建立包(package cn. . ) 三.建立类(class…要大写)
1.打开软件 选择创建 选择第一个
2.在上面的new里面 选择安装软件是 jdk的目录
3.选择next
4.在最上面可选择文件保存位置
5.在最左面project 下 有自己的文件夹 下的 str ,右击str new->package 建立名字,名字要小写
6.再从左面的str下的文件夹下有个com.binhai 右击选择new->Javaclass
输出:
public static void main(String[] args) =psvm
System.out.println()=Soutp
\7. Ctrl+/ ,/**即可注释
8.ctrl+D 复制
9.运行 Run–>run
package com.binhai;-------建立一个名为com.binhai的包
public class FirstDemo --------建立一个类名为FirstDenon的类
public static void main(String[] args)-----------类中的方法 类为String的数组名为args{
百度 JAVA API文档 ;快捷键
父类(根类)上面是父类 类的继承可有多个
建立包–>建立类–>建立方法–>写程序
//定义变量
String userName;
String passWord;
//定义常量
finnal方法 固定 有类型
public finnal int DAY_OF_WONTH=30
//定义方法 如果两个单词要首字母大写 public int fun(int i){ return i;}
int i = 10;
long l = 100;
float f = 3.5f; // 如果是float 给值的时候要加f
double d = 4.0;
char c = ‘A’;
String str = “heallo”;
boolean b1 = true;// 真
boolean b2 = false; //假
第二章
数组 的定义
int [] brr={1,2,3,4,5,6,7,8,9,10};//第一种 可以不用指定列;
int [] arr=new int[10];//第二种
int[][] crr=new int[3][4];//二维数组定义
student[] stuAraay=new student[49];//
第三章
面向对象 Java C++ C#
面向过程 C
软件设置 view->Toolbar File->setting->systemseeting
code–>generate–>settering and gettering
面向对象 特征
1 封装性 private
2 继承性
3 多态性
p1.id=“20180200434”; 测试类 与下面一样的
p1.setId(“20180200434”); 加个 setting and …
public(共有的)同包就允许访问
private(私有的)同包也不允许 访问
pected(受保护的)不同的包也可以互相访问 子类
Person p1=new Person();构造方法 ,不带参数
//构造方法 与类名方法相同 不带返回值
code–>generate–>construction
public Person(String id) {
this.id = id;
}
setting–>code completion
Person p1=new Person(“2018001”)=p1.setId(“2018001”);
创造对象的时候要调用构造方法
//构造方法 带参数的
public void qukuan(String mima, double jiaoyie) {
if (this.mima != mima) {
System.out.println(“您输入的密码错误!”);
return;
}
//调用方法
bank.qukuan(“353230”,1000.0);
//调用静态方法
bank.huanyingNet();
3.重载 方法名相同 但是参数个数不同
4.类方法 类成员
第四章
1.继承 单继承
extends
extends 的意思的代码复用 只能有一个父类
子类 可以定义自己的方法和属性
code–>generate–>override 覆盖
2.抽象类 abstract
一般包含抽象方法
实例方法 (一般方法)
当定义了抽象类之后 再创建子类就没法用 必须Alt+回车 选择第一个 子类才能继承父类的方法
抽象方法 不能实例化 即是创建对象
接口 Interface
建立接口
3.类部类:定义在一个类的内部
分类:实例内部类 静态类部类 局部类部类 匿名类部类 GUI事件处理
用户需求
需求分析
4.异常:什么是异常?有哪些常见的异常?解决机制是什么?
\1. 一种是Erro 错误
\2. 一种是Excepti异常
当没有构建类的时候alt+回车 可以在字上创建一个方法
Exception in thread “main” java.lang.ArithmeticException: / by zero
at chapter05.TextExcept ion1.devide(TextException1.java:13)
在 chapter05. 包里 的TextException1类 .第13行出现了算术异常(ArithmeticException)被除数不能是0
ctrl +alt +t
{} 复合语句块 范围被锁死
处理方式:
1.主动处理 try{ 错误语句} catch{ 栈} code–>surround with->try catch
2.被动处理 方法体的位置 加异常声明 throws exception 让调动的处理
加 throws ArithmeticException private static int devide(int x, int y) throws ArithmeticException
异常分类
1.运行时异常 (未检查异常)
包装类 int–Interger float–FLOAT double–DOUBLE
Integer i=Integer.parseInt(“111a”);
NullPointerException 空指向异常
NumberFormatException 数据转换时出现异常
ArrayIndexOutOfBoundsException 数组下标越界
2.非运行时异常 (受检查异常)
3.自定义异常 throw 异常抛出 抛给其他的类 alt+回车 throw new AgeException02();
第六章 集合
数组(特点:声明时要固定长度大小 要定义数据类型)
集合(特点:长度随着变化而变化 不会浪费 不会限制数据 不用定义数据类型)(接口)
单列集合 Collection接口 不能实例化
一 list集合 (有序 可重复 单列)
1.集合的实现化 两种
ArrayList 顺序表
LinkedList 双链表 循环的
数据结构:线性(顺序表 链表) 树形 (网)
shift+alt+上下箭头 可随意上下走
\2. 遍历
迭代器
foreach 循环
二 set集合 (无序 不能重复 单列)
1.HashSet
2.TreeSet
三 Map集合 (双列 )
1 HashMap
2 HashTable
第七章
输入输出
public void actionPerformed(ActionEvent e) {
if(e.getSource()==btn){
int returnve=fc.showOpenDialog(this);
if(returnve==JFileChooser.APPROVE_OPTION){
textField.setText(fc.getSelectedFile().toString());
// 显示文件相关属性信息
getFileInfo(textField.getText());
// 显示文件内容
getFileContent(textField.getText());
}
}
}
private void getFileInfo(String text) {
File file=new File(text);// 文件对象
textArea1.append(“文件的路径:”+file.getAbsolutePath()+"\r\n");
textArea1.append(“文件的大小:”+file.length()+"\r\n");
textArea1.append(“文件的修改时间:”+file.lastModified()+"\r\n");
textArea1.append(“文件是否可读:”+file.canRead()+"\r\n");
textArea1.append(“文件是否可写:”+file.canWrite()+"\r\n");
textArea1.append(“文件是否隐藏:”+file.canExecute()+"\r\n");
}
private void getFileContent(String text) {
try {
FileReader fileReader=new FileReader(text);
int b;
while((b=fileReader.read())!=-1){
textArea2.append((char) b+"");
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
第八章
GUI 图形用户界面 组件
AWT——Windows——Frame
Dialog
一 Frame 子类
public class FrameLogin extends JFrame //继承方法
public FrameLogin() throws HeadlessException // 构造器 Alt+Fn+Insert
必须在构造器里才能编码
JPanel pnlMain;//面板 面板是透明的
JLabel lblText,lbllog;//标签
JButton btn;//按钮
1.框架
this.setSize(400, 300); // 窗口大小 长宽 单位像素
this.setVisible(true);// 设置窗体可视 默认不可视
this.setTitle(“GUI 窗口”);// 设置窗口标题
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 设置窗口的关闭方式
this.setLocation(350, 300);// 设置窗口出现的位置
2.面板
JPanel pnlMain;//面板 面板是透明的
pnlMain=new JPanel();// 创建面板
pnlMain.add(lbllog);
右击工程——D
JLabel lblText,lbllog;//标签
lbllog=new JLabel(new ImageIcon(“img/QQ.jpg”));// 从标签中加入图片
pnlMain.setBackground(Color.blue);// 添加颜色
setContentPane(pnlMain);// 关联上内容面板 pnlMain 加上了面板 必须有 因为面板默认是透明的
3.组件
\4. 按钮
JButton btnEnter;//按钮
btnEnter=new JButton(“进入”);// 创建按钮
二 布局
1.流布局
FlowLayout layout;
layout=new FlowLayout(FlowLayout.LEFT, 20, 30);// 创建布局 左对齐 左右对齐 上下对齐//创建流布局 对象名第一个字母要小写
pnlmain.setLayout(layout);// 将布局加入到面板设置面板的布局 就是 自己设置流布局
2.边界布局
BorderLayout layout;//边界布局
layout=new BorderLayout();// 创建边界布局
pnlmain.add(btnl1, BorderLayout.EAST);//将btnl1 加入到东 面板
pnlmain.add(btnl2, BorderLayout.WEST);//将btnl2 加入到西 面板
pnlmain.add(btnl3, BorderLayout.SOUTH);//将btnl3 加入到南 面板
pnlmain.add(btnl4, BorderLayout.NORTH);//将btnl4 加入到北 面板
pnlmain.add(btnl5, BorderLayout.CENTER);//将btnl4 加入到中 面板
3.网格布局
layout = new GridLayout(2, 3);// 创建网格布局
4.空布局
pnlmain.setLayout(null);// 设置面板为空布局
btnl1.setBounds(40, 20, 60, 30);// 设置组件出现的位置
btnl2.setBounds(40, 80, 60, 30);
pnlmain.add(btnl1);
pnlmain.add(btnl2);
\5. 网格包布局
// 添加布局的约束条件
GridBagConstraints c=new GridBagConstraints();// 网格袋布局的约束条件
c.fill=GridBagConstraints.BOTH;// 横向 纵向都可以拉伸
c.gridwidth=1;// 横向 一格
c.gridheight=1;// 纵向一格
c.weightx=2;
c.weighty=1;
layout.setConstraints(btn1, c);// 设置组件约束条件
三 事件
\1. Dimension dsSize;
Toolkit tookit=Toolkit.getDefaultToolkit();// 获取显示器相关信息
dsSize=tookit.getScreenSize();// ‘’=’可获取显示器高度 和宽度
Image img=tookit.getImage(“img/erha.JPG”) ;
setIconImage(img);// 设置标题栏的图标
2.GUI 实践处理机制 就如登陆 退出有动作(事件)
(1)事件源 (组件)
(2)给事件源添加相应的事件监听器
(3)编写事件处理过程
3.表达事件处理过程三种方式
(1)窗体类实现相应的事件处理接口
(2)匿名内部类
(3)内部类
(1) public class FrameLogin extends JFrame implements ActionListener
@Override
public void actionPerformed(ActionEvent e) {
// 验证登陆
if(e.getSource()==btn1) {
if(text.getText().equals(“admin”)
&&(word.getText().equals(“123456”))){
JOptionPane.showConfirmDialog(null, “用户名密码正确!登陆成功!”);
new BorderLayoutFrame();// 创建新窗口 setExtendedState(JFrame.MAXIMIZED_BOTH);//平铺屏幕
this.dispose();// 当窗口消失
}
else{
JOptionPane.showConfirmDialog(null, “用户名密码不正确!登陆失败!”);
}
}
// 验证退出
if(e.getSource()==btn2){ // 判断事件源是否是btn1
System.exit(0);// 应用程序退出
}
}
}
(2)
btn1=new JButton(“登陆”);
btn2=new JButton(“退出”);
btn1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(text.getText().equals(“admin”)
&&(word.getText().equals(“123456”))){
JOptionPane.showConfirmDialog(null, “用户名密码正确!登陆成功!”);
new BorderLayoutFrame();// 创建新窗口
}
else{
JOptionPane.showConfirmDialog(null, “用户名密码不正确!登陆失败!”);
}
}
});
btn2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
(3) MyAction my=new MyAction();
btn1.addActionListener(my);
MyAction2 my2=new MyAction2();
btn2.addActionListener(my2);
class MyAction implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
if(text.getText().equals(“admin”)
&&(word.getText().equals(“123456”))){
JOptionPane.showConfirmDialog(null, “用户名密码正确!登陆成功!”);
new BorderLayoutFrame();// 创建新窗口
}
else{
JOptionPane.showConfirmDialog(null, “用户名密码不正确!登陆失败!”);
}
}
}
class MyAction2 implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource()==btn2){
System.exit(0);
}
}
}
事件处理常用的:
窗口 windowsListener
鼠标MouseListener
键盘 KeyListener
4.事件适配器
鼠标事件
键盘事件
6.菜单栏 工具栏 表格 水果超市管理系统
第九章 JDBC (Java数据库连接)
mysql> use student;
Database changed
mysql> show tables;
±------------------+
| Tables_in_student |
±------------------+
| s1 |
±------------------+
1 row in set (0.01 sec)
mysql> select * from s1;
±—±-------±---------±----------------±-----------+
| id | name | password | email | brithday |
±—±-------±---------±----------------±-----------+
| 1 | zs | 123456 | zs@sina.com | 1980-12-04 |
| 2 | lisi | 123456 | lisi@sina.com | 1981-12-04 |
| 3 | wangwu | 123456 | wangwu@sina.com | 1979-12-04 |
±—±-------±---------±----------------±-----------+
3 rows in set (0.00 sec)
mysql> describe s1;
±---------±------------±-----±----±--------±------+
| Field | Type | Null | Key | Default | Extra |
±---------±------------±-----±----±--------±------+
| id | int(11) | NO | PRI | NULL | |
| name | varchar(40) | YES | | NULL | |
| password | varchar(40) | YES | | NULL | |
| email | varchar(60) | YES | | NULL | |
| brithday | date | YES | | NULL | |
±---------±------------±-----±----±--------±------+
5 rows in set (0.01 sec)
mysql> show databases;
±-------------------+
| Database |
±-------------------+
| information_schema |
| mysql |
| performance_schema |
| student |
| test |
±-------------------+
// 加载jdbc驱动 实现java程序mysql数据库的访问
//1、加载驱动
Class.forName(“com.mysql.jdbc.Driver”);
System.out.println(“驱动加载成功”);
// 2、建立数据库连接
String url=“jdbc:mysql://localhost:3306/student”;
String user=“root”;
String password=“225728”;
Connection conn= DriverManager.getConnection(url,user, password);// 连接数据库
System.out.println(“数据库连接成功”);
// Connection conn= DriverManager.getConnection(“jdbc:mysql://localhost:3306/student”,“root”, “225728”);
//3、 访问数据库 增删改查的操作
String str=“select * from s1”;// 查询命令
Statement stme=conn.createStatement();// 利用 Statement由连接来发送命令
ResultSet rs=stme.executeQuery(str);// 执行查询命令 数据放在集合里面 接口集对象
// 访问 数据库元数据
ResultSetMetaData rsmd=rs.getMetaData(); // 元数据 获取数据库中的元数据
for(int i=1;i<=rsmd.getColumnCount();i++)// 获取列的数量
{
// 获取列的某一列的列名
System.out.print(rsmd.getColumnName(i)+"\t");
}
System.out.println();
//System.out.println(“id”+"\t\t"+“name”+"\t"+“password”+"\t"+“email”+"\t"+“brithday”);
while (rs.next()){
int id=rs.getInt(1);//(“id”);// 获得记录第一列记录
String name=rs.getString(2);
String email=rs.getString(3);
String pass=rs.getString(4);
String brithday=rs.getString(5);
System.out.println(id+"\t"+name+"\t"+email+"\t"+pass+"\t"+brithday);
}
rs.close();
stme.close();
conn.close();
DefaultTableModel tableModel=new DefaultTableModel(getData(), getcolumnNames());// 表格模型
table=new JTable(tableModel); // 借助表格模型创建表
sp.setViewportView(table);// 表格加到滚动面板上
table.setRowSorter(new TableRowSorter<>(tableModel));
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);// 设置表格为单行选中模式
table.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
super.mouseClicked(e);
int selectRow=table.getSelectedRow();
textField1.setText(tableModel.getValueAt(selectRow, 0).toString());
textField2.setText(tableModel.getValueAt(selectRow, 1).toString());
textField3.setText(tableModel.getValueAt(selectRow, 2).toString());
textField4.setText(tableModel.getValueAt(selectRow, 3).toString());
textField5.setText(tableModel.getValueAt(selectRow, 4).toString());
}
});
private Object getRows(ResultSet rs, ResultSetMetaData rsmd) {
Vector columnRows=new Vector();
try {
for(int i=0;i<=rsmd.getColumnCount();i++){
try {
columnRows.addElement(rs.getString(i));
} catch (SQLException e) {
e.printStackTrace();
}
}
} catch (SQLException e) {
e.printStackTrace();
}
return columnRows;
}