方法
就是通过{}然后将多行代码组装到一起。他就是个功能模块。
方法名
1.遵守标识符的命名规则
2.驼峰:首字母小写 其他单词首字母大写 剩余全部小写
参数列表
个数,顺序,类型
作用 : 实现功能的办法
注意:
方法定义在类中方法外,方法本身不能嵌套
方法不调用不执行
语法 :
没有返回值类型的方法
修饰符 void 方法名(参数列表){
实现功能的代码段;
[return;]
}
有返回值类型的方法
修饰符 返回值类型 方法名(参数列表){
实现功能的代码段;
return 返回值;
}
优点 :
提高了代码的复用性
提高了程序的安全性
修饰符 : 访问权限修饰符
目前为 : public static
方法值 : 方法执行完毕之后是否需需要得到一个结果(值)
结果值的数据类型 : 就是有返回值类型方法的返回值类型
void : 没有返回值类型的
方法名 : 标识符->命名规则|规范
调用方法需要跟随方法名调用
参数列表 : 功能定义的时候是否存在未知的数据,有可能会改变的数据,如果存在定义在参数列表中
可以定义参数,可以不定义参数
参数 :数据类型 参数名,数据类型 参数名..
相当于局部变量的声明--> 作用域只属于当前的方法
数据类型 : 可以为基本数据类型|引用数据类型
{} : 方法体
具体实现功能的代码段
return :
1. 提前结束方法
2. 带出返回值 -> return 返回值;
方法的调用 :
执行方法中的代码
基础调用 : 方法名(参数列表);
赋值调用 : 数据类型 变量名 = 方法名(参数列表);
输出调用 : System.out.println(方法名(参数列表));
赋值调用与输出调用关注返回值,接收使用了返回值,基础调用调用只是执行方法中的代码没有接收返回值
return :
有返回值类型的方法中 : 必须存在return,同时需要带出返回值
1)提前结束方法 2)带出返回值返回给方法的调用出
没有返回值类型的方法中 : 可以存在return,但是不能带出返回值
1)提前结束方法
问 : break,continue,return之间的区别
1)作用 : break结束终止 continue跳过本次之间进入下一次 return终止返回
2)应用场景 : break->switch|循环 continue->循环 return ->方法
兼容类型 :
1.参数兼容类型 :
形参类型 >= 实参类型
2.返回值兼容类型
接收返回值的变量类型>=方法的返回值类型>= return后面结果的类型
方法的内存分析图:
{}代码块的分类
局部代码块
1.定义在方法中的代码块
2.作用:缩减变量的生命周期,降低了内存效率,提升了内存使用率
成员代码块
变量的分类
局部变量
1.定义在方法中,代码块的变量称之为局部变量
2.定义范围:只能在当前变量的声明位置开始{,一直到所属方法,所属代码块的右括号位置}
成员变量
1.定义在方法外,类中的变量称之为成员变量
//1:找到当前变量所属的类 类名 变量名=new 类名();
VariableTest v = new VariableTest(); // int num =10;
//2:调用 变量名.变量名
System.out.println(v.f);
局部变量和成员变量的区别:
(1)在类中的位置不同
成员变量:类中方法外
局部变量:方法定义中或者方法声明上
(2)在内存中的位置不同
成员变量:在堆中
局部变量:在栈中
(3)生命周期不同
成员变量:随着对象的创建而存在,随着对象的消失而消失
局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
(4)初始化值不同
成员变量:有默认值
局部变量:没有默认值,必须定义,赋值,然后才能使用
方法
static
static-static
1.类名.方法名 类名.变量名
2.如果两个内容在同一个类中,则类名可以省略
static-no-static
1.要么将非静态的修改静态的
2.类名 变量名=new 类名();变量名.非静态内容
3.no-static-no-static
4.no-static-static
Scanner input = new Scanner(System.in);
input.nextInt();
Class Variable{
float f;
public static void main(String[] args){
Variable v = new Variable();
System.out.println(v.f);
}
}
返回值
1.保证当前方法的void所处的位置通过一个数据类型替代,具体的类型有返回值的类型决定。
2.在方法的最后一条代码中增加return 结果
public class Test03 {
public static void main(String[] args) {
System.out.println(result);
double n = add(2,3);
System.out.println(n);
}
public static double add(int n1,int n2){
double sum = n1+n2;
return sum;
}
}
方法的重载 :
实现重载的3个条件 :
1.一个类中的多个方法
2.方法名相同
3.参数列表不同 | 方法签名不同
参数个数不同
参数类型不同
不同类型的参数顺序不同
方法签名 : 方法的唯一标识
方法名+参数列表 = 方法签名
重载方法的调用 :
根据实参区分
分析 :
1.方法的重载与参数名无关
2.方法的重载与方法的修饰符无关
3.方法的重载与方法的返回值无关]
总结 : 方法的重载只与方法名与参数列表有关
方法就是封装的体现
方法的重载就是多态的一种体现
关于重载方法的面试题
1.完全匹配 2.最近最优 转换过程中最近的
子主题 1
char->int->long->float->double int->long->float->double
递归 : (了解)
方法的内部自己调用自己
优点 :
程序设计更简单,简洁
缺点 :
使用不好,极有可能造成内存的溢出
实现组成:
基线条件|递归头 : 停止自己调用自己的条件
递归条件|递归体 : 自己调用自己
执行过程 :
1.递归前进段 : 不停的自己调用自己
2.临界条件 : 停止自己调用自己的条件
3.递归后退段 : 从临界条件开始,不停的将结果返回给上一层