Java方法详解
方法的定义和调用
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() {
for (int i = 1; i <= 1000; i++) {
if (i%5==0) {
System.out.print(i+"\t");
}
if (i%(5*3)==0) {
System.out.println();
//System.out.print("\n");
}
}
}
}
public class Demo02 {
public static void main(String[] args) {
int max = max(10, 10);
System.out.println(max);
}
//比大小
public static int max(int num1,int num2) {
int result = 0;
if (num1==num2) {
System.out.println("num1==num2");
return 0; //终止方法
}
if (num1>num2) {
result = num1;
} else {
result = num2;
}
return result;
}
}
值传递和引用传递
值传递:传递的是变量的副本,修改副本不会影响原始变量
引用传递:传递的是变量的引用(内存地址),修改引用所指向的对象会影响原始对象
在 Java 中,参数传递始终是值传递(pass by value),不论是基本数据类型还是对象类型
方法的重载
public class Demo02 {
public static void main(String[] args) {
double max = max(10.0, 10.0);
System.out.println(max);
}
public static int max(int num1,int num2) {...}
public static double max(double num1,double num2) {...}
public static int max(int num1,int num2, int num3) {...}
}
命令行传参
有时候希望运行一个程序的时候再传递给它消息,这要靠传递命令行参数给main()函数实现
public class Demo03 {
public static void main(String[] args) {
//args.length 数组长度
for (int i = 0; i < args.length; i++) {
System.out.println("args[" + i +"]:" + args[i]);
}
}
}
可变参数
public class Demo04 {
public static void main(String[] args) {
//调用可变参数的方法
printMax(23, 3, 32, 2.3, 1312.3, 29);
printMax(new double[]{1, 2, 3, 4});
}
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);
}
}
递归
public class Demo06 {
// n的阶乘
public static void main(String[] args) {
System.out.println(f(13));
}
public static int f(int n) {
if (n == 1) {
return 1;
} else {
return n*f(n-1);
}
}
}
一个简单的计算器:可以循环接收新的数据,通过用户交互Scanner实现两个数的加减乘除
public class SimpleCalculator {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String flag = "1";
for (;flag.equals("1");) {
System.out.println("请输入第一个数:");
double a = scanner.nextDouble();
System.out.println("请输入运算符:");
String operator = scanner.next();
System.out.println("请输入第二个数:");
double b = scanner.nextDouble();
double result = 0;
switch (operator) {
case "+":
result = add(a, b);
break;
case "-":
result = minus(a, b);
break;
case "*":
result = multiply(a, b);
break;
case "/":
if (b != 0) {
result = divide(a, b);
} else {
result = -1;
}
break;
default:
System.out.println("无效的运算符!");
}
if (result == -1) {
System.out.println(a + operator + b + "的结果非法!");
} else {
System.out.println(a + operator + b + "的结果=" + result);
}
System.out.println("是否继续,继续请输入1,退出请输入0:");
flag = scanner.next();
}
System.out.println("程序结束!!");
scanner.close();
}
//加法
public static double add(double a, double b) {
return a + b;
}
//减法
public static double minus(double a, double b) {
return a - b;
}
//乘法
public static double multiply(double a, double b) {
return a * b;
}
//除法
public static double divide(double a, double b) {
if (b != 0) {
return a / b;
} else {
System.out.println("除数不能为零!");
return 0;
}
}
}