package JAVA_BASIC;
import java.util.Scanner;
public class A_5_method {
/*
方法:将具有独立功能的代码块组织成为一个整体,使之具有特殊功能的代码集。
方法定义:方法必须创建才能使用;
方法调用:方法创建后不是直接运行的,需要手动使用后才能执行。
*/
/*方法定义:
public static void isEvenNumber() {
}
方法调用:
isEvenNumber();在main方法中调用。
方法必须先定义后调用,否则程序将报错。
*/
/*
带参数方法定义
public static void isEvenNumber(数据类型 变量名){ }
public static void isEvenNumber(数据类型 变量名,数据类型 变量名,...){ }
*/
/*
实参:方法调用中的参数,main中使用的参数;
形参:方法定义中的参数,定义的方法中的参数。
带返回值
return 数据;
public static float isEvenNumber(int number){ }
float处什么类型就返回什么类型。
调用(用于返回值接收):
float f = isEvenNumber(5);//接收变量类型也得是该类型的。
*/
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);//main方法中写这句管不到其他方法
boolean answer1 = isEvenNumber(10);//常量调用
System.out.println(answer1);
int number = sc.nextInt();
isEvenNumber(number);//变量调用
System.out.println("-------------------");
int number1 = 1;
System.out.println(number1);
change(number1);//栈内存中两个方法是分开的,只是这个调用方法中的值改变了,方法调用完就从栈内存中消失,main()方法中的变量的值和原来值一样
System.out.println(number1);//输出还是1
System.out.println("-------------------");
int[] arr = {11,15,16};//左边在栈内存,右边在堆内存
System.out.println(arr[1]);//输出堆内存中的值15
change1(arr);//改变堆内存中数组元素的值
System.out.println(arr[1]);//输出为20,对引用类型的参数,形式参数的改变,影响实际参数的值
System.out.println("-------------------");
output(arr);//注意这里写的是arr整个数组,而不是arr[i]
System.out.println();
System.out.println("-------------------");
int number2 = 4;
int answer2=getMax(number1,number2);
System.out.println(answer2);
//System.out.println(getMax(number1,number2));
System.out.println("-------------------");
System.out.println("int:"+compare(10,20));
System.out.println("byte:"+compare((byte)10,(byte)10));
System.out.println("-------------------");
//int a = 3; 00000000 00000000 00000000 00000011(4个字节,32位);
//转换为byte:00000011(1个字节,前面24位被截断)。
//System.out.println("int:"+compare(10L,20L));//long类型
//负数的二进制:绝对值先转换为二进制,所有位取反,加1.
}
public static void change(int number1){
number1 = 20;//改变形参中的number1的值,不改变实参number1的值
//存储在栈内存中,调用方法执行完毕后,从栈内存消失
}
public static void change1(int[] arr){
arr[1] = 20;//改变形参中的arr[1]的值,改变实参arr[1]的值,在堆内存中修改
//存储在栈内存中,调用方法执行完毕后,从栈内存消失
}
public static boolean isEvenNumber(int number){//方法定义
// int number=10;
if(number%2==0){
System.out.println("This is an even number.");
return true;
}else{
System.out.println("This is not an even number.");
return false;
}
}
public static int getMax(int number1,int number2){
// int number1=10;
// int number2=10;
// Scanner sc = new Scanner(System.in);
// int number1 = sc.nextInt();
// int number2 = sc.nextInt();
int max = Math.max(number1,number2);
//System.out.println(max);
return max;
}
/*
方法注意事项:
方法不能嵌套定义;
void表示无返回值,可以省略return,也可以单独书写return,后面不加数据(return;表示方法到此结束,不执行下面的代码);
*/
/*
方法的通用格式:
public static 返回值类型 方法名(参数){
方法体;
return 数据;
}
public static:修饰符,目前先记住这个格式;
返回值类型:方法操作完毕之后返回的数据的数据类型,如果方法操作完毕,
没有数据返回,这里写void,而且方法体中一般不写return;
方法名:调用方法时候使用的标识;
参数:由数据类型和变量名组成,多个参数之间用逗号隔开;
方法体:完成功能的代码块;
return:如果方法操作完毕,有数据返回,用于把数据返回给调用者。
*/
/*
方法重载:同一类中定义的多个方法之间的关系,需满足以下条件:
1、多个方法在同一个类中;
2、多个方法具有相同的方法名;
3、多个方法的参数不相同,类型不同(参数类型,不是返回值类型)或者数量不同。
重载仅对应方法的定义,与方法的调用无关,调用方式参照标准格式;
针对同一类中方法的名称与参数进行识别,与返回值无关,不能通过返回值来判断两个方法是否构成重载;
在调用时,java虚拟机会通过参数的不同来区分同名的方法。
*/
public static boolean compare(int a,int b){
return a==b;
}
public static boolean compare(byte a,byte b){
return a==b;
}
/*
System.out.println("内容”);输出内容并换行
System.out.print("内容”);输出内容不换行
System.out.println();起换行作用
*/
public static void output(int[] arr){
for(int k=0;k<3;k++){
System.out.print(arr[k]+" ");
}
}
}
JAVA入门(第5篇)——方法
于 2024-01-03 11:44:09 首次发布