1. 方法
1.1 方法概述
java中方法就是用来解决某件事或者实现某个功能的办法。如果需要定义一个方法,则只能在类里面定义,不能不能独立定义一个方法。一旦将一个方法定义在某个类的类体内,如果这个方法使用了static修饰,则这个方法属于这个类,否则这个方法属于这个类的实例。
1.2 方法的语法格式
在Java中,声明一个方法的具体语法格式如下:
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2,......){
执行语句
………
return返回值;
}
修饰符:方法的修饰符比较多,有对访问权限进行限定的,有静态修饰符static,还有最终修饰符final等,这些修饰符在后面的学习过程中会逐步介绍
返回值类型:用于限定方法返回值的数据类型
参数类型:用于限定调用方法时传入参数的数据类型
参数名:是一个变量,用于接收调用方法时传入的数据
return关键字:用于结束方法以及返回方法指定类型的值
返回值:被return语句返回的值,该值会返回给调用者
注意:方法的返回值必须为方法声明的返回值类型,如果方法中没有返回值,则方法的返回值类型必须为void,此时方法中的return可以省略。
1.3 方法的调用
同一个类的一个方法调用另一个方法时,如果被调用的方法是普通方法,则默认使用this作为调用者;如果被调方法是静态方法,则默认使用类作为调用者。也就是说看起来某些方法能被独立执行,但实际上还是使用this或者类来作为调用者。
1.4 方法的重载
Java允许同一个类里定义多个同名的方法,只要形参列表不同就行。如果同一个类中包含了两个或两个以上方法的方法名相同,但形参列表不同,则被称为方法重载。方法重载的要求就是两同一不同:同一个类中方法名相同,参数列表不同,方法重载与返回值类型无关。
重载的注意事项
重载方法参数必须不同:
参数个数不同,如method(intx)与method(int x,int y)不同
参数类型不同,如method(intx)与method(double x)不同g
参数顺序不同,如method(intx,double y)与method(double x,int y)不同
重载只与方法名与参数类型相关与返回值无关
如voidmethod(int x)与int method(int y)不是方法重载,不能同时存在
重载与具体的变量标识符无关
如method(intx)与method(int y)不是方法重载,不能同时存在
1.5 值传递机制
参数传递,可以理解当我们要调用一个方法时,我们会把指定的数值,传递给方法中的参数,这样方法中的参数就拥有了这个指定的值,可以使用该值,在方法中运算了。这种传递方式,我们称为参数传递。在这里,定义方法时,参数列表中的变量,称为形式参数;调用方法时,传入给方法的数值,我们称为实际参数。
当调用方法时,如果传入的数值为基本数据类型(包含String类型),形式参数的改变对实际参数不影响。
当调用方法时,如果传入的数值为引用数据类型(String类型除外),形式参数的改变对实际参数有影响。
2. 成员变量和局部变量
2.1 成员变量和局部变量
成员变量指的是在类里定义的变量,也就是field;局部变量指的是在方法中或者方法上定义的变量。成员变量被分为类变量和实例变量两种,定义成员变量时没有static修饰的就是实例变量,有static修饰的就是类变量。
变量的初始值
成员变量: 默认是有初始值的
局部变量: 没有初始值,所以必须先初始化才能使用.
class ABC
{
String info = null;//成员变量
void doWork(String name)
{
System.out.println(x);
int age;//局部变量
if(true) {
int num;//局部变量
}
}
{
int num;//局部变量
}
String x ;
}
2.2 变量的作用域
变量根据定义的位置不同,也决定了各自的作用域是不同的. 看变量所在的那对{}.
成员变量: 在整个类中都有效.
局部变量: 在开始定义的位置开始,到紧跟着结束的花括号为止.
-------------------------------------------------------------------------------------------------------------------------
成员变量,可以先使用后定义,局部变量必须先定义而后才能使用.
2.3 变量的生命周期
变量的作用域指的是变量的存在范围,只有在这个范围内,程序代码才能访问它。当一个变量被定义时,它的作用域就确定了。变量的作用域决定了变量的生命周期,说明作用域不同,生命周期就不一样。变量的生命周期指的是一个变量被创建并分配内存空间开始,到该变量被销毁并清除其所占内存空间的过程。
总结:
局部变量和成员变量区别
区别一:定义的位置不同
定义在类中的变量是成员变量
定义在方法中或者{}语句里面的变量是局部变量
区别二:在内存中的位置不同
成员变量存储在对内存的对象中
局部变量存储在栈内存的方法中
区别三:声明周期不同
成员变量随着对象的出现而出现在堆中,随着对象的消失而从堆中消失
局部变量随着方法的运行而出现在栈中,随着方法的弹栈而消失
区别四:初始化不同
成员变量因为在堆内存中,所有默认的初始化值
局部变量没有默认的初始化值,必须手动的给其赋值才可以使用。