Java基础学习笔记7——方法
目录
1、方法概述
方法(method)是将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集。
- 方法必须先创建才可以使用,该过程称为方法定义。
- 方法创建后并不是直接运行的,需要手动使用后才执行,该过程称为方法调用。
2、方法的定义和调用
方法在类中进行定义,在main函数中进行调用。
- 形参:方法定义中的参数;
- 实参:方法调用中的参数。
不带参数的方法定义格式:
public static void 方法名(){
//方法体
}
不带参数的方法调用格式:
方法名();
带参数的方法定义格式:
public static void 方法名(数据类型 变量名1,数据类型 变量名2,...){
//方法体
}
带参数的方法调用格式:
方法名(变量名1,变量名2,...); //变量也可以用常量代替
带返回值的方法定义格式:
public static 数据类型 方法名(数据类型 变量名1,数据类型 变量名2,...){
//方法体
return 数据; //数据的类型与方法定义的返回类型相同
}
带返回值的方法调用格式:
数据类型 变量名 = 方法名(变量名1,变量名2,...); //变量也可以用常量代替
3、方法的注意事项
- 方法不能嵌套定义;
- void表示无返回值,可以省略return,也可以单独的书写return,后面不加数据(return 之后的代码段将不会执行);
4、方法重载
4.1、方法重载的定义
方法重载指同一个类中定义的多个方法之间的关系,满足下列条件的多个方法相互构成重载:
- 多个方法在同一个类中;
- 多个方法具有相同的方法名;
- 多个方法的参数不同(参数类型不同或者参数数量不同)。
4.2、方法重载的特点
- 重载仅对应方法的定义,与方法的调用无关,调用方式参照标准格式;
- 重载仅针对同一个类中方法的名称与参数进行识别,与返回值无关,换句话说不能通过返回值来判定两个方法是否相互构成重载。在调用的时候,Java虚拟机通过参数的不同来区分同名的方法。
5、方法的参数传递
5.1、方法参数传递(基本类型)
对于基本数据类型的参数,形式参数的改变,不影响实际参数的值。
package myPackage;
public class Demo {
public static void main(String[] args) {
//打印改变前n的值
int n = 0;
System.out.println("n=" + n);
//调用函数并打印调用后n的值
change(n);
System.out.println("n=" + n);
}
public static void change(int n){
n = 1;
}
}
5.2、方法参数传递(引用类型)
对于引用类型的参数(如数组为引用类型),形式参数的改变,影响实际参数的值。
package myPackage;
public class Demo {
public static void main(String[] args) {
//打印改变前arr[]的值
int[] arr = {0, 0};
System.out.println("arr = [" + arr[0] + ", " + arr[1] + ']');
//调用函数并打印调用后arr的值
change(arr);
System.out.println("arr = [" + arr[0] + ", " + arr[1] + ']');
}
public static void change(int[] arr){
arr[0] = 1; arr[1] = 1;
}
}
6、构造方法
构造方法是一种特殊的方法。构造方法的作用是创建对象过程中完成对象数据的初始化。
构造方法的格式:
public class 类名{
//构造方法
修饰符 类名(参数){ //如:public Student(){}
//构造方法内书写的内容
}
}
构造方法的注意事项:
- 构造方法的创建:如果没有定义构造方法,系统将给出一个默认的无参数构造方法;如果定义了构造方法,系统将不再提供默认的构造方法。
- 构造方法的重载:如果自定义了带参构造方法,还要使用无参数构造方法,就必须再写一个无参数构造方法。
推荐的使用方式:无参数构造方法无论是否使用也手工书写出来。
代码实例(含有构造方法重载):
package myPackage;
public class Student{
//成员变量
private String name; //学生姓名
private int score; //学生分数
//构造方法
public Student(String name){
this.name = name;
}
public Student(int score){
this.score = score;
}
//成员方法
public void introduce(){ //自我介绍
System.out.println("我是"+this.name+
",本次考试分数为:"+this.score);
}
}
package myPackage;
public class test {
public static void main(String[] args) {
Student stu1 = new Student("张三");
Student stu2 = new Student(60);
stu1.introduce();
stu2.introduce();
}
}