1.定义带参方法
//定义带参输的方法
访问修饰符 返回值类型 方法名(参数列表1,参数列表2,参数列表3.....){
//方法体
}
注意:参数列表也是形参(形式上的参数),可以有多个,必须指定参数类型。
2,方法调用:
实际参数:实参,不能指定参数类型,必须和形参顺序,个数,类型保持一致。
//学员类
public class Student{
//属性
public String name;
public int age;
public String address;
//带参方法
public void show(String name,int age,String address){ //实参
System.out.println("姓名:"+name+"年龄:"+age+"地址:"+address);
}
}
//测试类
public class Test{
public static void main(String [] args){
Student stu=new Student(); //创建对象
stu.show("张三",20,"深圳"); //调用方法,并传实参
//注意:这里传的实参和Student类的形参个数,类型,要保持一致!
}
}
3.构造方法重载:
作用:初始化对象,在创建对象时被调用。
要求:在同一个类中,方法名与类型一致,没有返回值类型,与访问修饰符无关。
构造方法重载:方法名相同,参数列表不同,与访问修饰符无关。
//学员类
public class Student{
//属性
public String name;
public int age;
public String address;
//带参方法
public void show(String name,int age,String address){ //实参
System.out.println("姓名:"+name+"年龄:"+age+"地址:"+address);
}
//构造方法重载(无参构造)
public Student(){
System.out.println("我是无参构造方法重载!");
}
//带参构造方法重载
public Student(String name, int age, String address){
System.out.println("我是带参构造方法重载!");
}
//测试类
public class Test{
public static void main(String [] args){
Student stu=new Student(); //创建对象
注意:这里默认加载的是无参构造方法
}
}
4方法重载
- 基本数据类型传参:传递的是副本,相当于拷贝一份,其实际的值不会改变。
- 引用数据类型传参(String除外):传递的是引用,相当于共享文件,其中一个人修改之后,其他人看到是修改后的文件。
概念:一个类中定义多个同名的方法,但要求但要求每个方法具有不同的参数类型和参数个数。
要求:方法名相同,参数列表不同(类型或者个数不同),在同一个类中,与方法返回值,访问修饰符无关。
//学员类
public class Student{
//属性
public String name;
public int age;
public String address;
//无参数的构造方法,方法重载
public void show(){
System.out.println("编号为1的学生姓名是:"+this.name);
}
//带参数的构造方法
public void show(int age){
System.out.println("李四的是:"+age);
}
}
//测试类
public class Test{
public static void main(String [] args){
Student stu=new Student(); //创建对象
stu.name="张三"; //为属性赋值
stu.show(); //这个方法调用是无参构造
stu.show(18); //这个方法调用的是有参构造
方法重载特点:方法重载是对原有的方法升级,可以根据参数的不同,采用不同的实现方法,
可以不需要编写多个名称,简化了类调用方法的代码!
}
}
5.对象数组
定义:数组中的元素是对象类型
//学员类
public class Student {
public String name;
public int age;
public String address;
}
//学员管理类
public class StudentBiz {
Student stu[]=new Student[5]; //创建对象数组
/**
* 添加学员对象信息
*/
public void addStudnetName(Student name) {
int index=-1;
//找下标
for (int i = 0; i < stu.length; i++) {
if(stu[i]==null) { //找到空的位置,添加学员
index=i;
break;
}
}
//判断是否找到
if(index!=-1) {
stu[index]=name; //添加学员
}else {
System.out.println("班级已满!");
}
}
/**
* 显示学员信息
*/
public void showInfo() {
//循环显示信息
for (int i = 0; i < stu.length; i++) {
if(stu[i]!=null) { //判断是否添加成功
System.out.println("姓名:"+stu[i].name+",年龄:"+stu[i].age+",地
址:"+stu[i].address);
}
}
}
}
//测试类
public class Test {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
StudentBiz biz=new StudentBiz(); //创建学员管理类的对象
//for循环输出要添加的学员信息
for (int i = 0; i < 2; i++) {
Student stu=new Student(); //创建学员类
System.out.print("请输入姓名:");
stu.name=input.next(); //使用对象接收
System.out.print("请输入年龄:");
stu.age=input.nextInt();
System.out.print("请输入地址:");
stu.address=input.next();
//调用添加方法,传过去的是一个对象
biz.addStudnetName(stu);
}
//调用打印信息方法
biz.showInfo();
}
}
6.this关键字
-
表示当前对象的引用
-
区分成员变量和局部变量的命名问题
-
调用属性
-
调用方法
-
调用构造方法
//人类
public class Person{
//属性
public String name;
public int age;
//带参构造
public Person(String name){
this.name=name; //this指当前对象的成员变量
}
}
7.成员变量与局部变量的区别:
-
位置:成员变量在方法外,类里面;局部变量在方法/代码块中。
-
作用域:成员变量作用域更广,整个类都可以使用;局部变量仅在该方法/代码块中使用。
-
优先级:局部变量具有更高的优先级。
-
初始值:成员变量有初始值,可以不赋值就直接使用;局部变量必须赋值后才能使用。
//操作类
public class Operation{
//成员变量,定义在类里面
public String add;
public int num;
//显示方法
public void show(){
int sum=0; //局部变量,定义在方法里面的变量
}
}