方法与方法重载
一、方法的参数传递
1.定义带参数的方法
<访问修饰符> 返回类型 <方法名>(<形式参数列表>){
//方法的主体
}
2.调用带参数的方法
对象名.方法名(参数1,参数2,......,参数n)
3.传递参数时:
如果参数类型时基本数据类型,传递的是值。
如果参数类型时引用数据类型,传递的是地址。
4.基本数据类型和引用数据类型数据在传参时区别
基本数据类型,操作传递的是变量的值,改变一个变量的值不会影响另一个变量的值。引用数据类型(类、数组和接口),赋值是把原对象的引用(可理解为内存地址)传递给另一个引用。
5.带多个参数的方法的案例
输出指定杯数的果汁
public class Machine {
public void zha(String fruit){
System.out.println(fruit+"汁");
}
public void zha(String fruit,int cup){
System.out.println(cup+"杯"+fruit+"汁");
}
public void zha(String fruit,int cup,boolean isRun){
if(isRun){
System.out.println(cup+"杯"+fruit+"汁");
}
}
public static void main(String[] args) {
Machine m=new Machine();
m.zha("苹果",3,true);
}
}
实现学员信息管理
需求:增加学员姓名,在保存了多个学生姓名的数组中,指定查找区间,查找某个学生姓名并显示是否查找成功。
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.构造方法重载
自定义构造方法:
方法名相同
参数项不同
与返回值、访问修饰符无关
(1)系统默认提供无参构造方法
(2)当类中定义了构造方法,原先系统默认提供无参构造方法不再提供
(3)构造方法的结构:
public 类名(){}//默认无参构造方法的结构
public 类名(参数列表){
一般来说,有参构造中的代码主要目的是为了给类中的属性赋值
}
this关键字:
this代表本类
this.属性名:可以指定当前类的属性(局部变量和属性名相同时)
this.方法名():等于与方法名()
this():构造器,必须出现在构造方法的第一行
成员变量和局部变量:
成员变量=属性
局部变量和成员变量同名时,在局部变量作用域内,局部变量优先级高
成员变量范围时全类
局部变量作用域只在结构体内
成员变量有初始值,局部变量没有初始值
方法重载:
同一个类中
方法名相同
参数列表不同
与返回值、访问修饰符无关