Java方法
何谓方法?
System.out.println() --> 类.对象.方法
方法是语句的集合,它们在一起可以执行一个功能
Java的方法类似于其他语言的函数。
设计方法的原则:就是一个方法只完成一个功能
方法的定义和调用
-
格式:
修饰符 返回值类型 方法名(参数类型 参数名){
…
方法体
…
return 返回值;
}
- 修饰符:可选的,告诉编译器如何调用该方法 public
- 返回值类型:返回值的数据类型,例如:String,如果没有返回值,那么其返回的关键字就是void
package com.eighteen.method;
public class Demo01 {
//main方法
public static void main(String[] args) {
int sum = add(1, 3);
System.out.println(sum);
}
// 加法
public static int add(int a, int b){
return a+b;
}
}
Java是值传递
调用的代码示例:
package com.eighteen.method;
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;
}
}
方法的重载
重载就是在一个类中,有相同的函数名称,但形参不同的函数
- 方法重载的规则:
- 方法名称必须相同
- 参数列表必须不同(个数不同、类型不同、排序不同)
- 方法的返回类型可以相同也可以不同
- 仅仅返回类型不同不足以称为方法的重载
println就包含了方法的重载
是形参的类型不同!
public void print(char c) {
write(String.valueOf(c));
}
public void print(boolean b) {
write(b ? "true" : "false");
}
public void print(int i) {
write(String.valueOf(i));
}
public void print(long l) {
write(String.valueOf(l));
}
命令行传参(不重要)
可变参数
jdk1.5开始才有的,不定项参数
在方法声明中,在指定参数类型后面加一个省略号(…)
一个方法中只能有一个可变参数,而且必须是方法中最后一个参数
对象的调用区别于方法的调用
package com.eighteen.method;
public class Demo05 {
public static void main(String[] args) {
Demo05 demo05 = new Demo05();
demo05.test(1, 3, 4, 5);
}
public void test(int... i){
System.out.println(i[0]);
System.out.println(i[1]);
System.out.println(i[2]);
System.out.println(i[3]);
}
}
方法的调用
package com.eighteen.method;
public class Demo06 {
public static void main(String[] args) {
//调用可变参数的方法
printMax(34, 2, 22, 4, 61.5);
}
public static void printMax(double... numbers){
if (numbers.length==0){
System.out.println("No argument 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);
}
}
递归
递归就是A方法调用A方法,也就是调用他本身
递归结构包括两个部分:
递归头:什么时候不调用自身方法。如果没有头,就陷入死循环。
递归体:什么时候需要调用自身方法。
一般小循环可以使用递归,但是要是循环的次数太大就不要用了,会影响机器的性能。
package com.eighteen.method;
public class Demo07 {
public static void main(String[] args) {
System.out.println(f(4));
}
// 阶乘
public static int f(int n){
if (n==1){
return 1;
}
else {
return n*f(n-1);
}
}
}