zoukankan      html  css  js  c++  java
  • java中的成员变量、静态变量与局部变量

    java中的变量分为成员变量(又叫实例变量)、静态变量和局部变量。

    1.成员变量

    1.1 成员变量(实例变量)是在类中定义的非static修饰的变量,可以不用赋初始值,不同的数据类型有默认的初始值。

    package test;
    
    import org.junit.Test;
    
    public class VariableTest {
    	byte bt;
    	short s;
    	int age;
    	long l;
    	float f;
    	double d;
    	char c;
    	boolean flag;
    	String name;
    	
    	@Test
    	public void cvariable(){
    		VariableTest vt=new VariableTest();
    		System.out.println("byte类型的默认值为:"+vt.bt);
    		System.out.println("short类型的默认值为:"+vt.s);
    		System.out.println("int类型的默认值为:"+vt.age);
    		System.out.println("long类型的默认值为:"+vt.l);
    		System.out.println("float类型的默认值为:"+vt.f);
    		System.out.println("double类型的默认值为:"+vt.d);
    		//'u0000'为空
    		if(c=='u0000'){
    			System.out.println("char类型的默认值为'u0000'");
    		}
    		System.out.println("boolean类型的默认值为:"+vt.flag);
    		System.out.println("String类型的默认值为:"+vt.name);
    	}
    }
    

     运行结果:

    byte类型的默认值为:0
    short类型的默认值为:0
    int类型的默认值为:0
    long类型的默认值为:0
    float类型的默认值为:0.0
    double类型的默认值为:0.0
    char类型的默认值为'
    

    1.2 实例变量只有初始化一个副本之后才可以使用,每当实例化一个对象,会在堆中创建一个副本并初始化,各个对象中对实例变量的修改互不影响。

    package test;
    import org.junit.Test;

    public class VariableTest {
        int age;
        @Test
        public void cvariable2(){
            VariableTest vt1=new VariableTest();
            vt1.age++;
            System.out.println("vt1.age:"+vt1.age);  //vt1.age:1
            VariableTest vt2=new VariableTest();
            vt2.age++;
            System.out.println("vt2.age:"+vt2.age);  //vt2.age:1
        }
    }

    2.静态变量

    定义在类中被static修饰的变量,类加载时在方法区中分配存储空间,被类所拥有,任意一个对象对其修改都会改变该变量的值。

    package test;
    
    import org.junit.Test;
    
    public class VariableTest {
    	
    	static int num;
    	
    	@Test
    	public void staticVariableTest(){
    		VariableTest vt1=new VariableTest();
    		vt1.num++;
    		System.out.println(vt1.num);   //1
    		VariableTest vt2=new VariableTest();
    		vt2.num++;
    		System.out.println(vt2.num);   //2
    	}
    	
    }
    

     3.局部变量

    局部变量是指定义在方法体中的变量,变量定义后必须赋初始值。若为基本类型,值直接存储在栈中,若为引用类型,其对象存储在堆中,而把对象的引用存储在栈中。

     4.成员变量的作用域

     成员变量的作用域:

    • public:当前类,同一package的其他类,其他package的当前类的子类,其他package的类都可以访问(4);
    • private:只有当前类能访问(1);
    • protected:当前类,同一package的其他类,其他package的当前类的子类都可以访问(3);
    • default:只有当前类和其位于同一包内的类可以访问(2);

    这些修饰符只能修饰成员变量,不能修饰局部变量。(只有public,abstract,final能用来修饰类)。

    未经授权,不得转载!
  • 相关阅读:
    Bluetooth ATT 介绍
    用SQL语句去掉重复的记录
    xib模块化设计
    iOS 指纹识别常见问题汇总
    蓝牙信息传播原理
    UIAlertView 或 UIAlertController message 文字对齐设置
    iOS 跳转到系统设置的问题
    nordic 52832 DFU后出现无法重连的问题
    UIView类绘图出现错误提示
    nordic DFU固件升级
  • 原文地址:https://www.cnblogs.com/bluetree2/p/10792970.html
Copyright © 2011-2022 走看看