java--函数与方法
一.方法
1.方法的介绍与定义
Java中的方法,即函数(文中我们统称之为“方法”),是一个固定的一个程序段,或称其为一个子程序,它在可以实现固定运算功能。而且,同时还带有一个入口和一个出口,所谓的入口,就是函数所带的各个参数,我们可以通过这个入口,把函数的参数值传入子程序,供计算机处理;所谓出口,就是指函数的返回值,在程序段执行之后,由此返回值将值传回给调用它的程序。
/* 1.简单的说:方法就是完成特定功能的代码块 在很多语言里面都有函数的定义 函数在Java中被称为方法 */
方法就是完成特定功能的代码块,为了避免一些重复的代码
2.方法的格式
/* 2.格式: 修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2…) { 函数体; return 返回值; } */
3.方法格式的解释
- 修饰符: 目前记住 public static
- 返回值类型: 用于限定返回值的数据类型
- 方法名: 一个名字,为了方便我们调用方法
- 参数类型: 用于接收调用方法时传入的数据的类型
- 参数名: 用于接收调用方法时传入的数据的变量
- 方法体: 完成功能的代码
- return: 结束方法,把返回值带给调用者
4.简单的示例代码(有返回值)
package com.it_01; /* * 需求:求两个数的和 * */ public class MethonDemo { public static void main(String[] args) { //1.单独调用 //sum(10,20); //2.输出调用 //System.out.println(sum(10,20)); //3.赋值调用 int result = sum(10,20); //4.可以对result进行操作 //result += 10; System.out.println(result); } public static int sum(int a, int b ) { //1.返回方式一 return a+b; //2.返回方式二 // int c = a+b; // return c; } }
5.几个简单的小练习
1.键盘录入两个数据,返回两个数中的较大值
package com.it_01; import java.util.Scanner;; /* * 键盘录入两个数据,返回两个数中的较大值 * */ public class MethonDemo02 { public static void main(String[] args) { //创建一个对象 Scanner sc = new Scanner(System.in); //接受数据 System.out.println("请输入第一个数字:"); int a = sc.nextInt(); System.out.println("请输入第二个数字:"); int b = sc.nextInt(); int max = getMax(a, b); System.out.println("max:"+max); } /* * 返回两个数中的较大值 * * 两个明确: * 返回值类型:int * 参数列表:int a,int b */ //求出输入的两个数中较大数据的函数 public static int getMax(int a,int b) { if(a>b) { return a; }else { return b; } } }
2.键盘录入两个数据,比较两个数是否相等
package com.it_01; import java.util.Scanner; /* * 需求: * 键盘录入两个数据,比较两个数是否相等 * */ public class MethonDemo03 { public static void main(String[] args) { //创建键盘录入对象 Scanner sc = new Scanner(System.in); //接收数据 System.out.println("请输入第一个数据:"); int x = sc.nextInt(); System.out.println("请输入第二个数据:"); int y = sc.nextInt(); //调用方法 boolean b = compare(x,y); //输出结果 System.out.println("b:"+b); } /* * 比较两个数是否相等 * * 两个明确: * 返回值类型:boolean * 参数列表:int a,int b */ public static boolean compare(int a,int b) { if(a == b){ return true; }else { return false; } } }
3.键盘录入三个数据,返回三个数中的最大值
package com.it_01; import java.util.Scanner; /* * 键盘录入三个数据,返回三个数中的最大值 * */ public class MethonDemo04 { public static void main(String[] args) { //创建键盘录入对象 Scanner sc = new Scanner(System.in); //接收数据 System.out.println("请输入第一个数据:"); int a = sc.nextInt(); System.out.println("请输入第二个数据:"); int b = sc.nextInt(); System.out.println("请输入第三个数据:"); int c = sc.nextInt(); //调用方法 int max = getMax(a,b,c); //输出结果 System.out.println("max:"+max); } /* * 返回三个数中的最大值 * * 两个明确: * 返回值类型:int * 参数列表:int a,int b,int c */ public static int getMax(int a,int b,int c) { //1.利用普通的方法进行比较 // if(a > b) { // if(a > c) { // return a; // }else { // return c; // } // }else { // if(b > c) { // return b; // }else { // return c; // } // } //2.新建一个数组,把数据都放到数组中,然后在进行比较 //定义一个数组,把数据方法数组中来进行比较 int [] arr = {a,b,c}; //选择一个参照物 int max = a; for(int i = 0;i<arr.length;i++) { if(max<arr[i]) { max = arr[i]; } } return max; } }
6.没有返回值的方法
1.示例代码一
package com.it_02; /* * 在控制台打印出10遍HelloWorld * */ public class MethonDemo { public static void main(String[] args) { printHelloWorld(); // System.out.println(printHelloWorld()); } //在控制台打印出相关的helloWorld public static void printHelloWorld() { for(int i = 0;i<10;i++) { System.out.println("HelloWorld"); } } }
2.示例代码二:
package com.it_02; /* * 写一个方法,传递一个整数(大于1),在控制台打印1到该数据的值 * */ import java.util.Scanner; public class MethonDemo02 { public static void main(String[] args) { //创建一个对象 Scanner sc = new Scanner(System.in); //接收数据 System.out.println("请输入一个数字:"); int a = sc.nextInt(); printNum(a); } public static void printNum(int a) { for(int i = 1;i<=a;i++) { System.out.println(i); } } }
3.示例代码三:
package com.it_02; /* * 写一个方法,把所有的水仙花数打印在控制台 * */ public class MethonDemo03 { public static void main(String[] args) { printNarcissisticNumber(); } public static void printNarcissisticNumber() { for(int i = 100;i<=1000;i++) { int ge = i%10; int shi = i/10%10; int bai = i/100%10; if(ge*ge*ge+shi*shi*shi+bai*bai*bai==i) { System.out.println(i); } } } }
二.方法的重载
java中方法重载必须满足的条件:
/* 1.在同一个类中 2.方法名必须相同 3.方法的参数类不同 (和返回值类型没有关系) ps:方法的参数类不同包括: (1).参数的个数不同 (2).参数的类型不同 (3).参数的顺序不同(这个指的是参数存在多种类型的数据类型,如果只存在同一种类型的数据,则不适用) */
示例代码一:
package com.it_03; /* * 方法重载:在同一个类中,出现了方法名相同的情况。 * 方法重载的特点: * 方法名相同,参数列表不同。与返回值无关。 * 参数列表不同: * 参数的个数不同 * 参数对应的数据类型不同 * 参数的顺序不同(参数中存在多种数据类型的时候) * * 注意: * 在调用方法的时候,java虚拟机会通过参数列表的不同来区分同名的方法。 */ public class MethonDemo { public static void main(String[] args) { //定义变量 int a = 10; int b = 20; //求和方法 int result = sum(a,b); // System.out.println("result:"+result); //求和方法 float e = 100; float f = 300; float result2 = sum(e,f); // System.out.println("result2:"+result2); float result4 = sum(e,a); System.out.println("result4:"+result4); //定义变量 int c = 30; //求和方法 int result3 = sum(a,b,c); // System.out.println("result3:"+result3); } //定义两个数的求和方法 public static int sum(int a, int b) { return a+b; } //定义两个数的的求和方法(float) public static float sum(float a,float b) { return a+b; } // public static float sum(int a,float b) { System.out.println("float1"); return a+b; } public static float sum(float a,int b) { System.out.println("float2"); return a+b; } //定义三个数的求和方法 public static int sum(int a,int b,int c) { return a+b+c; } }
示例代码二:
package com.it_03; /* * 比较两个数据是否相等。参数类型分别为两个byte类型,两个short类型,两个int类型,两个long类型,并在main方法中进行测试 */ public class MethonDemo02 { public static void main(String[] args) { //int 类型 //System.out.println(compare(10, 20)); //byte类型 //System.out.println(compare((byte)10, (byte)20)); //short类型 //System.out.println(compare((short)10, (short)20)); //long类型 System.out.println(compare(10L, 20L)); } //byte public static boolean compare(byte a,byte b) { System.out.println("byte"); return a == b; } //short public static boolean compare(short a,short b) { System.out.println("short"); return a == b; } //int public static boolean compare(int a,int b) { System.out.println("int"); return a == b; } //long public static boolean compare(long a,long b) { System.out.println("long"); return a == b; } }
三.java中参数传递问题
参数传递一般有两种,一种是“传值”(基本数据类型),另一种是“传地址值”(引用数据类型)。传值是指在调用方法时,把参数的值传递给方法,而传地址值则是给方法提供参数的地址值。Java中的参数传递方法都为传值调用。
java中的方法中的参数可以是基本数据类型和引用数据类型,我们可以这样简单的来理解:
1.当实际参数是基本数据类型的时候,形式参数的改变不影响实际参数的变化
2.当实际参数是引用数据类型的时候,形式参数的改变会影响实际参数的变化
示例代码一:(实际参数为基本数据类型的时候)
package com.it_04; /* * 方法的参数如果是基本数据类型:形式参数的改变不影响实际参数。 * * 形式参数:用于接收实际参数的变量 * 实际参数:实际参与运算的变量 */ public class ArgsDemo { public static void main(String[] args) { int a = 10; int b = 20; System.out.println("a:"+a+",b:"+b);//a:10,b:20 change(a,b); System.out.println("a:"+a+",b:"+b);// a:10,b:20 } public static void change(int a,int b) {//a=10,b=20 System.out.println("a:"+a+",b:"+b);//a:10,b:20 a = b;//a=20 b = a + b;//b=40 System.out.println("a:"+a+",b:"+b);//a:20,b:40 } }
示例代码图解:


示例代码二:(引用数据类型)
package com.it_04; /* * 如果参数是引用数据类型: * 形式参数的改变直接影响实际参数 */ public class ArgsDemo02 { public static void main(String[] args) { int[] arr = {1,2,3,4,5}; for(int x=0; x<arr.length; x++) { System.out.print(arr[x]+","); } System.out.println(); change(arr); for(int x=0; x<arr.length; x++) { System.out.print(arr[x]+","); } } public static void change(int[] arr) { for(int x=0; x<arr.length; x++) { if(arr[x]%2==0) { arr[x]*=2; } } } }
示例代码图解:

java方法的几个小练习:
1.数组遍历练习
package com.it_05; /* * 把遍历数组改进为方法实现,并调用方法 */ public class ArgsDemo { public static void main(String[] args) { int [] arr = {1,2,3,4,5}; printArray(arr); } //基本打印出来的格式 // public static void printArray(int [] arr) { // for(int i=0;i<arr.length;i++) { // System.out.println(arr[i]); // } // // } // 把打印出来的格式变成为[1,2,3,4,5] public static void printArray(int [] arr) { System.out.print("["); for(int i=0;i<arr.length;i++) { if(i==arr.length-1) { System.out.print(arr[i]+"]"); }else { System.out.print(arr[i]+","); } } } }
2.数组求最值练习:
package com.it_05; /* * 把获取数组最值改进为方法实现,并调用方法 * */ public class ArgsDemo02 { public static void main(String[] args) { int [] arr = {31,11,56,79,80,100}; int max = getMax(arr); System.out.println("max:"+max); int min = getMin(arr); System.out.println("min:"+min); } // 最大值 public static int getMax(int [] arr) { int max = arr[0]; for(int i = 0;i<arr.length;i++) { if(max<arr[i]) { max=arr[i]; } } return max; } //最小值 public static int getMin(int [] arr) { int min = arr[0]; for(int i = 0;i<arr.length;i++) { if(min>arr[i]) { min=arr[i]; } } return min; } }
3.数组求和练习
package com.it_05; public class ArgsDemo03 { public static void main(String[] args) { int [] arr = {31,11,56,79,80,100}; int sum =sum(arr); System.out.println("sum:"+sum); } public static int sum(int [] arr) { int sum = 0; for(int i = 0;i<arr.length;i++) { sum+=arr[i]; } return sum; } }

浙公网安备 33010602011771号