java--成员变量和局部变量

变量的分类

Java 语言中若变量按声明的位置分类,

可以分为:成员变量、局部变量,
而成员变量又分为:实例变量、静态变量。
实例变量是指不使用static修饰的变量,
静态变量是指使用static修饰的变量。
局部变量包括:方法内声明的变量、方法的形参、构造器的形参、代码块内声明的变量。
在这里插入图片描述

成员变量

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

有默认值
byte/short/int/long : 0
float/double : 0.0
char : 0 或 ‘\u0000’
boolean : false
引用类型: null

实例变量

实例变量是指不使用static修饰的变量,
类中的实例变量在用该类创建对象的时候才会被分配内存空间。

     //实例变量的赋值
       public class Test01 {
    int m = 10,n;//A
    //n=200; 成员变量 在声明的同时赋值或者在方法内赋值
    void f(){
        if(m == n)
            n=+m;    //C
        else
            n = n - m; //D
    }
}
实例变量的调用
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);
	}
}
静态变量

java 中被 static 修饰的成员称为静态成员或类成员。它属于整个类所有,而不是某个对象所有,即被类的所有对象所共享。静态成员可以使用类名直接访问,也可以使用对象名进行访问。静态变量是成员变量的一种。
1.静态变量在类中,但在方法、构造方法、语句块之外;
2.系统自动赋初值,此外,静态变量还可以在静态语句块中初始化);
3.对象. 或 类名. 两种形式调用;
4.存储在方法区的静态方法区;
5. 生命周期是 随类加载而加载,类消失而消失;
6. 无论一个类创建了多少个对象,类只拥有静态变量的一份地址拷贝;
7.为了对类的使用者可见,大多数静态变量声明为public类型;

局部变量

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

不会赋默认值 必须赋初值才能使用

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);
     }
}
静态变量 成员变量 局部变量对比

在这里插入图片描述

成员变量和局部变量的对比
相同点:
  1.声明格式相同
       格式: 数据类型  变量名  =  变量值
  2.变量,必须先声明后使用
  3.变量,都有其作用域
不同点:
  1.声明的位置不同:
      成员变量:直接声明在类的内部
      局部变量:方法内声明的变量
                       方法的形参、构造器的形参
                       代码块内声明的变量。
   2.权限修饰符的使用:
               成员变量:可以在声明的类型前,指明权限修饰符。
                       权限修饰符有:private、public、protected、默认
               局部变量:不可以声明权限修饰符    
    3.默认初始化值:
        成员变量:在声明时,如果没有显示赋值。则其有默认初始化值。
                         byte/short/int/long :  0
                         float/double : 0.0
                          char : 0 或 '\u0000'
                         boolean : false
                        引用类型: null
       局部变量:在使用变量前,一定要进行显示初始化。即:局部变量没有初始化值
      对于方法的形参(局部变量的一种)而言,是在调用方法时,给形参赋值。
      4.在内存中加载的位置不同:
          成员变量:声明在堆空间中(永久存在)
          局部变量:声明在栈空间中
注意事项:

1.当成员变量与局部变量名相同时,使用就近原则,只要你能访问到,哪个声明的地方离你近就访问的是哪个,必须访问成员变量时,使用this访问。
2.每个对象都有自己的成员变量,并不是共享一份,而静态变量则是所有对象共享一份。
3.静态变量的访问,一般使用‘类名.变量名’进行访问,也可使用‘对象名.变量名’进行访问,但不推荐,因为静态变量并不属于某个对象,而属于整个类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李自桐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值