方法之间允许互相调用,不需要知道方法的具体实现,实现重用,提高效率
如:
package cn.bdqn.demo01;
public class Student {
//定义方法a
public void a(){
System.out.println("我是方法a");
}
//定义方法b
public void b(){
System.out.println("我是方法b");
a();//可以直接调用
}
}
但是不在一个类中不可以直接调用
如 package cn.bdqn.demo01;
public class Teacher {
//定义一个c
public void c(){
System.out.println("我是方法c");
/*a();*///不能直接调用student类中的a方法,要想使用需要使用Student创建对象
Student num =new Student();
num.a();
}
}
方法调用综合例题
1.package cn.bdqn.demo01;
public class Tourist {
//一个景区根据游人的年龄收取不同价格的门票。请编写游人类,
// 根据年龄段决定能够购买的门票价格并输出
//定义类的属性
String name;
int age;
//定义方法
public void payMoney (int age){
if(age>60||age<18){
System.out.println(name+"年龄为:"+age+"门票免费");
}else{
System.out.println(name+"年龄为:"+"门票价格为20美金");
}
}
测试类: public static void main(String[] args) {
// 创建Scanner对象
Scanner sc = new Scanner(System.in);
String name;
do {
System.out.println("请输入姓名:");
name = sc.next();
if(name.equals("n")){
break;
}
System.out.println("年龄:");
int age =sc.nextInt();
//创建Tourist的对象
Tourist vio = new Tourist();
vio.name=name;
vio.age=age;
vio.payMoney(age);
}while(!name.equals("n"));
System.out.println("程序退出");
}
}
总结
类和对象的关系:
类是抽象的,对象则是具体的
类是由相同属性 和方法的多个对象的合集
对象是有属性和方法组成的,类是模板,对象可以在类中调用方法和具体的属性
如何定义类
访问权限修饰符 属性(数据类型) 属性名 (变量名);
创建对象
属性(数据类型) 属性名 (变量名)= new 属性();
如何定义方法及调用方法
访问权限修饰符 返回值类型 方法名(参数列表){方法体}
调用:对象名.方法名
方法与方法重载
访问权限修饰符 返回值类型 方法名(参数列表){方法体}
调用:对象名.方法名(参数列表)
综合例题:
增加学员姓名在保存了多个学生姓名的数组中,指定查找区间,查找某个学生姓名并显示是否查找成功
//定义属性
String name;
int age;
//定义方法
public static boolean print(int startIndex,int endIndex,String name,Student[] student){
for (int i = startIndex; i <= endIndex; i++) {
int count=0;
if(name.equals(student[i].name)){
return true;
}else{
count++;
if(count==endIndex-startIndex+1){
return false;
}
}
}
return false;
}
//测试类
public static void main(String[] args) {
/*
* 增加学员姓名
* 在保存了多个学生姓名的数组中,指定查找区间,查找某个学生姓名并显示是否查找成功
*/
//定义五个Student类的对象
Student stu1 =new Student();
stu1.age=20;
stu1.name="小玉";
Student stu2 =new Student();
stu2.age=20;
stu2.name="小王";
Student stu3 =new Student();
stu3.age=20;
stu3.name="小孙";
Student stu4 =new Student();
stu4.age=20;
stu4.name="小张";
Student stu5 =new Student();
stu5.age=20;
stu5.name="小李";
//定义一个数组来存储学生
Student[] stus ={stu1,stu2,stu3,stu4,stu5};
//指定查找区间,查找某个学生姓名并显示是否查找成功
//创建一个scanner的类(没有调用方法之前的常规办法)
/*Scanner sc =new Scanner(System.in);
int count=0;
System.out.println("请输入查找开始区间:");
int startIndex=sc.nextInt();
System.out.println("请输入结束区间:");
int endIndex = sc.nextInt();
System.out.println("请输入查找姓名:");
String name=sc.next();*/
/* for (int i = startIndex; i <= endIndex; i++) {
if(name.equals(stus[i].name)){
System.out.println("姓名在此区间");
}else {
count++;
if(count==endIndex-startIndex+1){
System.out.println("姓名不在此区间");
}
}
}*/(用过方法之后的操作)
boolean bool= Student.print(1, 4, "小史", stus);
System.out.println(bool);
}
}
常见错误:
1)调用方法时不能实参实参类型
2)形参和实参数据类型不一致!数量也要一致
基本类型和引用数据类型在传参的区别:
基本数据类型传的参数是变量的值,改变一个变量的值是不会影响另一个变量的值。引用数据类型(类,数组,接口),赋值是把原对象的引用(可以理解为内存地址)传给另外一个引用