Java方法详解
1.何谓方法?
java方法是语句的集合,它们在一起执行一个功能。
- 方法是解决一类问题的步骤的有序组合
- 方法包含于类或对象中
- 方法在程序中被创建,在其他地方被引用
最好一个方法实现一个功能(原子性)
package method;
public class Demo01 {
// main方法
public static void main(String[] args) {
// int sum = add(1, 2);
// System.out.println(sum);
test();
}
// 加法
public static int add(int a,int b){
return a+b;
}
public static void test(){
// 计算0-100之间奇数和偶数的和
int a = 0;
int b = 0;
for (int i = 0; i <= 100; i++) {
if(i % 2 == 0){
a += i;
}else {
b += i;
}
}
System.out.println("奇数和为:"+ b);
System.out.println("偶数和为:"+ a);
}
}
2.方法的定义和调用
(1).方法的定义
包括方法头方法体
- 修饰符
- 返回值类型
- 方法名
- 参数类型(形参,实参):像一个占位符,方法可以不含参数
- 方法体
修饰符 返回值类型 方法名(参数类型 参数名){
...
方法体
...
return 返回值;
}
package struct;
import java.util.Scanner;
public class Demo2 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int a = scanner.nextInt();
int b = scanner.nextInt();
System.out.println(max(a, b));
scanner.close();
}
// 比大小
public static int max(int num1,int num2){
if(num1 == num2){
System.out.println("一样大");
return 0; // 终止方法
}
if(num1>num2){
return num1;
}else {
return num2;
}
}
}
(2).方法的调用
- 对象名.方法名(实参列表)
- 有返回值:当作一个值
- 无返回值:一条语句
- 值传递和引用传递
3.方法的重载
重载:在一个类中,有相同的函数名称,但形参不同的函数
简单说,名字相同,参数不同(个数,类型,顺序等等)
返回类型随意,返回类型不足以成为区分重载的因素。
package method;
public class Demo01 {
// main方法
public static void main(String[] args) {
int sum = add(1, 2);
int add = add(2, 3, 4);// 调用重载add方法
System.out.println(sum);
System.out.println(add);
// test();
}
// 加法
public static int add(int a,int b){
return a+b;
}
// 重载add方法
public static int add(int a,int b,int c){
return a+b+c;
}
public static void test(){
// 计算0-100之间奇数和偶数的和
int a = 0;
int b = 0;
for (int i = 0; i <= 100; i++) {
if(i % 2 == 0){
a += i;
}else {
b += i;
}
}
System.out.println("奇数和为:"+ b);
System.out.println("偶数和为:"+ a);
}
}
4.命令行传参
有时候需要运行一个函数的时候再传递给它消息。这要靠main()函数实现
package method;
public class Demo02 {
public static void main(String[] args) {
// args.length 数组长度
for (int i = 0; i < args.length; i++) {
System.out.println("args[" + i + "]:" + args[i]);
}
}
}
5.可变参数(本质是数组)
jdk1.5开始,java支持传递同类型的可变参数给一个方法
在方法声明在,在指定参数类型后加一个省略号
一个方法只能指定一个可变参数,它必须是方法的最后一个参数。
package method;
public class Demo03 {
public static void main(String[] args) {
// Demo03 demo03 = new Demo03();
// demo03.test(1);
printMax(34, 3, 3, 2, 56.5);
printMax(new double[]{1, 2, 3});
}
// public void test(int... i){
// System.out.println(i[0]);
// }
public static void printMax(double... numbers){
if(numbers.length == 0){
System.out.println("no argument passed");
return;
}
double result = numbers[0];
// 排序
for (int i = 0; i < numbers.length; i++) {
if(numbers[i] > result){
result = numbers[i];
}
}
System.out.println("the max value is " + result);
}
}
6.递归
递归即自己调用自己
利用递归把复杂问题简化,大大减少了程序的代码量。
递归结构包括:
递归头:什么时候不调用自身方法。
递归体:什么时候需要调用自身方法
package method;
public class Demo05 {
// 5! 5*4*3*2*1
public static void main(String[] args) {
System.out.println(f(5));
}
public static int f(int n){
if(n==1){
return 1;
}else {
return n*f(n-1);
}
}
}
递归算法对人类友好,符合人类逻辑,但是对计算机来说不友好,时间复杂度大,尤其是Java这种栈机制的编程语言,为了防止栈内存溢出,最后少使用复杂的,深层的递归算法。
浙公网安备 33010602011771号