方法与重载
一.定义带参数的方法
1.带参数方法的结构: 方括号代表可以不写
[访问修饰符] 返回值类型 方法名([形式参数列表]){
代码;
[return 返回值];
}
2.调用带参数的方法
对象名.方法名(实际参数1,实际参数2,…实际参数n)
3.参数:创建方法时,定义的参数叫形式参数(形参),调用方法时传入的参数叫实际参数(实参)
基本数据类型做参数时,不能出方法范围
引用数据类型做参数时,传递的是地址,可以影响方法外部
特殊:String做参数时,等同于基本数据类型
二.方法传参
如果参数类型时基本数据类型,传递的是值。
如果参数类型时引用数据类型,传递的是地址
基本数据类型,操作传递的是变量的值,改变一个变量的值不会影响另一个变量的值
引用数据类型(类,数组和接口),赋值是把原对象的引用(可理解为内存地址)传递给另一个引用
实现学员信息管理
需求:增加学员姓名,在保存了多个学生姓名的数组中,指定查找区间,查找某个学生姓名并显示是否查找成功
public class Students {
public String[] names=new String[5];
public void addName(String name){
int flag=0;
for (int i = 0; i < names.length; i++) {
if (null==names[i]){
names[i]=name;
System.out.println(name+"成功进班,学号为:"+(i+1));
flag++;
break;
}
}
if (flag==0){
System.out.println("当前班级已满,请下次一定!");
}
}
public void show(){
System.out.print("[");
for (int i = 0; i < names.length; i++) {
if (null==names[i]){
System.out.println("]");
break;
}else if (i==names.length-1){
System.out.print(names[i]+"]");
break;
}
System.out.print(names[i]+",");
}
}
public int search(String name,int start,int end){
if (name==null) return -names.length;
int num=-1;
if (start<0||end>=names.length||start>end){
return -1;
}
for (int i = start; i <= end; i++) {
if (name.equals(names[i])){
num=i;
}
}
return num;
}
}
public class TestStudents {
public static void main(String[] args) {
Students ss=new Students();
ss.addName("赵琪");
ss.addName("王哲");
ss.addName("黄哲");
ss.addName("王磊");
ss.addName("乔正超");
ss.addName("卢常帅");
ss.show();
String a="王哲";
int rst=ss.search(a,-1,4);
System.out.println(rst==-1?"未找到该学员":rst==-1*ss.names.length?"输入不能为空值":"在下标为"+rst+"位置找到学员"+a);
}
}
三.方法重载
1.定义:
指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数类型或参数个数.
2.方法重载的特点
*在同一个类中
*方法名相同
*参数的个数或类型不同
*方法的返回值不能作为判断方法之间是否构成重载的依据
四.构造方法
访问修饰符 构造方法名(){
//初始化代码
}
构造方法没有返回值
默认构造方法没有参数,因此参数列表可选
构造方法名与类名相同
示例:为Person类定义一个构造方法
关键代码:
public class Person{
String name;
public Person(){
this.name=“小明”;
}
}
五.构造方法的重载
自定义构造方法:
方法名相同
参数项不同
与返回值、访问修饰符无关
(1)系统默认提供无参构造方法
(2)当类中定义了构造方法,原先系统默认提供无参构造方法不再提供
(3)构造方法的结构:
public 类名(){}//默认无参构造方法的结构
public 类名(参数列表){
一般来说,有参构造中的代码主要目的是为了给类中的属性赋值
}
this关键字:
this代表本类
this.属性名:可以指定当前类的属性(局部变量和属性名相同时)
this.方法名():等于与方法名()
this():构造器,必须出现在构造方法的第一行
成员变量和局部变量:
成员变量=属性
局部变量和成员变量同名时,在局部变量作用域内,局部变量优先级高
成员变量范围时全类
局部变量作用域只在结构体内
成员变量有初始值,局部变量没有初始值
方法重载:
同一个类中
方法名相同
参数列表不同
与返回值、访问修饰符无关