成员变量和局部变量

成员变量和局部变量的定义

        局部变量:如果一个变量的定义的位置是在方法的内部,此时该变量被称为局部变量。
局部变量在使用的前必须要赋值。

        成员变量:如果一个变量定义的位置在方法的外部,在类的内部,此时该变量被称为成员变量。成员变量不是必须要赋值,成员变量是有默认值的,具体的值是根据数据类型来定。

        静态变量:Java 中被 static 修饰的成员称为静态成员或类成员。它属于整个类所有,而不是某个对象所有,即被类的所有对象所共享。静态成员可以使用类名直接访问,也可以使用对象名进行访问。静态变量是成员变量的一种。
在这里插入图片描述

各种变量的示例 帮助理解

public class   MemberLocal{
	static String name; //静态变量 由 static修饰 又称全局变量 可以被静态方法使用
    int num=10;//成员变量	又称实例变量   一般使用在其他需要的方法中 使用时需要new一下
	public static void A() {
		int num=20;  //局部变量 在这个方法内使用
		System.out.println("我是静态变量name 我的值是初始值"+name);
		System.out.println("我是局部变量num 我需要赋值后使用 我的值是"+num);
		name = "被A修改过的name";
			
	}	
	
	public static  void B(int param) {  //方法的参数就是局部变量
		//参数在方法调用的时候必然是会被赋值的
		System.out.println("我是局部变量parame 我需要赋值后使用 我的值是"+param);
		System.out.println("我是静态变量name 我的值是"+name);
	}  
	
    public static void main(String[] args){
       int numB = 100;
       A();    
       B(numB);
     }
}

多个类中的调用

//类Test1

public class Test1 {
	int  a=10;	//成员变量 示例变量
		
	public static void main(String[] args) {
		Test1 test1 = new Test1();
		int a = test1.a; //局部变量a
		System.out.println(a);
		test1.sys();
}
	public void sys() {//示例方法
		System.out.println(a);
	}
}
//类Test2
public class Test2  {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Test1 test1=new Test1();
		int a=test1.a;
		System.out.println(a);
	}

}

变量类型区别表

变量类型定义位置作用范围默认值在内存中的位置生命周期
成员变量类中,方法外部整个类具有默认值位于堆内存方法进栈而存在,方法出栈而消失
局部变量方法内部只能在方法中使用无默认值(不赋初值报错)位于栈内存对象创建而存在,对象被回收而消失
静态变量方法外部整个类具有默认值位于方法的静态区随着类的加载而加载,随着类的消失而消失

使用详解

静态变量(属于以static修饰的成员变量)

        静态变量在类中,但在方法、构造方法、语句块之外;

        系统会自动根据其所属类型给定初始化值(变量的值可在声明时设定,也可在构造方法中设定。此外,静态变量还可以在静态语句块中初始化);

        对象. 或 类名. 两种形式调用;

        存储在方法区的静态方法区;

        生命周期是 随类加载而加载,类消失而消失;

        无论一个类创建了多少个对象,类只拥有静态变量的一份地址拷贝;

        为了对类的使用者可见,大多数静态变量声明为public类型;

成员变量

        成员变量在一个类中,但在方法、构造方法和语句块之外;

        系统会自动根据其所属类型给定初始化值(变量的值可在声明时设定,也可在构造方法中设定);

        访问修饰符public、private等可以修饰实例变量;

        对象. 一种形式调用;

        存储在堆内存中;

        生命周期是 随对象创建而存在,对象消失而消失;

        成员变量的值至少被一个方法、构造方法或语句块引用,使得外部能够通过这些方法获取实例变量信息;

        实例变量对于类中的方法、构造方法或者语句块是可见的。一般情况下用private修饰,通过使用访问修饰符可以使实例变量对子类可见;

局部变量

        局部变量声明在方法、构造方法、语句块中;

        局部变量没有默认值,所以声明后必须经过初始化才可使用;

        没有调用方式,在范围内直接用;

        存储位置在栈中;

        生命周期与所在区域保持一致;

        访问修饰符public、private等不能用于修饰局部变量;

注意事项

        当成员变量与局部变量名相同时,使用就近原则,只要你能访问到,哪个声明的地方离你近就访问的是哪个,必须访问成员变量时,使用this访问。

        每个对象都有自己的成员变量,并不是共享一份,而静态变量则是所有对象共享一份。

        静态变量的访问,一般使用‘类名.变量名’进行访问,也可使用‘对象名.变量名’进行访问,但不推荐,因为静态变量并不属于某个对象,而属于整个类

有关变量的理解

点击跳转 Java变量简介

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值