Java 方法
何谓方法
- Java方法是语句的集合, 它们再一起执行一个功能
- 方法是解决一类问题的有序组合
- 方法包含于类或对象中
- 方法再程序中被创建,再其他地方被引用
- 设计方法的原则:设计方法的时候,保持方法的原子性,就是一个方法只完成一个功能,这样有利于我们后期的发展
方法包含一个方法头和一个方法体
- 修饰符 定义方法的访问类型 可选择
- 方法名 是方法的名称
- 参数类型 形式参数 实参
- 方法体 方法的具体语句
- 返回值类型 默认是void
public static int max(int num1,int num2)
方法的调用
-
当方法返回一个 值 的时候,方法的调用被当作一个 值
int larger = max(30,40);
-
当方法返回的值是 void,方法的调用一定是 一条语句
System.ou.println("Hello word!");
修饰符
- public
//非静态方法
//实例化这个类
//对象类型 对象名字 = 对象值
student student = new student();
student.say();
- static
//static 和类一起加载
public void a(){
b();
}
//类实例化之后才存在
public static void b(){
}
//b() 不可以调用a
总结
public class Demo3 {
public static void main(String[] args) {
//第一种方法调用 add
int add = new Demo3().add(1,2);
//第二种调用方法 sub
int sub = Demo3.sub(3,1);
}
public int add(int a,int b){
return a+b;
}
public static int sub(int a,int b){
return a-b;
}
}
值传递和引用传递
Java 是值传递
public class Demo4 {
public static void main(String[] args) {
int a = 1;
System.out.println(a);//1
Demo4.change(a);
System.out.println(a);//1
}
//返回值为空 只把值传给了 change
public static void change(int a){
a = 10;//a = 10
}
}
输出结果:
1
1
引用传递
//引用传递 传递一个 对象 但是本质 还是 值传递
public class Demo5 {
public static void main(String[] args) {
Person person = new Person();
System.out.println(person.name);//null
Demo5.change(person);
System.out.println(person.name);//刘伟
}
public static void change(Person person){
//person是一个对象 他指向的是 ---> Person person = new Person()
// 这是一个具体的人 可以改变属性
person.name = "刘伟";
}
}
//定义了 一个 person类 里面有一个 属性 name
class Person{
String name;//属性
}
方法的重载
再一个类中 有 相同的函数名称,但是 形参不同 的函数
参数个数可以 不同 类型 返回值 可以不同
int max = max(10,20);
public static int max(int num1,int num2){
----
}
public static double max(double num1,idouble num2){
----
}
方法名称相同的时候 方法会根据参数的个数 ,参数的类型 等逐个去匹配。已选择对应的方法。
命令行传参
可变参数
在制作方法的时候 可能不确定参数的个数 也叫不定向参数
在方法的声明中 在指定的参数类型后加 省略号(........)
一个方法中 只能指定一个 可变参数 必须是方法的 **最后一个参数 **普通参数在前面声明
本质 就是 数组
递归
自己调用自己
可以 大大减少程序的代码量
递归有 两个部分:
-
递归头 : 什么时候 不调用 自己 , 没有 递归头 进入死循环
-
递归体:什么时候需要调用自己
public class Demo6 { //阶乘 public static void main(String[] args) { } public static int f(int n) { if (n == 1) { return 1; } else { return n*f(n-1); } } }