Java-方法
学习视频:B站 狂神说Java – https://www.bilibili.com/video/BV12J41137hu?p=1
学习资料:Java 菜鸟教程 – https://www.runoob.com/java/java-tutorial.html
1、方法是什么
System.out.println(),这个输出代码语句中,包含了:
- println() 是一个方法。
- System 是系统类。
- out 是标准输出对象。
这句话的用法是调用系统类 System 中的标准输出对象 out 中的方法 println()。
那么什么是方法呢?
Java方法是语句的集合,它们在一起执行一个功能。
- 方法是解决一类问题的步骤的有序组合
- 方法包含于类或对象中。
- 方法在程序中被创建,在其他地方被引用
方法的优点
不用再去敲重复的代码,这样能够提高程序开发的效率, 增加了代码的重用性,有利于程序维护;使程序变得更加简短和清晰。
方法的命名规则:遵循小驼峰的方法。方法的名字的第一个单词应以小写字母作为开头,后面的单词则用大写字母开头写,不使用连接符。例如:addPerson。
创建一个方法:
注意:
- 一个类里面只能有一个 main() 函数。 类对象 即 class Demo01的名字必须要和文件名一致。
- 方法名使用 小驼峰规则
例子:自己构建一个加法的 方法; 创建一个没有返回值的方法, void表示此方法没有返回值。
public class Demo01 {
//main方法
public static void main(String[] args) {
//下方add中的就是实际参数。 实际调用时传递给他的参数
int sum = add(1, 2);
System.out.println(sum);
test();
}
// 自定义的加法 方法
// 此时的 a b就是形式参数, 是用来定义作用的
public static int add(int a, int b){
return a + b;
}
//新建一个没有返回值的 test 方法
public static void test(){
for (int i = 0; i < 100; i++) {
if (i%5 == 0){
//System.out.println(i+"\t"); //println会自动换行
System.out.print(i+"\t");
}
if (i%(5*3) == 0){ //每行3个
//System.out.println();
System.out.println("\n");
}
}
}
}
2、方法的定义和调用
2.1、方法的定义
一般情况下,定义一个方法包含以下语法:
修饰符 返回值类型 方法名(参数类型 参数名){
...
方法体
...
return 返回值;
}
方法包含一个方法头和一个方法体。下面是一个方法的所有部分:
-
修饰符:修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。
-
返回值类型 :方法可能会返回值。returnValueType 是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,returnValueType 是关键字void。
-
方法名:是方法的实际名称。方法名和参数表共同构成方法签名。
-
参数类型:参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。
-
方法体:方法体包含具体的语句,定义该方法的功能。
返回值类型:如果没有返回值,一般使用void。return和返回值类型要对应起来。即没有返回值,那就是使用 void关键字,且没有return。
return:在方法中,遇到return 会直接结束这个方法。所以,一般想要返回某个值,应该在最后进行返回。
例子:
public class Demo02 {
public static void main(String[] args) {
// 定义一个result,去引用方法 max
int result = max(2, 2);
System.out.println(result);
}
// 定义大小的方法
public static int max(int num1, int num2){
int result = 0; // 局部变量,必须定义初值
if (num1 == num2){
System.out.println("num1 == num2");
return 0; //终止方法
//只要出现了return,且这句代码被执行,则这个方法会直接被终止
}
if (num1>num2){
result = num1;
}else{
result = num2;
}
return result;
}
}
2.2、方法调用
调用方法: 对象名.方法名(实参列表)
Java支持两种调用方法, 根据方法是否有返回值 即 有无void 去选择调用方式:
-
当有void,方法会返回一个值时,方法调用一般会作为一个常量的值,如:
int larger = max(30, 40);
-
如果方法返回值为 void, 则方法调用一般就是一条语句。如:
System.out.println("欢迎来到英雄联盟");
java都是值传递。通过值传递参数。
3、方法的重载
在2.1中自己定义的 max() 方法只是适用于 int 型的数据。 如果我们想要比较两个浮点型的数据的最大值,采用的方法是 创建另一个相同名字但参数不同的方法,如下面代码所示:
public static double max(double num1, double num2) {
if (num1 > num2)
return num1;
else
return num2;
}
那么在使用 max() 方法的时候, 如果你传递的参数是 int 型,则int型参数的 max方法就会被调用;
传递的是double型参数,则double类型的max方法体会被调用,这叫做方法重载。
方法重载的规则:
- 方法名必须一样
- 参数列表必须不一样(可以是个数不同;或者类型不同;参数排列顺序不同等)
- 方法的返回类型可以相同,也可以不相同
- 只有返回类型不同,不能够成为方法的重载
方法名称一样的时候, 编译器会根据调用方法中的 参数 实际情形 去逐个匹配,选择对应的方法。
例子:
public class Demo03 {
public static void main(String[] args) {
//方法的重载
double result = max(2, 2);
System.out.println("################");
//int result = max(2, 2);
System.out.println(result);
}
// 定义大小的方法
public static double max(double num1, double num2) {
double result = 0; // 局部变量,必须定义初值
if (num1 == num2) {
System.out.println("num1 == num2");
return 0;
}
if (num1 > num2) {
result = num1;
} else {
result = num2;
}
return result;
}
// 定义大小的方法
public static int max(int num1, int num2) {
int result = 0; // 局部变量,必须定义初值
if (num1 == num2) {
System.out.println("num1 == num2");
return 0; //终止方法
//只要出现了return,且这句代码被执行,则这个方法会直接被终止
}
if (num1 > num2) {
result = num1;
} else {
result = num2;
}
return result;
}
}
4、构造方法
每个类都有构造方法。如果没有显式地为类定义构造方法,Java 编译器将会为该类提供一个默认构造方法。
默认构造方法的访问修饰符和类的访问修饰符相同(类为 public,构造函数也为 public;类改为 protected,构造函数也改为 protected)。
一旦你定义了自己的构造方法,默认构造方法就会失效。
在创建一个对象的时候,至少要调用一个构造方法。构造方法的名称必须与类同名,一个类可以有多个构造方法。
下面是一个构造方法示例:
public class Puppy{
public Puppy(){
}
public Puppy(String name){
// 这个构造器仅有一个参数:name
}
}
构造方法与一般方法在运行上的不同:
- 构造方法:构造方法在创建的时候就给对象初始化;一个对象建立构造方法只能运行一次;
- 一般方法:一般方法是对象调用才执行,给对象添加对象具备的功能;一般方法可以被对象多次调用;