JAVA基础学习笔记


实现应用 价值

系统实用性

第一章

检验环境

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;

​ }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值