方法
概念:
一种语法结构
好处:
减少重复代码的使用,使代码功能更加独立,一个方法对应一种功能;方便后期对其进行维护与修改
方法格式
无参无返回值型
定义格式:
public static void 方法名(){
}
调用方法:
在要使用方法的类中使用:方法名();
有参无返回值
定义格式:
public static void 方法名(数据类型 变量名 , 数据类型 变量名.... ){
}
调用格式:
方法名(值, 值...);
有参的优点:
可以接种类型的不同的值,提高代码的通用性
形参与实参:
形参:
写在方法的参数列表位置
如下:
public void swap(int a, int b) {
int temp = a;
a = b; // a,b就是形参
b = temp;
System.out.println("a:" + a + " b:" + b);
}
实参:
调用方法时,括号里面的数据
如下:
public static void main(String[] args) {
int num = 3;
printVal(num); //这里num是实参,调用方法名为printVal的方法
}
private static void printVal(int num) {
num = 5; //这里num就是形参
}
有参有返回值
定义格式:
public static 数据类型 方法名(数据类型 变量名 , 数据类型 变量名.... ){
return 值;
}
Tips:方法返回的数据类型决定了方法的定义类型,既return后的数据值是什么数据类型,则方法定义时就是什么数据类型
调用格式:
直接调用:
方法名(值,值....);
如下:
package Webcode;
import java.util.Random;
public class methodCode {
public static void main(String[] args) {
num();
}
public static int num() {
Random r = new Random();
int number = r.nextInt(1, 101);
System.out.println(number;
return number;
}
}
该代码串中主函数直接调用了num方法,然后输出了1-100的随记整数
赋值调用:
数据类型 变量名= 方法名(值, 值...);
如下:
package Webcode;
import java.util.Random;
public class methodCode {
public static void main(String[] args) {
int number =num();
System.out.println(number);
}
public static int num() {
Random r = new Random();
int number = r.nextInt(1, 101);
return number;
}
}
代码中在主函数中调用了num方法,使用了number去接受num方法返回的1-100的随机整数值,并将number输出
输出调用:
System.out.println(方法名(值, 值...));
如下:
package Webcode;
import java.util.Random;
public class methodCode {
public static void main(String[] args) {
System.out.println(num());
}
public static int num() {
Random r = new Random();
int number = r.nextInt(1, 101);
return number;
}
}
代码串中在主函数直接调用num方法后并将其返回的值输出
返回值的意义:
可以把自定义方法的结果返回给方法调用(main)的地方进行下一步使用
方法的注意事项:
注意事项:
-
方法不能被嵌套定义
-
方法的返回值类型如果是void , 可以写return,但是return后面不能写值
-
return 后面不能继续写代码
-
定义方法时,如果有返回值,需要考虑方法的完整性
下面方法定义正确的是: D
A、 public static void method1() {
public static void method2() {
}// 方法嵌套
}
B、 public static boolean method2(int a ) {
if(a % 2 == 0){
return true;
}else{
return false;
}// 使用了return,其后不能写代码
System.out.println("方法调用结束");
}
C、 public static boolean method3(int a) {
if(a > 10 ){
return true;
}else if(a < 10){
return false;
}
}// 使用if-else语句,但未考虑其中两个条件都未满足的情况
D、 public static void method4() {
}
方法重载:
概念:
同一个类,方法名字相同,参数列表不同(参数的个数不同 || 对应位置的参数类型不同)
特点
JVM会根据方法上面的参数,对应的调用方法;方法重载的时候,不用考虑返回值类型
好处:
方便调用
代码实现如下:
package Webcode;
public class methodCode01 {
public static void main(String[] args) {
//A.
method(5);
//B.
method(6.6);
//C.
method("a");
}
public static void method(int a){
System.out.println("test");
}
public static void method(double a){
System.out.println(999);
}
public static void method(String a){
System.out.println("您猜对了!");
}
}
//以下调用中能输出 您猜对了 (C)
方法的参数参数传递:
基本数据类型:
形参的改变,不会影响实参
引用数据类型:
形参的改变,会影响实参【String除外】
如:
public static void main(String[] args) {
int num = 3;
printVal(num); //这里num是实参,调用方法名为printVal的方法
System.out.println(num);// 此时num输出的值仍为3
int []arr = {0,2,3,4};
Changearr(arr);
System.out.println(Arrays.toString(arr));
}
private static void printVal(int num) {
num = 5; //这里num就是形参,因为是基本类型所以改变形参不会对主函数中的实参有影响
}
public static void Changearr(int []arr){
arr[0] = 1;// 这里arr[0]是形参,但数组为引用类型数据,所以改变它之后,若主函数调用该方法,则主函数中调用该方法的数组中索引为0的元素将改为1
}