目录
1.方法的调用机制原理图
(类似于C语言中的函数调用)
2.访问修饰符
作用:控制方法的使用范围
访问控制修饰词 | 同类 | 同包 | 不同包中的子类 | 不同包中的非子类 |
private | T | F | F | F |
default(默认的) | T | T | F | F |
protected | T | T | T | F |
public | T | T | T | T |
3.返回类型
- 一个方法最多有一个返回值,可以在方法中使用数组返回多个结果。
- 返回类型可以为任意类型,包含基本类型或引用类型(数组,对象)
- 如果方法要求有返回数据类型,则方法体中最后的执行语句必须为return值;而且要求返回值类型必须和return的值类型一致或兼容(可以强制转换)。
- 如果方法是void,则方法体中可以没有return语句或者只写return ;。
import java.util.*;
public class main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Profit today =new Profit();
int[] infoArr=today.Getinfo(900,200);
System.out.println("today's profit is "+infoArr[0]);
System.out.println("today's flow is "+infoArr[1]);
}
}
class Profit {
public int income;
public int cost;
public Profit() {
this.income=income;
this.cost=cost;
}
//在方法中借用数组返回多个数据
public int[] Getinfo(int income, int cost) {
int[] Arr=new int[2];
Arr[0]=income-cost;
Arr[1]=income+cost;
//返回类型可以是基本类型或者引用类型(数组,对象)
return Arr;
}
}
4.形参列表
- 一个方法可以有0个参数,也可以有多个参数,中间用逗号隔开
- 参数类型可以为任意类型,包含基本类型或引用类型(数组或者对象)
- 调用带参数的方法时,一定对应着参数列表传入相同类型或兼容类型的参数
方法定义时的参数称为形式参数,简称形参;方法调用时的传入参数称为实际参数,简称实参。形参和实参的类型要一致或兼容、个数、顺序必须一致!
5.方法体
方法体里面写完成功能的具体的语句,可以为输入、输出、变量、运算、分支、循环、方法调用,但里面不能再定义方法,即:方法不能嵌套定义。
6.方法调用
- 同一个类中的方法调用:直接调用即可。
- 跨类中的方法A类调用B类:需要通过对象名调用。比如:对象名.方法名(参数);
- 特别说明:跨类的方法调用和方法的访问修饰符相关(暂时提一下,后续还会详讲)
package hhhh;
import java.util.*;
import java.sql.*;
import javax.swing.*;
import javax.swing.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class TestLogin{
public static void main(String[] args){
UserLogin c = new UserLogin();
c.connectDatabase();
c.init();
}
}
class UserLogin{
JFrame frame;
JLabel user;
JLabel command;
JTextField username;
JTextField password;
JButton login;
JButton register;
Connection connection=null;
Statement statement=null;
ResultSet resultSet=null;
String databaseFile="d:/数据用户.accdb";
String str,s;
void init(){
frame = new JFrame("用户登录");
user = new JLabel("用户");
command = new JLabel("口令");
username = new JTextField(10);
password = new JTextField(10);
login = new JButton("登录");
register = new JButton("注册");
JPanel panel = new JPanel();
JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();
panel.add(user); panel.add(username);
panel1.add(command); panel1.add(password);
panel2.add(login); panel2.add(register);
Box box = Box.createVerticalBox();
box.add(panel); box.add(panel1); box.add(panel2);
frame.add(box);
frame.setBounds(300,300,400,200);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
register.addActionListener((e)->{
String detail="(0,'username.getText()',' password.getText()','',0)";
try {statement=connection.createStatement();
int ok=statement.executeUpdate("insert into 心情日记用户信息 values"+detail);
resultSet=statement.executeQuery("select *from 心情日记用户信息");
}
catch(SQLException ei){
System.out.println("记录中的用户名的值不能重复"+ei);
}
});
login.addActionListener((e)->{
str = username.getText();
s = password.getText();
if(s.equals("")||str.equals("")){
JOptionPane.showMessageDialog(null,"用户或口令不能为空!",null,JOptionPane.INFORMATION_MESSAGE);
}else {
boolean flag = query(str, s);
if (flag == true) {
JOptionPane.showMessageDialog(null, "登录成功!", null, JOptionPane.INFORMATION_MESSAGE);
} else
{
JOptionPane.showMessageDialog(null, "用户或口令不正确!", null, JOptionPane.INFORMATION_MESSAGE);
username.setText("");
password.setText("");
}
}
});
}
void connectDatabase(){
try{ //加载驱动并连接数据库
Class.forName("com.hxtt.sql.access.AccessDriver");
connection = DriverManager.getConnection(
"jdbc:Access:///"+databaseFile);//建立数据库连接
}
catch(Exception e){
JOptionPane.showMessageDialog(null, "数据库连接失败!");
}
}
public boolean query(String userNumber,String userPassword){
boolean flag=false;
if(connection==null)
connectDatabase();
if(connection!=null){
try{
statement=connection.createStatement();
String sql="select * from 心情日记用户信息 where 用户名='";
sql+=userNumber+"' and 密码='"+userPassword+"'";
resultSet=statement.executeQuery(sql);
flag=resultSet.next();
resultSet.close();
statement.close();
}
catch(Exception e){
JOptionPane.showMessageDialog(null, "SQL语句语法错误!");
}
}
return flag;
}
}