带参方法
无参方法:
public void show(){
System.out.println("姓名:"+name",密码"+password);
}
show() “()”里就是放的参数
“()”里放参数就指的是带参方法
带参方法:
实现功能需要条件,这个条件就需要通过参数来传递
定义、调用带参数的方法:
带参方法的注意事项
注意事项:
1)方法定义处的参数叫形式参数(形参),方法调用处传的值叫实际参数(实参)
2)带参方法,参数个数可以有一个,也可以有多个,多个参数之间用逗号隔开
3)带参方法,参数名字可以随意取,符合变量命名规则
4)形参和实参名字可以不一样,但是数据类型要一致,个数要一样,顺序要一样
方法有没有参数和方法有没有返回值,是两码事,毫无关系
常见错误:
调用方法不能指定实参啊类型
形参和实参数据类型要一致!数量也要一致!
参数类型
参数类型为基本数据类型:int char double boolean float
参数类型为引用数据类型,自定义数据类型 数组 接口
基本数据类型和引用数据类型在传参时的区别:
参数传递
1)基本数据类型,传递值
2)引用数据类型,传递引用
构造方法
构造方法的作用
无参构造方法,每个类都有个默认无参构造方法
构造方法:
访问修饰符 构造方法名(){
//初始化代码
}
自定义带参构造方法
此时系统不再提示默认无参构造方法
public Student(){}
public Student(String name,int age){
this.name=name;
this.age=age;
}
this关键字的用法
构造方法
作用∶对象初始化
1)每个类都有默认无参构造方法
2)可以自定义带参构造方法,此时系统不再提供默认无参构造方法
this
对一个对象的默认引用
方法重载
构造方法重载
1.方法名相同
2.参数项不同
3.与返回值、访问修饰符无关
public Student(){}
public Student(String name,int age){
this.name=name;
this.age=age;
}
方法重载(一个类中的多态表现)
1)同一个类中
2)方法名相同
3)参数个数或类型不同
4)与返回值、访问修饰符无关
成员变量和局部变量
变量声明的位置决定变量作用域
变量作用域确定可在程序中按变量名访问该变量的区域
成员变量和局部变量的区别:
作用域不同
局部变量的作用域仅限于定义它的方法
成员变量的作用域在整个类内部都是可见的
初始值不同
Java会给成员变量一个初始值
Java不会给局部变量赋予初始值
注意:
在同一个方法中,不允许有同名局部变量
在不同的方法中,可以有同名局部变量
在同一个类中,成员变量和局部变量同名时,局部变量具有更高的优先级
练习:
1.实现简易计算器,分别实现两个整数、三个浮点数的加法运算
//计算机类
public class Calculator {
public int add1(int num1, int num2) {
return num1 + num2;
}
public float add2(double num1, double num2, double num3) {
return (float) (num1 + num2 + num3);
}
}
//测试类
public class Calculator {
public int add1(int num1, int num2) {
return num1 + num2;
}
public float add2(double num1, double num2, double num3) {
return (float) (num1 + num2 + num3);
}
}
2.使用带参方法实现学员信息管理
1)根据学员姓名增加学员.
2)在保存了多个学生姓名的数组中,指定查找区间,查找某个学生姓名并显示是否查找成功
//信息管理类
public class StudentManger {
String[] stuName = new String[5];
Student[] score = new Student[5];
Scanner input = new Scanner(System.in);
public void addStudent(String name) {
for (int i = 0; i <= stuName.length;) {
if (stuName[i] == null) {
stuName[i] = name;
System.out.println("添加成功!");
i++;
}
break;
}
}
public boolean searchName(int start, int end, String name) {// 查找方法
boolean flag = false;
if (start >= 0 && end < stuName.length && start <= end) {
for (int i = start; i < end; i++) {
if (name.equals(stuName[i])) {
flag = true;
break;
}
}
}
return flag;
}
public void addScore(Student[] scores) {// 学员成绩
for (int j = 0; j < score.length; j++) {
if (scores[j].score < 60) {
scores[j].score += 2;
} else if (scores[j].score >= 99) {
scores[j].score = 100;
}
}
}
public void showScore(Student[] scores) {// 显示学生成绩
System.out.println("学员成绩:");
for (Student scoreList : scores) {
scoreList.showInfo();
}
}
}
//测试类
public class TestStu {
public static void main(String[] args) {
StudentManger stuMan = new StudentManger();
Scanner input = new Scanner(System.in);
for (int i = 0; i < stuMan.stuName.length; i++) {
System.out.println("请输入第" + (i + 1) + "个同学的名字:");
String name = input.next();
stuMan.addStudent(name);
}
System.out.print("请输入你要查找的名字:");
String names = input.next();
boolean flag = stuMan.searchName(0, 2, names);
if (flag) {
System.out.println("该学生名字存在!");
} else {
System.out.println("没有查到该同学名字");
}
input.close();
}
}