Java的成员变量和局部变量

Java的成员变量和局部变量

根据定义变量位置的不同,可以将变量分为成员变量和局部变量

成员变量是在类范围内定义的变量

局部变量是在一个方法内定义的变量

成员变量

类变量和实例变量的区别在于:类变量是所有对象共有,其中一个对象将它值改变,其他对象得到的就是改变后的结果;而实例变量则属对象私有,某一个对象将其值改变,不影响其他对象;

package com.cnblogs;
/*
 * 本类用于测试成员变量
 */
public class TestMemberVar {
	//成员变量:类中,方法外定义
	String name = "柒";//实例变量
	static int age = 21;//类变量
	
	public static void main(String[] args) {
//		System.out.println(name);//实例变量在静态方法中不可以直接调用
		System.out.println(age);//类变量可以在任何方法中直接调用   结果-->21
		
		//实例化一个a对象
		TestMemberVar a = new TestMemberVar();
		a.testVar();// 结果 -->柒 21
		a.age = 99;
		a.name = "张三";
		a.testVar();// 结果  -->张三  99
		//实例化一个b对象
		TestMemberVar b = new TestMemberVar();
		b.testVar();// 结果 -->柒(实例变量只改变对象自身的值,所以a对象的name改变,不影响对象b的name变量)  99(类变量是针对所有对象的,所以a改变age,b的age也改变)
	}
	
	public void testVar() {
		System.out.println(name);//实例变量在非静态方法中可以直接调用
		System.out.println(age);//类变量可以在任何方法中直接调用
	}
}

成员变量可以不自行初始化,系统会自动对其进行默认初始化,布尔值默认值为 false ,除了基本数据类型,其余的默认值都是null。

package com.cnblogs;
/*
 * 本类用于测试成员变量
 */
public class TestMemberVar {
	//成员变量:类中,方法外定义
	String name;//实例变量
	static int age;//类变量
	
	public static void main(String[] args) {
		
		System.out.println(age);//结果为 0
		TestMemberVar a = new TestMemberVar();
		a.test();//结果为null
	}	
	
	public void test() {
		System.out.println(name);
	}
}

局部变量

成员变量需要自行初始化值
作用域:在方法/局部代码块中,对应的代码执行完局部变量就被释放

package com.cnblogs;
/*
 * 本类用于测试局部变量
 */
public class TestPartVar {

	public static void main(String[] args) {
		//定义局部变量
//		int num;
//		System.out.println(num);//这里会提示错误The local variable num may not have been initialized(局部变量num可能尚未初始化)
		//所以局部变量必须自行初始化值
		int num1 = 0;
		System.out.println(num1);//结果为0
	}

}

java的局部变量和成员变量是可以重名的,局部变量会覆盖成员变量的值。

package com.cnblogs;
/*
 * 本类用于测试局部变量
 */
public class TestPartVar {
	//定义成员变量
	int num = 99;//实例变量
	static int num2 = 9;//类变量
	public static void main(String[] args) {
		//定义局部变量
		int num = 88;
		int num2 = 8;
		System.out.println(num);// 结果为88
		System.out.println(num2);// 结果为8
		TestPartVar a = new TestPartVar();
		a.test();// 结果为66	6
	}
	
	public void test() {
		//定义局部变量
		int num = 66;
		System.out.println(num);
		int num2 = 6;
		System.out.println(num2);
	}
}

posted @ 2021-07-03 11:57  贪玩的阿柒  阅读(631)  评论(0编辑  收藏  举报