初识方法、重载格式
public class student { public void static talk(){ System.out.println("话话话"); } } public class Demo02 { public static void main(String[] args) { Student.talk(); } }
- 非静态方法:类实例化之后才存在,所以静态方法不能调用非静态
- 需要实例化类 (new)再调用
public class student { public void talk(){ System.out.println("话话话"); } } public class Demo02 { public static void main(String[] args) { Student student=new Student();//实例化类 student.talk(); } }
命名规则:首字母小写,后面驼峰。
格式:
修饰符 返回值类型 方法名(参数类型 参数名){
...
方法体
...
return 返回值;
}
-
void不需要返回值
-
形参:方法里用来定义的参数
-
实参:调用时传递给形参的参数
-
return除了返回值还有终止方法的作用
方法的重载
重载就是在同一个类中,有相同的的函数名,但形参不同的函数。
规则:
-
方法名必须相同
-
参数列表必须不同(个数、类型等)
-
返回值类型可以相同也可以不同
-
Tips:方法名称相同时,编译器会根据调用方法的参数个数、参数类型等去逐个匹配,以选择对应的方法,如果匹配失败,则编译器报错。
命令行传参
不定向参数(可变参数)
-
方法声明中在指定参数类型后加一个省略号(...)
-
一个方法中只能指定一个可变参数,它必须是最后一个参数,任何普通参数必须在它之前声明。
例子
//可变参数 public class Demo03 { public static void main(String[] args) { printMax(1.2,56.9,88.56,85); printMax(new double[]{123,569,999.56,456}); } public static void printMax(double... numbers){ if (numbers.length ==0){ System.out.println("啥也没"); return; } double result =numbers[0]; for (int i=1;i<numbers.length;i++){ if (numbers[i]>result){ result=numbers[i]; } } System.out.println("最大的是:"+result); } } //最大的是:88.56 //最大的是:999.56
递归
递归结构包括两个部分:
-
递归头:什么时候并不调用自身方法,如果没有头,绛将陷入死循环。
-
递归体:什么时候需要调用自身方法。
例子
//递归 public class Demo04 { 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); } } }
这个例子里f(1)就是边界条件
-
JAVA使用栈机制,如果调用深度过大会导致程序崩溃(如1000!),理解递归思想
值传递(Java)和引用传递
-
在Java中所有的参数传递,不管基本类型还是引用类型,都是值传递,或者说是副本传递。
只是在传递过程中:如果是对基本数据类型的数据进行操作,由于原始内容和副本都是存储实际值,并且是在不同的栈区,因此形参的操作,不影响原始内容。
如果是对引用类型的数据进行操作,分两种情况,一种是形参和实参保持指向同一个对象地址,则形参的操作,会影响实参指向的对象的内容。一种是形参被改动指向新的对象地址(如重新赋值引用),则形参的操作,不会影响实参指向的对象的内容。
本文来自博客园,作者:紫英626,转载请注明原文链接:https://www.cnblogs.com/recorderM/p/14493321.html