java方法 成员变量 局部变量概述

来源:互联网 发布:澳洲红蟹能吃吗 知乎 编辑:程序博客网 时间:2024/06/05 20:41

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 变量的生命周期

变量的作用域指的是变量的存在范围,只有在这个范围内,程序代码才能访问它。当一个变量被定义时,它的作用域就确定了。变量的作用域决定了变量的生命周期,说明作用域不同,生命周期就不一样。变量的生命周期指的是一个变量被创建并分配内存空间开始,到该变量被销毁并清除其所占内存空间的过程。

总结:

局部变量和成员变量区别

区别一:定义的位置不同

定义在类中的变量是成员变量

定义在方法中或者{}语句里面的变量是局部变量

区别二:在内存中的位置不同

成员变量存储在对内存的对象中

局部变量存储在栈内存的方法中

区别三:声明周期不同

成员变量随着对象的出现而出现在堆中,随着对象的消失而从堆中消失

局部变量随着方法的运行而出现在栈中,随着方法的弹栈而消失

区别四:初始化不同

成员变量因为在堆内存中,所有默认的初始化值

局部变量没有默认的初始化值,必须手动的给其赋值才可以使用。



阅读全文
0 0