努力提高认知层次

时临孤岛图,拭目望蓬莱。 空山无人处,水流花自开。
正在加载My blog page站点
皓天舒白日,灵景耀神州。 列宅紫宫里,飞宇若云浮。 峨峨高门内,蔼蔼皆王侯。 自非攀龙客,何为歘来游。 被褐出阊阖,高步追许由。 振衣千仞冈,濯足万里流。

方法

方法的定义

方法就是一段可重复调用的代码段,例如:有某段长度约100行的代码,要在多个地方使用此段代码,如果在各个地方都重复编写此部分代码的话,则肯定会比较麻烦,而且此部分代码如果修改的话也比较困难,所以此时可以将此部分代码定义成一个方法,以供程序反复调用。方法名称后小括号里的参数叫形参。传递的值叫实参,接收的值叫形参。

 

方法的定义格式:

public static 返回值类型 方法名称(类型 参数1,类型 参数2,…){

方法的主体

程序语句

[return 表达式]

}

在本节中定义的方法,因为其可以直接使用主方法(main())调用,所以将方法声明处加上了public static两个关键字

 

定义一个方法,在主方法中进行调用

public class MethodDemo01 {

public static void main(String[] args) {

printInfo() ; // 调用printInfo()方法

printInfo() ; // 调用printInfo()方法

printInfo() ; // 调用printInfo()方法

System.out.println("Hello World!") ;

}

// 此处由于此方法是由main方法直接调用所以一定要加上public static

public static void printInfo() { // 此处方法没有返回值

char c[] = {'H','e','l','l','o',',','L','X','H'}; // 定义一个字符数组

for (int x = 0; x < c.length; x++) { // 循环输出

System.out.print(c[x]) ;

}

System.out.println("") ; // 换行

}

}

有返回值的方法

public class MethodDemo02 {

public static void main(String[] args) {

int one = addOne(10, 20); // 调用整数的加法操作

float two = addTwo(10.3f, 13.3f); // 调用浮点数的加法操作

System.out.println("addOne的计算结果:" + one) ;

System.out.println("addTwo的计算结果:" + two) ;

}

// 定义方法,完成两个整数的加法操作,方法返回一个int型数据

public static int addOne(int x, int y) {

int temp = 0; // temp为局部变量,只在此方法中有效

temp = x + y; // 执行加法计算

return temp; // 返回计算结果

}

// 定义方法,完成两个浮点数的加法操作,方法返回一个float型数据

public static float addTwo(float x, float y) {

float temp = 0; // temp为局部变量,只在此方法中有效

temp = x + y; // 执行加法计算

return temp; // 返回计算结果

}

}

//要想没有返回值需要在定义方法时定义void类型,方法的使用是通过方法名加参数的形式调用,调用时方法名后传入的值称为实参。

 

 

 

方法的重载

 

方法的重载就是方法名称相同,但参数的类型和参数的个数不同,通过传递参数的个数及类型不同以完成不同功能的方法调用。

public class MethodDemo03 {

public static void main(String[] args) {

int one = add(10, 20); // 调用有两个参数的整型加法

int two = add(10, 20, 30); // 调用有三个参数的整型加法

float three = add(10.3f, 13.3f); // 调用有两个参数的浮点型加法

System.out.println("add(int x, int y)的计算结果:" + one) ;

System.out.println("add(int x, int y, int z)的计算结果:" + two);

System.out.println("add(float x, float y)的计算结果:" + three);

}

public static int add(int x, int y) { // 定义add方法,完成两个整数相加

int temp = 0; // 定义局部变量

temp = x + y; // 执行加法计算

return temp; // 返回计算结果

}

public static int add(int x, int y, int z) { // 定义add方法,完成三个整数相加

int temp = 0; // 定义局部变量

temp = x + y + z; // 执行加法操作

return temp; // 返回计算结果

}

public static float add(float x, float y) { // 定义add方法,完成两个浮点数相加

float temp = 0; // 定义局部变量

temp = x + y; // 执行加法操作

return temp; // 返回计算结果

}

}

 

//方法的重载一定只是在参数上的类型或个数不同

 

方法的递归调用

递归调用是一种特殊的调用形式,是方法自己调用自己

 

package demo0301;

import java.util.Scanner;

public class Test4 {

public static void main(String[] args) {

Scanner in=new Scanner(System.in);

System.out.println("请输入从1-累加的值:");

int a=in.nextInt();

System.out.print("从1到"+a+"的累加值为:"+sum(a));

}

public static int sum(int num){

if(num==1) {

return 1;

}else {

return num+=sum(num-1);

}

 

}

}

//执行流程 输入一个数字100

调用sum方法100传递到形参num

判断num是否为1不是就累加num+num-1

是的话返回1 递归调用方法

 

100+sum(99)+sum(98)+......1

return 1sum(100)的累加

 

 

输入年月日计算是当年的第几天

package demo0301;

 

import java.util.Scanner;

 

/*

 * 输入年月日计算是当年的第几天

 */

public class Test5 {

public static void main(String[] args) {

Scanner in=new Scanner(System.in);

System.out.println("请输入年份:");

int n=in.nextInt();

System.out.println("请输入月份:");

int y=in.nextInt();

System.out.println("请输入日子:");

int r=in.nextInt();

System.out.println(n+"年"+y+"月"+r+"日在那一年中是第"+nyr(n,y,r)+"天!");

}

public static int nyr(int n,int y,int r) {

int sum=0;//累加天数变量

if((n%4==0&&n%100!=0)||n%400==0) {//判断是否为闰年

System.out.print(n+"是一个闰年!");

for(int i=1;i<y;i++) {

if(i==1||i==3||i==5||i==7||i==8||i==10||i==12) {

sum+=31;

}else if(i==2) {

sum+=29;

}else {

sum+=30;

}

}

sum=sum+r;

return sum;

}else {

System.out.print(n+"不是一个闰年!");

for(int i=1;i<y;i++) {

if(i==1||i==3||i==5||i==7||i==8||i==10||i==12) {

sum+=31;

}else if(i==2) {

sum+=28;

}else {

sum+=30;

}

}

sum=sum+r;

return sum;

}

}

}

 

1.当进行方法调用的时候,如果形参是基本数据类型,被调用的方法内部对形参的改变不影响实参。

 

2.当进行方法调用的时候,如果形参是引用数据类型,被调用的方法内部对形参的改变可以影响实参。

public static void main(String[] args) {

int a[]= {1,2,3,4,5};

increase(a);

System.out.println(a[0]);

}

public static void increase(int[] nums){

    nums[0]++;

    System.out.println(nums[0]);

}

输出结果: 2

2

3.字符串是个特殊情况。.当进行方法调用的时候,如果形参是字符串,被调用的方法内部对形参的改变不影响实参。字符串拼接过程中出现变量,会重新生成一个新的字符串,并且新的字符串在堆中。

 

 

 

posted on 2022-12-13 12:33  远枝  阅读(63)  评论(0编辑  收藏  举报