1.什么是方法
所谓方法,就是用来解决一类问题的代码的有序组合,是一个功能模块。
2.方法的声明
语法格式:
访问修饰符 返回类型 方法名(参数列表){
方法体
}
3.方法分类
无参无返回值方法
无参带返回值方法
带参无返回值方法
带参带返回值方法
4.无参无返回值方法
例:一行打印输出一串星号
代码:
package com.imooc.method;
import java.util.Scanner;
public class MethodDemo {
//打印输出星号的方法
public void printStar(){
System.out.println("********************");
}
public static void main(String[] args){
MethodDemo myMethodDemo=new MethodDemo();
myMethodDemo.printStar();
System.out.println("********************");
System.out.println("欢迎来到Java的世界");
System.out.println("********************");
myMethodDemo.printStar();
}
}
5.无参数有返回值方法
例:求长方形的面积
代码:
package com.imooc.method;
public class Rectangle {
//求长方形面积的方法
public int area(){
int length=10;
int width=5;
int getArea=length*width;
return getArea;//返回语句
}
public static void main(String[] args){
Rectangle rc=new Rectangle();
System.out.println("长方形的面积为:"+rc.area());
}
}
6.有参无返回值的方法
例:定义一个求两个float类型数据最大值得方法,在方法中将最大值打印输出
代码:
package com.imooc.method;
public class MaxDemo {
//求最大值的方法
public void max(float a,float b){
float max;
if(a>b){
max=a;
}else{
max=b;
}
System.out.println("两个数"+a+"和"+b+"的最大值为:"+max);
}
public static void main(String[] args){
MaxDemo maxDemo=new MaxDemo();
float m=7.5f,n=8.9f;
maxDemo.max(m,n);
maxDemo.max(7.8f,41.8f);
}
}
7.有参有返回值的方法
例:定义一个求n!的方法,然后求1!+2!+3!+4!+5!
代码:
package com.imooc.method;
import java.util.Scanner;
public class Factorial {
//定义方法求n的阶乘和
public int fac(int n){
int sum2=0;
for(int i=1;i<=n;i++){
int sum1=1;
for(int j=1;j<=i;j++){
sum1=sum1*j;
}
sum2=sum2+sum1;
}
return sum2;
}
public static void main(String[] args){
//输入一个整数n
System.out.println("请输入一个整数n:");
int n;
Scanner sc=new Scanner(System.in);
n=sc.nextInt();
//调用方法求n的阶乘和
Factorial factorial=new Factorial();
System.out.println(n+"的阶乘和为:"+factorial.fac(n));
}
}
代码:
package com.imooc.method;
public class FacDemo {
//方法不能嵌套定义
//求阶乘的方法
public int fac(int n){
int s=1;
for(int i=1;i<=n;i++){
s*=i;//s=s*i;
}
return s;
}
public static void main(String[] args){
FacDemo facDemo=new FacDemo();
int fac=facDemo.fac(3);
System.out.println("3!="+fac);
//求1!+2!+3!+4!+5!
int sum=0;
for(int i=1;i<=5;i++){
sum=sum+facDemo.fac(i);
}
System.out.println("1!+2!+3!+4!+5!="+sum);
}
}
8.数组作为方法参数
例:定义方法,打印输出数组元素的值。
Public void printArray(int[] arr){}
代码:
package com.imooc.method;
public class ArrayMethod {
//打印输出数组元素的值
public void printArray(int[] arr){
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+" ");
}
System.out.println();
}
public static void main(String[] args){
int[] arr={10,20,30,40,50};
ArrayMethod am=new ArrayMethod();
am.printArray(arr);
}
}
例:查找数组元素的值
public boolean search(int n,int[] arr){}
代码:
package com.imooc.method;
import java.util.Scanner;
public class ArraySearch {
//查找数组元素值的方法
public boolean search(int n,int[] arr){
boolean flag=false;//默认没找到
for(int i=0;i<arr.length;i++){
if(arr[i]==n){
flag=true;//找打了
break;
}
}
return flag;
}
public static void main(String[] args){
int[] arr1={10,20,30,40,50,60};
System.out.println("请输入要查找的数据:");
Scanner sc=new Scanner(System.in);
int n1=sc.nextInt();
ArraySearch as=new ArraySearch();
boolean flag=as.search(n1, arr1);
if(flag){
System.out.println("找到了!");
}else{
System.out.println("没找到!");
}
}
}
9.方法重载
方法名相同,参数列表不同
代码:
package com.imooc.method;
public class MathDemo {
//求连个int类型数的和
public int plus(int m,int n){
return m+n;
}
//求两个double类型数的和
public double plus(double m,double n){
return m+n;
}
//求数组元素的累加和
public int plus(int[] arr){
int sum=0;
for(int i=0;i<arr.length;i++){
sum=sum+arr[i];
}
return sum;
}
public static void main(String[] args){
int m=5,n=10;
int[] arr={1,2,3,4,5,6};
MathDemo mathDemo=new MathDemo();
System.out.println("int类型的和:"+mathDemo.plus(m, n));
System.out.println("double类型的和:"+mathDemo.plus(1.1,2.2));
System.out.println("数组元素的和:"+mathDemo.plus(arr));
}
}
10.基本数据类型的传值
例:对两个变量的值进行交换并打印输出
代码:
package com.imooc.method;
public class ExchangeDemo {
public void swap(int a,int b){
int temp;
System.out.println("交换前:a="+a+",b="+b);
temp=a;a=b;b=temp;
System.out.println("交换后:a="+a+",b="+b);
}
public void swapTest(){
int m=1,n=3;
System.out.println("交换前:m="+m+",n="+n);
swap(m, n);
System.out.println("交换后:m="+m+",n="+n);
}
public static void main(String[] args){
int m=4,n=5;
ExchangeDemo ed=new ExchangeDemo();
System.out.println("交换前:m="+m+",n="+n);
ed.swap(m, n);
System.out.println("交换后:m="+m+",n="+n);
ed.swapTest();
}
}
代码:
package com.imooc.method;
public class ExchangeDemo1 {
public void add(int n){
n++;
System.out.println("方法中n="+n);
}
public static void main(String[] args){
int n=10;
System.out.println("方法调用前n的值:"+n);
ExchangeDemo1 ed=new ExchangeDemo1();
ed.add(n);
System.out.println("方法调用后n的值:"+n);
}
}
11.数组的传值
代码:
package com.imooc.method;
public class ArrayDemo {
//定义一个用于修改数组元素值得方法
public void updateArray(int[] a){
a[3]=15;
System.out.println("数组a的元素为:");
for(int n:a){
System.out.print(n+" ");
}
System.out.println();
}
public static void main(String[] args){
ArrayDemo ad=new ArrayDemo();
int[] a1={1,2,3,4,5};
System.out.println("方法调用前数组a1的元素为:");
for(int n:a1){
System.out.print(n+" ");
}
System.out.println();
ad.updateArray(a1);
System.out.println("方法调用后数组a1的元素为:");
for(int n:a1){
System.out.print(n+" ");
}
}
}
12.可变参数列表
例:public void sum(int… n){}
代码:
package com.imooc.method;
public class ArgsDemo {
public void sum(int... n){
int sum=0;
for(int i:n){
sum=sum+i;
}
System.out.println("sum="+sum);
}
public static void main(String[] args){
ArgsDemo ad=new ArgsDemo();
ad.sum(1);
ad.sum(1,2);
ad.sum(1,2,3,4);
}
}
代码:
package com.imooc.method;
public class ArgsDemo1 {
//查找
public void search(int n,int... a){
boolean flag=false;
for(int a1:a){
if(a1==n){
flag=true;break;
}
}
if(flag){
System.out.println("找到了!"+n);
}else{
System.out.println("没找到!"+n);
}
}
public static void main(String[] args){
ArgsDemo1 ad1=new ArgsDemo1();
ad1.search(3,1,2,3,4,5);
int[] a={1,2,3,4,5};
ad1.search(3, a);
}
}
13.可变参数列表作为方法参数的重载问题
代码:
package com.imooc.method;
public class ArgsDemo3 {
//可变参数列表所在的方法是最后被访问的。
public int plus(int a,int b){
System.out.println("不带可变参数的方法被调用!");
return a+b;
}
public int plus(int... a){
int sum=0;
for(int n:a){
sum=sum+n;
}
System.out.println("带可变参数的方法被调用!");
return sum;
}
public static void main(String[] args){
ArgsDemo3 ad=new ArgsDemo3();
System.out.println(ad.plus(6,7));
System.out.println("和为:"+ad.plus(1,2));
}
}