方法:是完特定功能的代码块;
/*方法(方法不能写在方法里面)
**特点:不调用不执行
**方法的格式
修饰符 返回值类型 方法名(参数类型1 参数1,参数类型2 参数2,...){
方法体;
return 返回值;
}
格式解释:
A:修饰符 目前记住public static
B:返回值类型 用于限定返回值的数据类型(基本数据类型,引用数据类型,无返回值类型void)
C:方法名 为了方便我们调用方法的名字
D:参数类型 用于限定调用方法时传入的数据的类型(基本数据类型,引用数据类型)
E:参数名 用于接收调用方法时传入的数据的变量
F:方法体 完成功能的代码
G:return 结束方法,并且把返回值带给调用者
参数列表: 就是方法定义上小括号里的全部
写一个方法有两个明确:
A:返回值类型 明确功能结果的数据类型
B:参数列表 明确有几个参数,以及参数的数据类型
方法的调用:(有明确返回值的)
格式:方法名(具体参数);
A:单独调用,没有意义(void修饰的方法只能单独调用,有终止方法的用途.但返回值为void类型时return可以写但后面不能写东西;)
B:输出调用,有意义,但是不够好,因为我可能需要拿结果进行进一步的操作
C:赋值调用,推荐方式
*/
/*1.写一个方法用于两位数求和
返回值类型----int
分析参数列表---参数类型---int
参数值-----x,y
//1.代码(赋值调用)
int v = 5;
int o = 6;
int a = sum(v,o);//
System.out.println(a);//如果为11
此方法应该写在main方法外,因整理写在这里
public static int sum(int x,int y){
int sum = x+y;
return sum;
}
//2.输出调用
System.out.println(getMax(19,23));//输出结果23
public static int getMax(int a, int b){
if(a>b){
return a;
}else{
return b;
}
}
//3.单独调用(比较大小)(void修饰的方法的调用)
Test(45,99);//在main中输
//方法体(此方法应该写在main方法外,因整理写在这里)
public static void Test(int a,int b){
if(a>b){
System.out.println(a+"大于"+b);
}else{
System.out.println(a+"小于"+b);
}
}
//4.通过方法求出1-100所有偶数的和(无参方式)
System.out.println(sum());
//方法体(此方法应该写在main方法外,因整理写在这里)
public static int sum(){
int sum = 0;
for(int i=1;i<=100;i++){
if (i%2==0) {
sum+=i;
}
}
return sum;
}
*/
/*方法参数的改变
方法的参数如果是基本数据类型:形式参数的改变不影响实际参数;(只是将基本数据在栈中赋值给调用的方法中的形式参数,所以改变的话只是改变调用的方法中的数据值,而原本的main方法中的数据值不会发生改变)
方法份的参数如果是引用数据类型:形式参数直接影响实际参数;(例如数组,只是将数组在堆中的地址之传递给方法,改变地址中的数据就是改变原来的数组)
形式参数:用于接收实际参数的变量
实际参数:实际参与运算的变量
//基本数据类型;
//代码(实参(值传递)数值只会在方法体总改变,但实参的真实值不会变化,形参不会影响实参。在main主方法中的为实参在方法体中的为形参)
int a = 23;
int b = 555;
System.out.println(a);//23
System.out.println(b);//555
System.out.println(xxx(a,b)); //6,方法体中的形参只改变了参与了运算但不影响实际参数,上面下面输出实际参数,可以看出未发生变化。
System.out.println(a);//23
System.out.println(b);//555
//方法体(此方法应该写在main方法外,因整理写在这里)
public static int xxx(int a,int b){
//a = 1;
//b = 5;
b+=a;
return b;
}
*/
//(数组)方法的参数如果是数组类型:形式参数的改变会影响实际参数。
/*
int[] arr = {1,2,3,4};
for(int i = 0; i<arr.length; i++){
System.out.print(arr[i]+" ");
}
System.out.println("--------------");//结果1,2,3,4
array(arr);//执行下面方法
System.out.println("--------------");
for(int i = 0; i<arr.length; i++){
System.out.print(arr[i]+" ");//结果1,4,3,8
}
//方法体
public static void array(int[] arr){
for(int i = 0; i<arr.length; i++){
if(arr[i]%2==0){
arr[i]=arr[i]*2;
}
}
System.out.println("我只执行了");
}
*/
}
}
方法的重载:在同一个类中,出现了方法名相同的情况。
特点:
A:方法名相同,参数列表不同。与返回值无关。
B:参数对应的数据类型不同。
//***不能出现方法名相同且参数列表相同的情况。
注意:在调用方方法的时候,java虚拟机会同过参数列表的不同来区分同名方法。
方法区:存放着class字节码文件,所以在方法去内会有
|
|