Java基础 -- Java方法
Posted bwxx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java基础 -- Java方法相关的知识,希望对你有一定的参考价值。
Java方法
-
什么是方法?
Java方法是语句的集合,他们在一起执行一个功能。
- 方法是解决问题步骤的有序集合。
- 方法包含于类或对象中。
- 方法在程序中被创建,在其他地方被引用。
-
设计方法原则:一个方法只完成一个功能。
方法的本意是功能块,即实现某个功能的语句块的集合。我们设计方法的时候最好保持方法的原子性,就是一个方法只完成一个功能。
方法的定义
-
Java方法类似函数,一段完成特定功能的代码。
-
方法包含一个方法头和方法体。包含:修饰符,返回值类型,方法名,参数类型,方法体
-
格式:
/* 修饰符 返回值类型 方法名(参数类型 参数名){ ... 方法体 ... return 返回值; } */ public static int max(int num1,int num2){ int result = 0; if (num1==num2){ System.out.println("num1=num2"); return 0;//终止方法 } int result =num1>num2?num1:num2; return result; }
方法的调用
-
语法:对象名.方法名(实参列表)
-
Java支持两种调用方式,根据是否有返回值来选择。
-
两种方式:
-
int larger = max(30,40);
-
System.out.println("Hello,World!");
-
-
课后拓展:
-
值传递:传原实参副本,不改变实参变量。
-
引用传递:传内存地址,操作该地址的变量,原实参发生改变。
Java只存在值传递。
public static void main(String[] args) { //StringBuilder sb = new StringBuilder("iphone"); //foo(sb); // sb 没有被改变,还是 "iphone"。 //Java中只有值传递 int count = 66; fun(count); String str = "abc"; fun1(str); } /* 值传递:调用方法将实参作为副本放入方法中,无论方法中如何修改不影响原实参 引用传递:将变量的内存地址传给方法,操作时会找到保存在地址内的变量,一旦修改会对原实参产生影响 */ //fun方法 static void fun(int count){ count = 666; } //fun1 static void fun1(String str){ str = "aabbcc"; } // static void foo(StringBuilder builder) { // builder = new StringBuilder("ipad"); // }
-
方法的重载
-
定义:一个类中,函数名相同,形参不同。
-
规则:
- 方法名必须相同
- 参数列表必须不同(个数/类型/顺序不同)
- 方法返回值类型可以相同可以不同
- 仅仅返回值不同不足以成为方法的重载
-
实现理论:
方法名相同时,IDE根据调用方法的参数个数,类型,顺序注意匹配,以选择对应方法,如匹配失败,则IDE报错
public static void main(String[] args) { double max = max(10.0, 20.0); System.out.println(max); } /*方法的重载: 1.方法名必须相同 2.参数列表必须不同(参数个数,类型,排列顺序) */ public static double max(double a,double b){ double result = 0; if (a==b){ System.out.println("a=b"); return 0;//终止方法 } if (a>b){ result = a; }else{ result = b; } return result; } public static int max(int a,int b){ int result = 0; if (a==b){ System.out.println("a=b"); return 0;//终止方法 } if (a>b){ result = a; }else{ result = b; } return result; }
命令行传参
-
代码:
public class Demo03 { public static void main(String[] args) { /* 命令行传参 */ for (int i = 0; i <args.length ; i++) { System.out.println("args["+i+"]:"+args[i]); } } }
在文件夹下 javac CommandLine.java
返回src目录cd ../../../
java com.wang.method.Demo03 this is wang
可变参数
-
jdk1.5后,java支持互残笛同类型可变参数给一个方法
-
方法声明中,在指定参数类型后加一个...
-
一个方法中至指定一个可变参数,它必须是方法的最后一个参数。
public static void main(String[] args) { Demo04 demo04 = new Demo04(); // demo04.test(1,2,3,4,5,6,7,8); //调用可变参方式 printMax(5,8,13,46,95,56,67,82,1); printMax(new double[]{1,2,3}); } //可变参数 public void test(int x,int ... i){ System.out.println(x); System.out.println(i[0]); System.out.println(i[1]); System.out.println(i[2]); System.out.println(i[3]); System.out.println(i[4]); } public static void printMax(double ... numbers){ if (numbers.length==0){ System.out.println("No arguement passed"); return; } double result = numbers[0]; //排序 for (int i = 1; i <numbers.length ; i++) { if (numbers[i]>result){ result = numbers[i]; } } System.out.println("The max value is "+result); }
递归(小计算使用)
public static void main(String[] args) {
System.out.println(fac(3));
}
/*递归:
1.自己调用自己
2.用有限语句定义对象无限集合
结构:1.什么时间不调用自己 2. 什么时间调用自己
边界条件: 前阶段 --> 返回阶段
*/
public static int fac(int n){
if (n==1){
return 1;
}else{
return n*fac(n-1);
}
}
以上是关于Java基础 -- Java方法的主要内容,如果未能解决你的问题,请参考以下文章